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.
181 lines
6.1 KiB
181 lines
6.1 KiB
'use strict' |
|
/* global describe, it, inject, expect, beforeEach, afterEach, spyOn, jasmine, Config, SearchIndexManager */ |
|
|
|
describe('CountrySelectModalController', function () { |
|
beforeEach(module('myApp.controllers')) |
|
|
|
beforeEach(inject(function (_$controller_, _$rootScope_, ___) { |
|
this.$controller = _$controller_ |
|
this.$rootScope = _$rootScope_ |
|
this._ = ___ |
|
|
|
this.$scope = _$rootScope_.$new() |
|
this.createController = function () { |
|
this.$controller('CountrySelectModalController', { |
|
$scope: this.$scope, |
|
$modalInstance: {}, |
|
$rootScope: this.$rootScope, |
|
_: this._ |
|
}) |
|
} |
|
|
|
spyOn(SearchIndexManager, 'indexObject').and.callThrough() |
|
})) |
|
|
|
beforeEach(function () { |
|
this.ConfigCountryCodes = Config.CountryCodes |
|
this.testData = { |
|
singleCode: { |
|
countryCode: ['NL', 'country_select_modal_country_nl', '+31'], |
|
countryCode_full: 'NL Netherlands +31', |
|
countryPhoneSets: [{ name: 'Netherlands', code: '+31' }] |
|
}, |
|
multipleCode: { |
|
countryCode: ['VA', 'country_select_modal_country_va', '+39 06 698', '+379'], |
|
countryCode_full: 'VA Vatican City +39 06 698 +379', |
|
countryPhoneSets: [{ name: 'Vatican City', code: '+39 06 698' }, { name: 'Vatican City', code: '+379' }] |
|
}, |
|
multipleCode2: { |
|
countryCode: ['AB', 'country_select_modal_country_ab', '+7 840', '+7 940', '+995 44'], |
|
countryCode_full: 'AB Abkhazia +7 840 +7 940 +995 44', |
|
countryPhoneSets: [{ name: 'Abkhazia', code: '+7 840' }, { name: 'Abkhazia', code: '+7 940' }, { name: 'Abkhazia', code: '+995 44' }] |
|
}, |
|
allSetsSorted: function () { |
|
return [].concat(this.multipleCode2.countryPhoneSets, this.singleCode.countryPhoneSets, this.multipleCode.countryPhoneSets) |
|
}, |
|
allSetsUnsorted: function () { |
|
return [].concat(this.singleCode.countryPhoneSets, this.multipleCode2.countryPhoneSets, this.multipleCode.countryPhoneSets) |
|
} |
|
} |
|
}) |
|
|
|
afterEach(function () { |
|
Config.CountryCodes = this.ConfigCountryCodes |
|
}) |
|
|
|
// The tests before controller initiation. |
|
// In order to mock Config data |
|
|
|
it('initiates Country to select', function (done) { |
|
Config.CountryCodes = [this.testData.singleCode.countryCode] |
|
var expected = this.testData.singleCode.countryCode_full |
|
|
|
this.createController() |
|
|
|
expect(SearchIndexManager.indexObject).toHaveBeenCalledWith(0, expected, jasmine.any(Object)) |
|
done() |
|
}) |
|
|
|
it('initiates Countriy to select with 2 (or more) country codes', function (done) { |
|
Config.CountryCodes = [this.testData.multipleCode.countryCode] |
|
var expected = this.testData.multipleCode.countryCode_full |
|
|
|
this.createController() |
|
|
|
expect(SearchIndexManager.indexObject).toHaveBeenCalledWith(0, expected, jasmine.any(Object)) |
|
done() |
|
}) |
|
|
|
it('initiates Countries to select', function (done) { |
|
Config.CountryCodes = [this.testData.singleCode.countryCode, this.testData.multipleCode.countryCode] |
|
var expected1 = this.testData.singleCode.countryCode_full |
|
var expected2 = this.testData.multipleCode.countryCode_full |
|
|
|
this.createController() |
|
|
|
expect(SearchIndexManager.indexObject).toHaveBeenCalledWith(0, expected1, jasmine.any(Object)) |
|
expect(SearchIndexManager.indexObject).toHaveBeenCalledWith(1, expected2, jasmine.any(Object)) |
|
done() |
|
}) |
|
|
|
describe('(after initiation)', function () { |
|
beforeEach(function () { |
|
Config.CountryCodes = [this.testData.singleCode.countryCode, this.testData.multipleCode2.countryCode, this.testData.multipleCode.countryCode] |
|
this.createController() |
|
}) |
|
|
|
it('initiates the right values', function (done) { |
|
expect(this.$scope.search).toEqual({}) |
|
expect(this.$scope.slice).toEqual({limit: 20, limitDelta: 20}) |
|
done() |
|
}) |
|
|
|
it('creates a sorted list of all selectable countries', function (done) { |
|
this.$rootScope.$digest() |
|
var expected = this.testData.allSetsSorted() |
|
|
|
expect(this.$scope.countries).toEqual(expected) |
|
done() |
|
}) |
|
|
|
it('creates a sorted list of all selectable countries for an empty string-input', function (done) { |
|
this.$rootScope.$digest() |
|
this.$scope.search.query = '' |
|
this.$rootScope.$digest() |
|
var expected = this.testData.allSetsSorted() |
|
|
|
expect(this.$scope.countries).toEqual(expected) |
|
done() |
|
}) |
|
|
|
describe(', when an input is given,', function () { |
|
beforeEach(function () { |
|
this.$rootScope.$digest() |
|
this.$scope.search.query = 'A' |
|
}) |
|
|
|
it('creates a sorted list of all countries containing the input', function (done) { |
|
var expected = this.testData.allSetsSorted() |
|
|
|
expect(this.$scope.countries).toEqual(expected) |
|
|
|
this.$rootScope.$digest() |
|
expected = this.testData.multipleCode2.countryPhoneSets |
|
|
|
expect(this.$scope.countries).toEqual(expected) |
|
done() |
|
}) |
|
|
|
it('restore the original list when the input is deleted', function (done) { |
|
this.$rootScope.$digest() |
|
this.$scope.search.query = '' |
|
this.$rootScope.$digest() |
|
|
|
var expected = this.testData.allSetsSorted() |
|
|
|
expect(this.$scope.countries).toEqual(expected) |
|
done() |
|
}) |
|
|
|
it('restore the original list when the input is changed', function (done) { |
|
this.$rootScope.$digest() |
|
this.$scope.search.query = 'Ne' |
|
this.$rootScope.$digest() |
|
|
|
var expected = this.testData.singleCode.countryPhoneSets |
|
|
|
expect(this.$scope.countries).toEqual(expected) |
|
done() |
|
}) |
|
}) |
|
|
|
describe(', when no sorting is available,', function () { |
|
beforeEach(function () { |
|
this.StringCompare = String.prototype.localeCompare |
|
String.prototype.localeCompare = null |
|
}) |
|
|
|
afterEach(function () { |
|
String.prototype.localeCompare = this.StringCompare |
|
}) |
|
|
|
it('creates a list of all selectable countries', function (done) { |
|
this.$rootScope.$digest() |
|
var expected = this.testData.allSetsUnsorted() |
|
|
|
expect(this.$scope.countries).toEqual(expected) |
|
done() |
|
}) |
|
}) |
|
}) |
|
})
|
|
|