Commit 51adda62a01568ee3fd7854d3ba56a12013f7524

Authored by Daniel
1 parent 76666012

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 3 #= require repository/branch
4 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 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 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))
... ...