1 | fixtureLoader = require '../src/fixtures-loader'
|
2 | sinon = require 'sinon'
|
3 | sinonChai = require 'sinon-chai'
|
4 | chai = require 'chai'
|
5 | expect = chai.expect
|
6 | chai.use(sinonChai)
|
7 |
|
8 | describe 'loopback-fixtures', ->
|
9 |
|
10 | sandbox = null
|
11 |
|
12 | beforeEach (done) ->
|
13 | sandbox = sinon.sandbox.create()
|
14 | done()
|
15 |
|
16 | afterEach (done) ->
|
17 | sandbox.restore()
|
18 | done()
|
19 |
|
20 | describe 'getRandomMatchingObject method', ->
|
21 | fixtureLoader.savedData =
|
22 | group_yellow: id: 1
|
23 | group_red: id: 2
|
24 | blue_team: id: 3
|
25 |
|
26 | it 'should give a random matching object (2 results wildcard)', (done) ->
|
27 | pattern = 'group_*'
|
28 | object = fixtureLoader.getRandomMatchingObject pattern
|
29 | expect(object).to.be.oneOf [fixtureLoader.savedData.group_yellow, fixtureLoader.savedData.group_red]
|
30 | done()
|
31 |
|
32 | it 'should give a random matching object (1 result with wildcard)', (done) ->
|
33 | pattern = 'blue_.*'
|
34 | object = fixtureLoader.getRandomMatchingObject pattern
|
35 | expect(object).to.eql fixtureLoader.savedData.blue_team
|
36 | done()
|
37 |
|
38 | it 'should give a random matching object (1 result with exact pattern)', (done) ->
|
39 | pattern = 'blue_team'
|
40 | object = fixtureLoader.getRandomMatchingObject pattern
|
41 | expect(object).to.eql fixtureLoader.savedData.blue_team
|
42 | done()
|
43 |
|
44 | it 'should give a random matching object (no result)', (done) ->
|
45 | pattern = 'no_result.*'
|
46 | object = fixtureLoader.getRandomMatchingObject pattern
|
47 | expect(object).to.be.undefined
|
48 | done()
|
49 |
|
50 |
|
51 | describe 'replaceReferenceInObjects method', ->
|
52 |
|
53 | describe 'should call replaceReferenceInObjects with the right parameters', ->
|
54 |
|
55 | beforeEach (done) ->
|
56 | fixtureLoader.savedData =
|
57 | group_yellow: id: 1
|
58 | group_red: id: 2
|
59 | user: groupId: '@group_yellow'
|
60 | done()
|
61 |
|
62 | beforeEach (done) ->
|
63 | sandbox.stub(
|
64 | fixtureLoader
|
65 | 'getRandomMatchingObject'
|
66 | (pattern) -> fixtureLoader.savedData.group_yellow
|
67 | )
|
68 | done()
|
69 |
|
70 | it 'with existing reference', (done) ->
|
71 | fixtureLoader.replaceReferenceInObjects fixtureLoader.savedData.user
|
72 | .then ->
|
73 | expect(fixtureLoader.getRandomMatchingObject).to.have.been.calledWith '^group_yellow$'
|
74 | done()
|
75 |
|
76 | it 'and remplace reference key', (done) ->
|
77 | fixtureLoader.replaceReferenceInObjects fixtureLoader.savedData.user
|
78 | .then ->
|
79 | expect(fixtureLoader.savedData.user.groupId).to.eql 1
|
80 | done()
|
81 |
|
82 | describe 'should call replaceReferenceInObjects with the right parameters', ->
|
83 | beforeEach (done) ->
|
84 | fixtureLoader.savedData =
|
85 | group_yellow: id: 1
|
86 | group_red: id: 2
|
87 | user: groupId: '@group_blue'
|
88 | done()
|
89 |
|
90 | beforeEach (done) ->
|
91 | sandbox.stub(
|
92 | fixtureLoader
|
93 | 'getRandomMatchingObject'
|
94 | (pattern) -> undefined
|
95 | )
|
96 | done()
|
97 |
|
98 | it 'and raised error', (done) ->
|
99 | fixtureLoader.replaceReferenceInObjects fixtureLoader.savedData.user
|
100 | .then ->
|
101 | done(new Error 'it should not be called')
|
102 | .catch ->
|
103 | done()
|