Telegram Web, preconfigured for usage in I2P. http://web.telegram.i2p/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

161 lines
4.5 KiB

'use strict'
/* global describe, it, inject, expect, beforeEach, jasmine */
describe('ImportContactModalController', function () {
beforeEach(module('myApp.controllers'))
beforeEach(function () {
this.modalInstance = {
close: jasmine.createSpy('close'),
dismiss: jasmine.createSpy('dismiss')
}
this.randomID = 123456852
function thenFinallyFactory (input) {
return {
then: function (callback) {
callback(input)
return {
finally: function (callback) {
callback()
}
}
}
}
}
this.AppUsersManager = {
thenValue: null,
importContact: function (phone, first, last) {
this.input = {
phone: phone,
first: first,
last: last
}
return thenFinallyFactory(this.thenValue)
}
}
this.ErrorService = {
show: jasmine.createSpy('show')
}
this.PhonebookContactsService = {
thenValue: false,
isAvailable: function () {
return false
},
openPhonebookImport: function () {
var then = thenFinallyFactory(this.thenValue)
return {
result: then
}
}
}
inject(function (_$controller_, _$rootScope_) {
this.$controller = _$controller_
this.$rootScope = _$rootScope_
this.$scope = _$rootScope_.$new()
this.createController = function () {
this.$controller('ImportContactModalController', {
$scope: this.$scope,
$modalInstance: this.modalInstance,
$rootScope: this.$rootScope,
AppUsersManager: this.AppUsersManager,
ErrorService: this.ErrorService,
PhonebookContactsService: this.PhonebookContactsService
})
}
})
})
it('can create a controller when no imported contacts are defined', function (done) {
this.createController()
expect(this.$scope.importContact).toEqual({})
done()
})
it('can create a controller when imported contacts are defined', function (done) {
this.$scope.importContact = { non_empty: true }
this.createController()
var expected = { non_empty: true }
expect(this.$scope.importContact).toEqual(expected)
done()
})
describe('(when the controller is created), ', function () {
beforeEach(function () {
this.createController()
})
it('does nothing when no phonenumber was entered', function (done) {
this.$scope.doImport()
expect(this.$scope.progress).not.toBeDefined()
this.$scope.importContact = {
first_name: 'bob'
}
expect(this.$scope.progress).not.toBeDefined()
done()
})
describe('when contact-information is added, it', function () {
beforeEach(function () {
this.$scope.importContact = {
phone: '+316132465798'
}
})
it('can handle phoneNumber that are not telegram users', function (done) {
this.$scope.doImport()
expect(this.ErrorService.show).toHaveBeenCalledWith({ error: {code: 404, type: 'USER_NOT_USING_TELEGRAM'} })
expect(this.modalInstance.close).toHaveBeenCalledWith(null)
expect(this.$scope.progress.enabled).not.toBeDefined()
done()
})
it('can import contacts that are telegram users', function (done) {
this.AppUsersManager.thenValue = this.randomID
this.$scope.doImport()
expect(this.ErrorService.show).not.toHaveBeenCalled()
expect(this.modalInstance.close).toHaveBeenCalledWith(this.randomID)
expect(this.$scope.progress.enabled).not.toBeDefined()
expect(this.AppUsersManager.input).toEqual({phone: '+316132465798', first: '', last: ''})
done()
})
it('can handle contacts with first and last name', function (done) {
this.$scope.importContact.first_name = 'jan'
this.$scope.importContact.last_name = 'wandelaar'
this.$scope.doImport()
expect(this.AppUsersManager.input).toEqual({phone: '+316132465798', first: 'jan', last: 'wandelaar'})
done()
})
})
it('can not import contacts from a phonebook if none were found', function (done) {
this.$scope.importPhonebook()
expect(this.modalInstance.dismiss).toHaveBeenCalled()
done()
})
it('can import contacts from a phonebook', function (done) {
this.PhonebookContactsService.thenValue = {0: 'dummy'}
this.$scope.importPhonebook()
expect(this.modalInstance.close).toHaveBeenCalledWith('dummy')
done()
})
})
})