1 | var Finder = require('../lib/finder');
|
2 |
|
3 | describe('Finder', function () {
|
4 | var dbModel;
|
5 | var finder;
|
6 | var expectedCode;
|
7 | var testNumber = '83912332211';
|
8 | beforeEach(function () {
|
9 | function generateRandomCode() {
|
10 | var min = 24;
|
11 | var max = 95;
|
12 | return Math.round(Math.random() * (max - min) + min);
|
13 | }
|
14 |
|
15 | expectedCode = generateRandomCode();
|
16 | });
|
17 | it('return code if there is appropriate document in db', function (done) {
|
18 | var expectedQuery = {
|
19 | code: '391',
|
20 | begin: {
|
21 | $lte: '2332211'
|
22 | },
|
23 | end: {
|
24 | $gte: '2332211'
|
25 | }
|
26 | };
|
27 | dbModel = {
|
28 | findOne: function (query, callback) {
|
29 | expect(query).toEqual(expectedQuery);
|
30 | callback(null, {
|
31 | region: {
|
32 | code: expectedCode
|
33 | }
|
34 | });
|
35 | }
|
36 | };
|
37 | finder = new Finder(dbModel);
|
38 | var resultPromise = finder.findCodeForNumber(testNumber);
|
39 | resultPromise.then(function (code) {
|
40 | expect(code).toBe(expectedCode);
|
41 | done();
|
42 | });
|
43 | });
|
44 | it('return "NULL" if there is no appropriate document in db', function (done) {
|
45 | dbModel = {
|
46 | findOne: function (query, callback) {
|
47 | callback(null, null);
|
48 | }
|
49 | };
|
50 | finder = new Finder(dbModel);
|
51 | var resultPromise = finder.findCodeForNumber(testNumber);
|
52 | resultPromise.then(function (code) {
|
53 | expect(code).toBe('NULL');
|
54 | done();
|
55 | });
|
56 | });
|
57 | it('promise call reject if findOne return error', function (done) {
|
58 | var expectedErrorMessage = 'test error';
|
59 | dbModel = {
|
60 | findOne: function (query, callback) {
|
61 | callback(new Error(expectedErrorMessage));
|
62 | }
|
63 | };
|
64 | finder = new Finder(dbModel);
|
65 | var resultPromise = finder.findCodeForNumber(testNumber);
|
66 | resultPromise.fail(function (err) {
|
67 | expect(err.message).toBe(expectedErrorMessage);
|
68 | done();
|
69 | });
|
70 | });
|
71 | });
|