Commit 51adda62a01568ee3fd7854d3ba56a12013f7524
1 parent
76666012
Exists in
colab
and in
4 other branches
Implement more Javascript tests for branch selection
Signed-off-by: Pedro Scocco <pedroscocco@gmail.com>
Showing
1 changed file
with
109 additions
and
27 deletions
Show diff stats
spec/javascripts/repository/branch_spec.js.coffee
@@ -3,36 +3,118 @@ | @@ -3,36 +3,118 @@ | ||
3 | #= require repository/branch | 3 | #= require repository/branch |
4 | #= require sinon | 4 | #= require sinon |
5 | 5 | ||
6 | -describe "Branch#constructor", -> | ||
7 | - it "should construct a branch", -> | ||
8 | - subject = new Repository.Branch() | ||
9 | - subject.names.should.deep.equal({}) | ||
10 | - assert.isNull(subject.request) | ||
11 | - | ||
12 | -describe "toggle", -> | ||
13 | - before -> | 6 | +describe "Repository.Branch", -> |
7 | + beforeEach -> | ||
14 | @subject = new Repository.Branch() | 8 | @subject = new Repository.Branch() |
15 | 9 | ||
16 | - @combo_box = sinon.stub() | ||
17 | - $ = sinon.stub(window, "$") | ||
18 | - $.withArgs("#branches").returns(@combo_box) | 10 | + describe "constructor", -> |
11 | + it "should construct a branch", -> | ||
12 | + @subject.names.should.deep.equal({}) | ||
13 | + assert.isNull(@subject.request) | ||
19 | 14 | ||
20 | - context "scm_type = SVN", -> | 15 | + describe "#toggle", -> |
21 | before -> | 16 | before -> |
22 | - @combo_box.hide = sinon.spy() | ||
23 | - $.withArgs("#repository_scm_type").returns({val: -> "SVN"}) | 17 | + @combo_box = sinon.stub() |
18 | + sinon.stub(window, "$") | ||
19 | + $.withArgs("#branches").returns(@combo_box) | ||
24 | 20 | ||
25 | - it "should hide the branches combo box", -> | ||
26 | - @subject.toggle() | ||
27 | - assert.isTrue(@combo_box.hide.calledOnce) | 21 | + after -> |
22 | + window.$.restore() | ||
28 | 23 | ||
29 | - context "scm_type != SVN", -> | ||
30 | - before -> | ||
31 | - @combo_box.show = sinon.spy() | ||
32 | - $.withArgs("#repository_address").returns({val: -> "https://github.com/mezuro/prezento.git"}) | ||
33 | - $.withArgs("#repository_scm_type").returns({val: -> "GIT"}) | ||
34 | - sinon.stub(@subject, "fetch").withArgs("https://github.com/mezuro/prezento.git") | ||
35 | - | ||
36 | - it "should show the branches combo box", -> | ||
37 | - @subject.toggle() | ||
38 | - assert.isTrue(@combo_box.show.calledOnce) | 24 | + context "scm_type = SVN", -> |
25 | + beforeEach -> | ||
26 | + @combo_box.hide = sinon.spy() | ||
27 | + $.withArgs("#repository_scm_type").returns({val: -> "SVN"}) | ||
28 | + | ||
29 | + it "should hide the branches combo box", -> | ||
30 | + @subject.toggle() | ||
31 | + assert.isTrue(@combo_box.hide.calledOnce) | ||
32 | + | ||
33 | + context "scm_type != SVN", -> | ||
34 | + beforeEach -> | ||
35 | + @combo_box.show = sinon.spy() | ||
36 | + $.withArgs("#repository_address").returns({val: -> "https://github.com/mezuro/prezento.git"}) | ||
37 | + $.withArgs("#repository_scm_type").returns({val: -> "GIT"}) | ||
38 | + sinon.stub(@subject, "fetch").withArgs("https://github.com/mezuro/prezento.git") | ||
39 | + | ||
40 | + it "should show the branches combo box", -> | ||
41 | + @subject.toggle() | ||
42 | + assert.isTrue(@combo_box.show.calledOnce) | ||
43 | + | ||
44 | + describe "#cancel_request", -> | ||
45 | + context 'request is not null', -> | ||
46 | + beforeEach -> | ||
47 | + @request = sinon.stub() | ||
48 | + @request.abort = sinon.spy() | ||
49 | + @subject.request = @request | ||
50 | + | ||
51 | + it 'should abort the request', -> | ||
52 | + @subject.cancel_request() | ||
53 | + assert.isTrue(@request.abort.calledOnce) | ||
54 | + assert.isNull(@subject.request) | ||
55 | + | ||
56 | + describe "#fill_options", -> | ||
57 | + beforeEach -> | ||
58 | + @el = jQuery("<select></select>") | ||
59 | + | ||
60 | + context 'with branches that contain master', -> | ||
61 | + it 'should place master first', -> | ||
62 | + @subject.fill_options(['dev', 'stable', 'master'], @el) | ||
63 | + | ||
64 | + option_values = [] | ||
65 | + for option in @el.get(0).options | ||
66 | + option_values.push(option.value) | ||
67 | + | ||
68 | + assert.deepEqual(option_values, ['master', 'dev', 'stable']) | ||
69 | + | ||
70 | + context "with branches that don't contain master", -> | ||
71 | + it "shouldn't change anything", -> | ||
72 | + @subject.fill_options(['dev', 'stable', 'branch_do_daniel'], @el) | ||
73 | + | ||
74 | + option_values = [] | ||
75 | + for option in @el.get(0).options | ||
76 | + option_values.push(option.value) | ||
77 | + | ||
78 | + assert.deepEqual(option_values, ['dev', 'stable', 'branch_do_daniel']) | ||
79 | + | ||
80 | + describe '#fetch', -> | ||
81 | + beforeEach -> | ||
82 | + @subject.cancel_request = sinon.spy() | ||
83 | + | ||
84 | + context 'with valid address', -> | ||
85 | + beforeEach -> | ||
86 | + @subject.fill_options = sinon.spy() | ||
87 | +# @subject.names = {'https://github.com/mezuro/prezento.git': ['master', 'dev']} | ||
88 | + | ||
89 | + context 'with new address', -> | ||
90 | + beforeEach -> | ||
91 | + @subject.names = {} | ||
92 | + | ||
93 | + @address = 'https://github.com/mezuro/kalibro_processor.git' | ||
94 | + | ||
95 | + @select = sinon.stub() | ||
96 | + # Stub just the selector and not the whole jQuery object | ||
97 | + find_stub = sinon.stub($, "find") | ||
98 | + find_stub.withArgs("#repository_branch").returns(@select) | ||
99 | + find_stub.withArgs("#repository_scm_type").returns({val: -> "SVN"}) | ||
100 | + | ||
101 | + @server = sinon.fakeServer.create() | ||
102 | + @server.respondImmediately = true | ||
103 | + | ||
104 | + address_url_encoded = encodeURI(@address) | ||
105 | + @server.respondWith('GET', '/repository_branches&url=' + address_url_encoded + '&scm_type=' + 'GIT', | ||
106 | + [200, { "Content-Type": "application/json" }, JSON.stringify({ | ||
107 | + "branches": ["stable", "dev", "master"] | ||
108 | + })] | ||
109 | + ) | ||
110 | + | ||
111 | + afterEach -> | ||
112 | + @server.restore() | ||
113 | + $.find.restore() | ||
114 | + | ||
115 | + it 'should fetch the branches and fill the options', -> | ||
116 | + @subject.fetch(@address) | ||
117 | + @server.respond() | ||
118 | + console.log(@server.requests[0]) | ||
119 | + debugger | ||
120 | + assert.isTrue(@subject.fill_options.calledWith(['stable', 'dev', 'master'], @select)) |