BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
8afc2873
Commit
8afc2873
authored
Aug 27, 2016
by
winniehell
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Clean up issue_spec.js
parent
4370d68f
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
102 additions
and
59 deletions
+102
-59
issue_spec.js
spec/javascripts/issue_spec.js
+102
-59
No files found.
spec/javascripts/issue_spec.js
View file @
8afc2873
...
...
@@ -4,6 +4,56 @@
/*= require issue */
(
function
()
{
var
INVALID_URL
=
'http://goesnowhere.nothing/whereami'
;
var
$boxClosed
,
$boxOpen
,
$btnClose
,
$btnReopen
;
function
expectErrorMessage
()
{
var
$flashMessage
=
$
(
'div.flash-alert'
);
expect
(
$flashMessage
).
toExist
();
expect
(
$flashMessage
).
toBeVisible
();
expect
(
$flashMessage
).
toHaveText
(
'Unable to update this issue at this time.'
);
}
function
expectIssueState
(
isIssueOpen
)
{
expectVisibility
(
$boxClosed
,
!
isIssueOpen
);
expectVisibility
(
$boxOpen
,
isIssueOpen
);
expectVisibility
(
$btnClose
,
isIssueOpen
);
expectVisibility
(
$btnReopen
,
!
isIssueOpen
);
}
function
expectPendingRequest
(
req
,
$triggeredButton
)
{
expect
(
req
.
type
).
toBe
(
'PUT'
);
expect
(
req
.
url
).
toBe
(
$triggeredButton
.
attr
(
'href'
));
expect
(
$triggeredButton
).
toHaveProp
(
'disabled'
,
true
);
}
function
expectVisibility
(
$element
,
shouldBeVisible
)
{
if
(
shouldBeVisible
)
{
expect
(
$element
).
not
.
toHaveClass
(
'hidden'
);
}
else
{
expect
(
$element
).
toHaveClass
(
'hidden'
);
}
}
function
findElements
()
{
$boxClosed
=
$
(
'div.status-box-closed'
);
expect
(
$boxClosed
).
toExist
();
expect
(
$boxClosed
).
toHaveText
(
'Closed'
);
$boxOpen
=
$
(
'div.status-box-open'
);
expect
(
$boxOpen
).
toExist
();
expect
(
$boxOpen
).
toHaveText
(
'Open'
);
$btnClose
=
$
(
'.btn-close.btn-grouped'
);
expect
(
$btnClose
).
toExist
();
expect
(
$btnClose
).
toHaveText
(
'Close issue'
);
$btnReopen
=
$
(
'.btn-reopen.btn-grouped'
);
expect
(
$btnReopen
).
toExist
();
expect
(
$btnReopen
).
toHaveText
(
'Reopen issue'
);
}
describe
(
'Issue'
,
function
()
{
return
describe
(
'task lists'
,
function
()
{
fixture
.
preload
(
'issues_show.html'
);
...
...
@@ -27,93 +77,86 @@
});
});
describe
(
'
reopen/
close issue'
,
function
()
{
describe
(
'close issue'
,
function
()
{
fixture
.
preload
(
'issues_show.html'
);
beforeEach
(
function
()
{
fixture
.
load
(
'issues_show.html'
);
return
this
.
issue
=
new
Issue
();
findElements
();
this
.
issue
=
new
Issue
();
expectIssueState
(
true
);
});
it
(
'closes an issue'
,
function
()
{
var
$btnClose
,
$btnReopen
;
spyOn
(
jQuery
,
'ajax'
).
and
.
callFake
(
function
(
req
)
{
expect
(
req
.
type
).
toBe
(
'PUT'
);
expect
(
req
.
url
).
toBe
(
'http://gitlab.com/issues/6/close'
);
return
req
.
success
({
expectPendingRequest
(
req
,
$btnClose
);
req
.
success
({
id
:
34
});
});
$btnClose
=
$
(
'a.btn-close'
);
$btnReopen
=
$
(
'a.btn-reopen'
);
expect
(
$btnReopen
).
toBeHidden
();
expect
(
$btnClose
.
text
()).
toBe
(
'Close'
);
expect
(
typeof
$btnClose
.
prop
(
'disabled'
)).
toBe
(
'undefined'
);
$btnClose
.
trigger
(
'click'
);
expect
(
$btnReopen
).
toBeVisible
();
expect
(
$btnClose
).
toBeHidden
();
expect
(
$
(
'div.status-box-closed'
)).
toBeVisible
();
return
expect
(
$
(
'div.status-box-open'
)).
toBeHidden
();
expectIssueState
(
false
);
expect
(
$btnClose
).
toHaveProp
(
'disabled'
,
false
);
});
it
(
'fails to close an issue with success:false'
,
function
()
{
var
$btnClose
,
$btnReopen
;
spyOn
(
jQuery
,
'ajax'
).
and
.
callFake
(
function
(
req
)
{
expect
(
req
.
type
).
toBe
(
'PUT'
);
expect
(
req
.
url
).
toBe
(
'http://goesnowhere.nothing/whereami'
);
return
req
.
success
({
expectPendingRequest
(
req
,
$btnClose
);
req
.
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
.
attr
(
'href'
,
INVALID_URL
);
$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
();
return
expect
(
$
(
'div.flash-alert'
).
text
()).
toBe
(
'Unable to update this issue at this time.'
);
expectIssueState
(
true
);
expect
(
$btnClose
).
toHaveProp
(
'disabled'
,
false
);
expectErrorMessage
();
});
it
(
'fails to closes an issue with HTTP error'
,
function
()
{
var
$btnClose
,
$btnReopen
;
spyOn
(
jQuery
,
'ajax'
).
and
.
callFake
(
function
(
req
)
{
expect
(
req
.
type
).
toBe
(
'PUT'
);
expect
(
req
.
url
).
toBe
(
'http://goesnowhere.nothing/whereami'
);
return
req
.
error
();
expectPendingRequest
(
req
,
$btnClose
);
req
.
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
.
attr
(
'href'
,
INVALID_URL
);
$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
();
return
expect
(
$
(
'div.flash-alert'
).
text
()).
toBe
(
'Unable to update this issue at this time.'
);
expectIssueState
(
true
);
expect
(
$btnClose
).
toHaveProp
(
'disabled'
,
true
);
expectErrorMessage
();
});
});
describe
(
'reopen issue'
,
function
()
{
fixture
.
preload
(
'issues_show.html'
);
beforeEach
(
function
()
{
fixture
.
load
(
'issues_show.html'
);
findElements
();
this
.
issue
=
new
Issue
();
// TODO: fixture is an open issue, we should replace it by a closed issue
expectIssueState
(
true
);
});
return
it
(
'reopens an issue'
,
function
()
{
var
$btnClose
,
$btnReopen
;
it
(
'reopens an issue'
,
function
()
{
spyOn
(
jQuery
,
'ajax'
).
and
.
callFake
(
function
(
req
)
{
expect
(
req
.
type
).
toBe
(
'PUT'
);
expect
(
req
.
url
).
toBe
(
'http://gitlab.com/issues/6/reopen'
);
return
req
.
success
({
expectPendingRequest
(
req
,
$btnReopen
);
req
.
success
({
id
:
34
});
});
$btnClose
=
$
(
'a.btn-close'
);
$btnReopen
=
$
(
'a.btn-reopen'
);
expect
(
$btnReopen
.
text
()).
toBe
(
'Reopen'
);
$btnReopen
.
trigger
(
'click'
);
expect
(
$btnReopen
).
toBeHidden
();
expect
(
$btnClose
).
toBeVisible
();
expect
(
$
(
'div.status-box-open'
)).
toBeVisible
();
return
expect
(
$
(
'div.status-box-closed'
)).
toBeHidden
();
expectIssueState
(
true
);
expect
(
$btnReopen
).
toHaveProp
(
'disabled'
,
false
);
});
});
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment