-
-
Notifications
You must be signed in to change notification settings - Fork 213
/
Copy pathgeocoder.test.js
119 lines (95 loc) · 2.98 KB
/
geocoder.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
'use strict';
var chai = require('chai');
var should = chai.should();
var assert = chai.assert;
var sinon = require('sinon');
var Geocoder = require('../lib/geocoder.js');
const AbstractGeocoder = require('../lib/geocoder/abstractgeocoder.js');
var stupidGeocoder = {
geocode: function(data, cb) {
cb(null, []);
},
reverse: function(data, cb) {
cb(null, []);
},
batchGeocode: AbstractGeocoder.prototype.batchGeocode
};
var stupidBatchGeocoder = {
...stupidGeocoder,
_batchGeocode: function(data, cb) {
cb(null, data);
}
};
describe('Geocoder', () => {
beforeEach(() => {
sinon.spy(stupidGeocoder, 'geocode');
sinon.spy(stupidGeocoder, 'reverse');
sinon.spy(stupidBatchGeocoder, '_batchGeocode');
});
afterEach(() => {
stupidGeocoder.geocode.restore();
stupidGeocoder.reverse.restore();
stupidBatchGeocoder._batchGeocode.restore();
});
describe('#constructor' , () => {
test('Should set _geocoder', () => {
var geocoder = new Geocoder(stupidGeocoder);
geocoder._geocoder.should.be.equal(stupidGeocoder);
});
});
describe('#geocode' , () => {
test('Should call geocoder geocode method', () => {
var geocoder = new Geocoder(stupidGeocoder);
return geocoder.geocode('127.0.0.1')
.then(function() {
stupidGeocoder.geocode.calledOnce.should.be.true;
});
});
test('Should return a promise', () => {
var geocoder = new Geocoder(stupidGeocoder);
var promise = geocoder.geocode('127.0.0.1');
promise.then.should.be.a('function');
return promise;
});
});
describe('#batchGeocode' , () => {
test('Should call stupidGeocoder geocoder method x times', () => {
var geocoder = new Geocoder(stupidGeocoder);
return geocoder.batchGeocode([
'127.0.0.1',
'127.0.0.1'
]).then(function() {
assert.isTrue(stupidGeocoder.geocode.calledTwice);
});
});
test('Should return a promise', () => {
var geocoder = new Geocoder(stupidGeocoder);
var promise = geocoder.batchGeocode(['127.0.0.1']);
promise.then.should.be.a('function');
return promise;
});
test('Should call stupidBatchGeocoder.batchGeocoder method only once when implemented', () => {
var geocoder = new Geocoder(stupidBatchGeocoder);
return geocoder.batchGeocode([
'127.0.0.1',
'127.0.0.1'
]).then(function() {
assert.isTrue(stupidBatchGeocoder._batchGeocode.calledOnce);
});
});
});
describe('#reverse' , () => {
test('Should call stupidGeocoder reverse method', () => {
var geocoder = new Geocoder(stupidGeocoder);
return geocoder.reverse(1, 2)
.then(function() {
stupidGeocoder.reverse.calledOnce.should.be.true;
});
});
test('Should return a promise', () => {
var geocoder = new Geocoder(stupidGeocoder);
var promise = geocoder.reverse('127.0.0.1');
promise.then.should.be.a('function');
});
});
});