"use strict";
describe("geoIpLookup:", function() {
var country = "gb",
resolved = false;
beforeEach(function() {
intlSetup();
// must be in DOM for geoIpLookup callback to work - it looks for $(".intl-tel-input input")
input = $("").appendTo("body");
});
afterEach(function() {
intlTeardown();
resolved = false;
});
describe("init vanilla plugin", function() {
beforeEach(function(done) {
iti = window.intlTelInput(input[0]);
iti.promise.then(function() {
resolved = true;
});
setTimeout(done);
});
it("does not resolve straight away", function() {
expect(resolved).toEqual(true);
});
});
describe("init plugin with geoIpLookup", function() {
beforeEach(function() {
iti = window.intlTelInput(input[0], {
initialCountry: "auto",
geoIpLookup: function(callback) {
callback(country);
},
});
iti.promise.then(function() {
resolved = true;
});
});
it("does not resolve straight away", function() {
expect(resolved).toEqual(false);
});
});
describe('init plugin with geoIpLookup, and wait for it to finish', function() {
beforeEach(function(done) {
iti = window.intlTelInput(input[0], {
initialCountry: "auto",
geoIpLookup: function(callback) {
callback(country);
},
});
iti.promise.then(function() {
resolved = true;
done();
});
});
it("does resolve", function() {
expect(resolved).toEqual(true);
});
describe('init a second instance with geoIpLookup', function() {
var input2,
iti2,
resolved2 = false;
beforeEach(function(done) {
input2 = $("").appendTo("body");
iti2 = window.intlTelInput(input2[0], {
initialCountry: "auto",
geoIpLookup: function(callback) {
callback(country);
},
});
iti2.promise.then(function() {
resolved2 = true;
});
setTimeout(done);
});
afterEach(function() {
iti2.destroy();
input2.remove();
input2 = iti2 = null;
resolved2 = false
});
it("does resolve straight away", function() {
expect(window.intlTelInputGlobals.autoCountry).toEqual(country);
expect(resolved2).toEqual(true);
});
});
});
});