From 70dfa3a721700cf0151a7d097933d75684e69fc9 Mon Sep 17 00:00:00 2001 From: Jacob Schatz Date: Mon, 21 Dec 2015 13:06:09 -0500 Subject: open and close issue via ajax request. With tests --- spec/javascripts/issue_spec.js.coffee | 36 +++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'spec/javascripts/issue_spec.js.coffee') diff --git a/spec/javascripts/issue_spec.js.coffee b/spec/javascripts/issue_spec.js.coffee index 268e4c68c31..60df3a8878b 100644 --- a/spec/javascripts/issue_spec.js.coffee +++ b/spec/javascripts/issue_spec.js.coffee @@ -20,3 +20,39 @@ describe 'Issue', -> expect(req.data.issue.description).not.toBe(null) $('.js-task-list-field').trigger('tasklist:changed') +describe 'reopen/close issue', -> + fixture.preload('issues_show.html') + beforeEach -> + fixture.load('issues_show.html') + @issue = new Issue() + it 'closes an issue', -> + $.ajax = (obj) -> + expect(obj.type).toBe('PUT') + expect(obj.url).toBe('http://gitlab/issues/6/close') + obj.success saved: true + $btnClose = $('a.btn-close') + $btnReopen = $('a.btn-reopen') + expect($btnReopen.hasClass('hidden')).toBe(true) + expect($btnClose.text()).toBe('Close') + expect(typeof $btnClose.prop('disabled')).toBe('undefined') + $btnClose.trigger('click') + expect($btnClose.hasClass('hidden')).toBe(true) + expect($btnReopen.hasClass('hidden')).toBe(false) + expect($btnClose.prop('disabled')).toBe(false) + expect($('div.issue-box-open').hasClass('hidden')).toBe(true) + expect($('div.issue-box-closed').hasClass('hidden')).toBe(false) + it 'reopens an issue', -> + $.ajax = (obj) -> + expect(obj.type).toBe('PUT') + expect(obj.url).toBe('http://gitlab/issues/6/reopen') + obj.success saved: true + $btnClose = $('a.btn-close') + $btnReopen = $('a.btn-reopen') + expect(typeof $btnReopen.prop('disabled')).toBe('undefined') + expect($btnReopen.text()).toBe('Reopen') + $btnReopen.trigger('click') + expect($btnReopen.hasClass('hidden')).toBe(true) + expect($btnClose.hasClass('hidden')).toBe(false) + expect($btnReopen.prop('disabled')).toBe(false) + expect($('div.issue-box-open').hasClass('hidden')).toBe(false) + expect($('div.issue-box-closed').hasClass('hidden')).toBe(true) \ No newline at end of file -- cgit v1.2.1 From fec7c99e2f2221f22680c140b7d9b1d959d8aeb0 Mon Sep 17 00:00:00 2001 From: Jacob Schatz Date: Mon, 21 Dec 2015 16:27:52 -0500 Subject: updates tests style for four-phase-testing as per: https://robots.thoughtbot.com/four-phase-test --- spec/javascripts/issue_spec.js.coffee | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'spec/javascripts/issue_spec.js.coffee') diff --git a/spec/javascripts/issue_spec.js.coffee b/spec/javascripts/issue_spec.js.coffee index 60df3a8878b..f8e60565b9a 100644 --- a/spec/javascripts/issue_spec.js.coffee +++ b/spec/javascripts/issue_spec.js.coffee @@ -30,29 +30,45 @@ describe 'reopen/close issue', -> expect(obj.type).toBe('PUT') expect(obj.url).toBe('http://gitlab/issues/6/close') obj.success saved: true + + # setup $btnClose = $('a.btn-close') $btnReopen = $('a.btn-reopen') expect($btnReopen.hasClass('hidden')).toBe(true) expect($btnClose.text()).toBe('Close') expect(typeof $btnClose.prop('disabled')).toBe('undefined') + + # excerize $btnClose.trigger('click') + + # verify expect($btnClose.hasClass('hidden')).toBe(true) expect($btnReopen.hasClass('hidden')).toBe(false) expect($btnClose.prop('disabled')).toBe(false) expect($('div.issue-box-open').hasClass('hidden')).toBe(true) expect($('div.issue-box-closed').hasClass('hidden')).toBe(false) + + # teardown it 'reopens an issue', -> $.ajax = (obj) -> expect(obj.type).toBe('PUT') expect(obj.url).toBe('http://gitlab/issues/6/reopen') obj.success saved: true + + # setup $btnClose = $('a.btn-close') $btnReopen = $('a.btn-reopen') expect(typeof $btnReopen.prop('disabled')).toBe('undefined') expect($btnReopen.text()).toBe('Reopen') + + # excerize $btnReopen.trigger('click') + + # verify expect($btnReopen.hasClass('hidden')).toBe(true) expect($btnClose.hasClass('hidden')).toBe(false) expect($btnReopen.prop('disabled')).toBe(false) expect($('div.issue-box-open').hasClass('hidden')).toBe(false) - expect($('div.issue-box-closed').hasClass('hidden')).toBe(true) \ No newline at end of file + expect($('div.issue-box-closed').hasClass('hidden')).toBe(true) + + # teardown \ No newline at end of file -- cgit v1.2.1 From 3e7e7ae0aceaa8a805093841b07b9b5d9f911cb1 Mon Sep 17 00:00:00 2001 From: Jacob Schatz Date: Mon, 21 Dec 2015 16:35:03 -0500 Subject: clarifies tests with methods like `toBeVisible()` etc. --- spec/javascripts/issue_spec.js.coffee | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) (limited to 'spec/javascripts/issue_spec.js.coffee') diff --git a/spec/javascripts/issue_spec.js.coffee b/spec/javascripts/issue_spec.js.coffee index f8e60565b9a..f50640d1821 100644 --- a/spec/javascripts/issue_spec.js.coffee +++ b/spec/javascripts/issue_spec.js.coffee @@ -34,7 +34,7 @@ describe 'reopen/close issue', -> # setup $btnClose = $('a.btn-close') $btnReopen = $('a.btn-reopen') - expect($btnReopen.hasClass('hidden')).toBe(true) + expect($btnReopen.toBeHidden()) expect($btnClose.text()).toBe('Close') expect(typeof $btnClose.prop('disabled')).toBe('undefined') @@ -42,11 +42,10 @@ describe 'reopen/close issue', -> $btnClose.trigger('click') # verify - expect($btnClose.hasClass('hidden')).toBe(true) - expect($btnReopen.hasClass('hidden')).toBe(false) - expect($btnClose.prop('disabled')).toBe(false) - expect($('div.issue-box-open').hasClass('hidden')).toBe(true) - expect($('div.issue-box-closed').hasClass('hidden')).toBe(false) + expect($btnClose.toBeHidden()) + expect($btnReopen.toBeVisible()) + expect($('div.issue-box-open').toBeVisible()) + expect($('div.issue-box-closed').toBeHidden()) # teardown it 'reopens an issue', -> @@ -58,17 +57,15 @@ describe 'reopen/close issue', -> # setup $btnClose = $('a.btn-close') $btnReopen = $('a.btn-reopen') - expect(typeof $btnReopen.prop('disabled')).toBe('undefined') expect($btnReopen.text()).toBe('Reopen') # excerize $btnReopen.trigger('click') # verify - expect($btnReopen.hasClass('hidden')).toBe(true) - expect($btnClose.hasClass('hidden')).toBe(false) - expect($btnReopen.prop('disabled')).toBe(false) - expect($('div.issue-box-open').hasClass('hidden')).toBe(false) - expect($('div.issue-box-closed').hasClass('hidden')).toBe(true) + expect($btnReopen.toBeHidden()) + expect($btnClose.toBeVisible()) + expect($('div.issue-box-open').toBeVisible()) + expect($('div.issue-box-closed').toBeHidden()) # teardown \ No newline at end of file -- cgit v1.2.1 From 453479143dd4784d7284b2e6f98694ff8fc18ce8 Mon Sep 17 00:00:00 2001 From: Jacob Schatz Date: Mon, 21 Dec 2015 17:03:28 -0500 Subject: adds alerts for when http request errors out in some way. --- spec/javascripts/issue_spec.js.coffee | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) (limited to 'spec/javascripts/issue_spec.js.coffee') diff --git a/spec/javascripts/issue_spec.js.coffee b/spec/javascripts/issue_spec.js.coffee index f50640d1821..ef78cfbc653 100644 --- a/spec/javascripts/issue_spec.js.coffee +++ b/spec/javascripts/issue_spec.js.coffee @@ -31,41 +31,32 @@ describe 'reopen/close issue', -> expect(obj.url).toBe('http://gitlab/issues/6/close') obj.success saved: true - # setup $btnClose = $('a.btn-close') $btnReopen = $('a.btn-reopen') expect($btnReopen.toBeHidden()) expect($btnClose.text()).toBe('Close') expect(typeof $btnClose.prop('disabled')).toBe('undefined') - # excerize $btnClose.trigger('click') - # verify expect($btnClose.toBeHidden()) expect($btnReopen.toBeVisible()) expect($('div.issue-box-open').toBeVisible()) expect($('div.issue-box-closed').toBeHidden()) - # teardown it 'reopens an issue', -> $.ajax = (obj) -> expect(obj.type).toBe('PUT') expect(obj.url).toBe('http://gitlab/issues/6/reopen') obj.success saved: true - # setup $btnClose = $('a.btn-close') $btnReopen = $('a.btn-reopen') expect($btnReopen.text()).toBe('Reopen') - # excerize $btnReopen.trigger('click') - # verify expect($btnReopen.toBeHidden()) expect($btnClose.toBeVisible()) expect($('div.issue-box-open').toBeVisible()) - expect($('div.issue-box-closed').toBeHidden()) - - # teardown \ No newline at end of file + expect($('div.issue-box-closed').toBeHidden()) \ No newline at end of file -- cgit v1.2.1 From 7e43fa67096f60856d1cf862f245367bc710a44f Mon Sep 17 00:00:00 2001 From: Jacob Schatz Date: Wed, 23 Dec 2015 16:56:36 -0500 Subject: fixes tests to work with jasmine/jquery --- spec/javascripts/issue_spec.js.coffee | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'spec/javascripts/issue_spec.js.coffee') diff --git a/spec/javascripts/issue_spec.js.coffee b/spec/javascripts/issue_spec.js.coffee index ef78cfbc653..142eb05cc67 100644 --- a/spec/javascripts/issue_spec.js.coffee +++ b/spec/javascripts/issue_spec.js.coffee @@ -33,16 +33,16 @@ describe 'reopen/close issue', -> $btnClose = $('a.btn-close') $btnReopen = $('a.btn-reopen') - expect($btnReopen.toBeHidden()) + expect($btnReopen).toBeHidden() expect($btnClose.text()).toBe('Close') expect(typeof $btnClose.prop('disabled')).toBe('undefined') $btnClose.trigger('click') - expect($btnClose.toBeHidden()) - expect($btnReopen.toBeVisible()) - expect($('div.issue-box-open').toBeVisible()) - expect($('div.issue-box-closed').toBeHidden()) + expect($btnReopen).toBeVisible() + expect($btnClose).toBeHidden() + expect($('div.status-box-closed')).toBeVisible() + expect($('div.status-box-open')).toBeHidden() it 'reopens an issue', -> $.ajax = (obj) -> @@ -56,7 +56,7 @@ describe 'reopen/close issue', -> $btnReopen.trigger('click') - expect($btnReopen.toBeHidden()) - expect($btnClose.toBeVisible()) - expect($('div.issue-box-open').toBeVisible()) - expect($('div.issue-box-closed').toBeHidden()) \ No newline at end of file + expect($btnReopen).toBeHidden() + expect($btnClose).toBeVisible() + expect($('div.status-box-open')).toBeVisible() + expect($('div.status-box-closed')).toBeHidden() \ No newline at end of file -- cgit v1.2.1 From e11ee5ff01bf031cd4fda377a7444f2ba4d50f40 Mon Sep 17 00:00:00 2001 From: Jacob Schatz Date: Wed, 23 Dec 2015 17:41:05 -0500 Subject: adds test for issue close/reopen failure --- spec/javascripts/issue_spec.js.coffee | 51 +++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) (limited to 'spec/javascripts/issue_spec.js.coffee') diff --git a/spec/javascripts/issue_spec.js.coffee b/spec/javascripts/issue_spec.js.coffee index 142eb05cc67..f0a57d99c56 100644 --- a/spec/javascripts/issue_spec.js.coffee +++ b/spec/javascripts/issue_spec.js.coffee @@ -1,3 +1,4 @@ +#= require flash #= require issue describe 'Issue', -> @@ -28,7 +29,7 @@ describe 'reopen/close issue', -> it 'closes an issue', -> $.ajax = (obj) -> expect(obj.type).toBe('PUT') - expect(obj.url).toBe('http://gitlab/issues/6/close') + expect(obj.url).toBe('http://gitlab.com/issues/6/close') obj.success saved: true $btnClose = $('a.btn-close') @@ -44,10 +45,56 @@ describe 'reopen/close issue', -> expect($('div.status-box-closed')).toBeVisible() expect($('div.status-box-open')).toBeHidden() + it 'fails to closes an issue with success:false', -> + + $.ajax = (obj) -> + expect(obj.type).toBe('PUT') + expect(obj.url).toBe('http://goesnowhere.nothing/whereami') + obj.success saved: false + + $btnClose = $('a.btn-close') + $btnReopen = $('a.btn-reopen') + $btnClose.attr('href','http://goesnowhere.nothing/whereami') + expect($btnReopen).toBeHidden() + expect($btnClose.text()).toBe('Close') + expect(typeof $btnClose.prop('disabled')).toBe('undefined') + + $btnClose.trigger('click') + + expect($btnReopen).toBeHidden() + expect($btnClose).toBeVisible() + expect($('div.status-box-closed')).toBeHidden() + expect($('div.status-box-open')).toBeVisible() + expect($('div.flash-alert')).toBeVisible() + expect($('div.flash-alert').text()).toBe('Unable to update this issue at this time.') + + it 'fails to closes an issue with HTTP error', -> + + $.ajax = (obj) -> + expect(obj.type).toBe('PUT') + expect(obj.url).toBe('http://goesnowhere.nothing/whereami') + obj.error() + + $btnClose = $('a.btn-close') + $btnReopen = $('a.btn-reopen') + $btnClose.attr('href','http://goesnowhere.nothing/whereami') + expect($btnReopen).toBeHidden() + expect($btnClose.text()).toBe('Close') + expect(typeof $btnClose.prop('disabled')).toBe('undefined') + + $btnClose.trigger('click') + + expect($btnReopen).toBeHidden() + expect($btnClose).toBeVisible() + expect($('div.status-box-closed')).toBeHidden() + expect($('div.status-box-open')).toBeVisible() + expect($('div.flash-alert')).toBeVisible() + expect($('div.flash-alert').text()).toBe('Unable to update this issue at this time.') + it 'reopens an issue', -> $.ajax = (obj) -> expect(obj.type).toBe('PUT') - expect(obj.url).toBe('http://gitlab/issues/6/reopen') + expect(obj.url).toBe('http://gitlab.com/issues/6/reopen') obj.success saved: true $btnClose = $('a.btn-close') -- cgit v1.2.1 From 00e967a07f476f7df7aaddc652258668af392f5d Mon Sep 17 00:00:00 2001 From: Jacob Schatz Date: Wed, 23 Dec 2015 20:57:16 -0500 Subject: removes unused `alert` from issue spec. Requires flash in the *implementation* instead of the spec. --- spec/javascripts/issue_spec.js.coffee | 1 - 1 file changed, 1 deletion(-) (limited to 'spec/javascripts/issue_spec.js.coffee') diff --git a/spec/javascripts/issue_spec.js.coffee b/spec/javascripts/issue_spec.js.coffee index f0a57d99c56..7e67c778861 100644 --- a/spec/javascripts/issue_spec.js.coffee +++ b/spec/javascripts/issue_spec.js.coffee @@ -1,4 +1,3 @@ -#= require flash #= require issue describe 'Issue', -> -- cgit v1.2.1