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
40eb8253
Commit
40eb8253
authored
Jun 21, 2017
by
winh
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "Merge branch 'winh-merge-request-related-issues' into 'master'"
This reverts commit
6ac777a7
, reversing changes made to
025cbc2a
.
parent
cf3cdd48
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
89 additions
and
240 deletions
+89
-240
mr_widget_related_links.js
...erge_request_widget/components/mr_widget_related_links.js
+10
-31
mr_widget_merged.js
...erge_request_widget/components/states/mr_widget_merged.js
+0
-10
mr_widget_options.js
...javascripts/vue_merge_request_widget/mr_widget_options.js
+2
-7
mr_widget_store.js
...cripts/vue_merge_request_widget/stores/mr_widget_store.js
+0
-13
state_maps.js
...javascripts/vue_merge_request_widget/stores/state_maps.js
+13
-0
merge_requests.scss
app/assets/stylesheets/pages/merge_requests.scss
+0
-4
closes_issues_spec.rb
spec/features/merge_requests/closes_issues_spec.rb
+8
-8
mr_widget_related_links_spec.js
.../vue_mr_widget/components/mr_widget_related_links_spec.js
+53
-151
mr_widget_options_spec.js
spec/javascripts/vue_mr_widget/mr_widget_options_spec.js
+3
-4
mr_widget_store_spec.js
.../javascripts/vue_mr_widget/stores/mr_widget_store_spec.js
+0
-12
No files found.
app/assets/javascripts/vue_merge_request_widget/components/mr_widget_related_links.js
View file @
40eb8253
export
default
{
export
default
{
name
:
'MRWidgetRelatedLinks'
,
name
:
'MRWidgetRelatedLinks'
,
props
:
{
props
:
{
isMerged
:
{
type
:
Boolean
,
required
:
true
},
relatedLinks
:
{
type
:
Object
,
required
:
true
},
relatedLinks
:
{
type
:
Object
,
required
:
true
},
},
},
computed
:
{
computed
:
{
// TODO: the following should be handled by i18n
closingText
()
{
if
(
this
.
isMerged
)
{
return
`Closed
${
this
.
issueLabel
(
'closing'
)}
`
;
}
return
`Closes
${
this
.
issueLabel
(
'closing'
)}
`
;
},
hasLinks
()
{
hasLinks
()
{
const
{
closing
,
mentioned
,
assignToMe
}
=
this
.
relatedLinks
;
const
{
closing
,
mentioned
,
assignToMe
}
=
this
.
relatedLinks
;
return
closing
||
mentioned
||
assignToMe
;
return
closing
||
mentioned
||
assignToMe
;
},
},
// TODO: the following should be handled by i18n
mentionedText
()
{
if
(
this
.
isMerged
)
{
if
(
this
.
hasMultipleIssues
(
this
.
relatedLinks
.
mentioned
))
{
return
'are mentioned but were not closed'
;
}
return
'is mentioned but was not closed'
;
}
if
(
this
.
hasMultipleIssues
(
this
.
relatedLinks
.
mentioned
))
{
return
'are mentioned but will not be closed'
;
}
return
'is mentioned but will not be closed'
;
},
},
},
methods
:
{
methods
:
{
hasMultipleIssues
(
text
)
{
hasMultipleIssues
(
text
)
{
return
/<
\/
a>,
?
and <a/
.
test
(
text
);
return
!
text
?
false
:
text
.
match
(
/<
\/
a> and <a/
);
},
},
// TODO: the following should be handled by i18n
issueLabel
(
field
)
{
issueLabel
(
field
)
{
return
this
.
hasMultipleIssues
(
this
.
relatedLinks
[
field
])
?
'issues'
:
'issue'
;
return
this
.
hasMultipleIssues
(
this
.
relatedLinks
[
field
])
?
'issues'
:
'issue'
;
},
},
verbLabel
(
field
)
{
return
this
.
hasMultipleIssues
(
this
.
relatedLinks
[
field
])
?
'are'
:
'is'
;
},
},
},
template
:
`
template
:
`
<div v-if="hasLinks">
<section
v-if="hasLinks"
class="mr-info-list mr-links">
<div class="legend"></div>
<div class="legend"></div>
<p v-if="relatedLinks.closing">
<p v-if="relatedLinks.closing">
{{closingText
}}
Closes {{issueLabel('closing')
}}
<span v-html="relatedLinks.closing"></span>.
<span v-html="relatedLinks.closing"></span>.
</p>
</p>
<p v-if="relatedLinks.mentioned">
<p v-if="relatedLinks.mentioned">
<span class="capitalize">{{issueLabel('mentioned')}}</span>
<span class="capitalize">{{issueLabel('mentioned')}}</span>
<span v-html="relatedLinks.mentioned"></span>
<span v-html="relatedLinks.mentioned"></span>
{{
mentionedText}}
{{
verbLabel('mentioned')}} mentioned but will not be closed.
</p>
</p>
<p v-if="relatedLinks.assignToMe">
<p v-if="relatedLinks.assignToMe">
<span v-html="relatedLinks.assignToMe"></span>
<span v-html="relatedLinks.assignToMe"></span>
</p>
</p>
</
div
>
</
section
>
`
,
`
,
};
};
app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_merged.js
View file @
40eb8253
/* global Flash */
/* global Flash */
import
mrWidgetAuthorTime
from
'../../components/mr_widget_author_time'
;
import
mrWidgetAuthorTime
from
'../../components/mr_widget_author_time'
;
import
mrWidgetRelatedLinks
from
'../../components/mr_widget_related_links'
;
import
eventHub
from
'../../event_hub'
;
import
eventHub
from
'../../event_hub'
;
import
'../../../flash'
;
export
default
{
export
default
{
name
:
'MRWidgetMerged'
,
name
:
'MRWidgetMerged'
,
...
@@ -13,7 +11,6 @@ export default {
...
@@ -13,7 +11,6 @@ export default {
},
},
components
:
{
components
:
{
'mr-widget-author-and-time'
:
mrWidgetAuthorTime
,
'mr-widget-author-and-time'
:
mrWidgetAuthorTime
,
'mr-widget-related-links'
:
mrWidgetRelatedLinks
,
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -21,9 +18,6 @@ export default {
...
@@ -21,9 +18,6 @@ export default {
};
};
},
},
computed
:
{
computed
:
{
shouldRenderRelatedLinks
()
{
return
this
.
mr
.
relatedLinks
&&
this
.
mr
.
isMerged
;
},
shouldShowRemoveSourceBranch
()
{
shouldShowRemoveSourceBranch
()
{
const
{
sourceBranchRemoved
,
isRemovingSourceBranch
,
canRemoveSourceBranch
}
=
this
.
mr
;
const
{
sourceBranchRemoved
,
isRemovingSourceBranch
,
canRemoveSourceBranch
}
=
this
.
mr
;
...
@@ -92,10 +86,6 @@ export default {
...
@@ -92,10 +86,6 @@ export default {
aria-hidden="true" />
aria-hidden="true" />
The source branch is being removed.
The source branch is being removed.
</p>
</p>
<mr-widget-related-links
v-if="shouldRenderRelatedLinks"
:is-merged="mr.isMerged()"
:related-links="mr.relatedLinks" />
</section>
</section>
<div
<div
v-if="shouldShowMergedButtons"
v-if="shouldShowMergedButtons"
...
...
app/assets/javascripts/vue_merge_request_widget/mr_widget_options.js
View file @
40eb8253
...
@@ -48,7 +48,7 @@ export default {
...
@@ -48,7 +48,7 @@ export default {
return
stateMaps
.
stateToComponentMap
[
this
.
mr
.
state
];
return
stateMaps
.
stateToComponentMap
[
this
.
mr
.
state
];
},
},
shouldRenderMergeHelp
()
{
shouldRenderMergeHelp
()
{
return
!
this
.
mr
.
isMerged
;
return
stateMaps
.
statesToShowHelpWidget
.
indexOf
(
this
.
mr
.
state
)
>
-
1
;
},
},
shouldRenderPipelines
()
{
shouldRenderPipelines
()
{
return
Object
.
keys
(
this
.
mr
.
pipeline
).
length
||
this
.
mr
.
hasCI
;
return
Object
.
keys
(
this
.
mr
.
pipeline
).
length
||
this
.
mr
.
hasCI
;
...
@@ -238,14 +238,9 @@ export default {
...
@@ -238,14 +238,9 @@ export default {
:is="componentName"
:is="componentName"
:mr="mr"
:mr="mr"
:service="service" />
:service="service" />
<section
v-if="shouldRenderRelatedLinks"
class="mr-info-list mr-links">
<div class="legend"></div>
<mr-widget-related-links
<mr-widget-related-links
:is-merged="mr.isMerged
"
v-if="shouldRenderRelatedLinks
"
:related-links="mr.relatedLinks" />
:related-links="mr.relatedLinks" />
</section>
<mr-widget-merge-help v-if="shouldRenderMergeHelp" />
<mr-widget-merge-help v-if="shouldRenderMergeHelp" />
</div>
</div>
`
,
`
,
...
...
app/assets/javascripts/vue_merge_request_widget/stores/mr_widget_store.js
View file @
40eb8253
import
Timeago
from
'timeago.js'
;
import
Timeago
from
'timeago.js'
;
import
{
getStateKey
}
from
'../dependencies'
;
import
{
getStateKey
}
from
'../dependencies'
;
const
unmergedStates
=
[
'locked'
,
'conflicts'
,
'workInProgress'
,
'readyToMerge'
,
'checking'
,
'unresolvedDiscussions'
,
'pipelineFailed'
,
'pipelineBlocked'
,
'autoMergeFailed'
,
];
export
default
class
MergeRequestStore
{
export
default
class
MergeRequestStore
{
constructor
(
data
)
{
constructor
(
data
)
{
...
@@ -77,7 +65,6 @@ export default class MergeRequestStore {
...
@@ -77,7 +65,6 @@ export default class MergeRequestStore {
this
.
mergeActionsContentPath
=
data
.
commit_change_content_path
;
this
.
mergeActionsContentPath
=
data
.
commit_change_content_path
;
this
.
isRemovingSourceBranch
=
this
.
isRemovingSourceBranch
||
false
;
this
.
isRemovingSourceBranch
=
this
.
isRemovingSourceBranch
||
false
;
this
.
isOpen
=
data
.
state
===
'opened'
||
data
.
state
===
'reopened'
||
false
;
this
.
isOpen
=
data
.
state
===
'opened'
||
data
.
state
===
'reopened'
||
false
;
this
.
isMerged
=
unmergedStates
.
indexOf
(
data
.
state
)
===
-
1
;
this
.
hasMergeableDiscussionsState
=
data
.
mergeable_discussions_state
===
false
;
this
.
hasMergeableDiscussionsState
=
data
.
mergeable_discussions_state
===
false
;
this
.
canRemoveSourceBranch
=
currentUser
.
can_remove_source_branch
||
false
;
this
.
canRemoveSourceBranch
=
currentUser
.
can_remove_source_branch
||
false
;
this
.
canMerge
=
!!
data
.
merge_path
;
this
.
canMerge
=
!!
data
.
merge_path
;
...
...
app/assets/javascripts/vue_merge_request_widget/stores/state_maps.js
View file @
40eb8253
...
@@ -19,6 +19,19 @@ const stateToComponentMap = {
...
@@ -19,6 +19,19 @@ const stateToComponentMap = {
shaMismatch
:
'mr-widget-sha-mismatch'
,
shaMismatch
:
'mr-widget-sha-mismatch'
,
};
};
const
statesToShowHelpWidget
=
[
'locked'
,
'conflicts'
,
'workInProgress'
,
'readyToMerge'
,
'checking'
,
'unresolvedDiscussions'
,
'pipelineFailed'
,
'pipelineBlocked'
,
'autoMergeFailed'
,
];
export
default
{
export
default
{
stateToComponentMap
,
stateToComponentMap
,
statesToShowHelpWidget
,
};
};
app/assets/stylesheets/pages/merge_requests.scss
View file @
40eb8253
...
@@ -372,10 +372,6 @@
...
@@ -372,10 +372,6 @@
margin-left
:
12px
;
margin-left
:
12px
;
}
}
&
.mr-state-locked
+
.mr-info-list.mr-links
{
margin-top
:
-16px
;
}
&
.empty-state
{
&
.empty-state
{
.artwork
{
.artwork
{
margin-bottom
:
$gl-padding
;
margin-bottom
:
$gl-padding
;
...
...
spec/features/merge_requests/closes_issues_spec.rb
View file @
40eb8253
...
@@ -36,7 +36,7 @@ feature 'Merge Request closing issues message', feature: true, js: true do
...
@@ -36,7 +36,7 @@ feature 'Merge Request closing issues message', feature: true, js: true do
let
(
:merge_request_description
)
{
"Description
\n\n
closing
#{
issue_1
.
to_reference
}
,
#{
issue_2
.
to_reference
}
"
}
let
(
:merge_request_description
)
{
"Description
\n\n
closing
#{
issue_1
.
to_reference
}
,
#{
issue_2
.
to_reference
}
"
}
it
'does not display closing issue message'
do
it
'does not display closing issue message'
do
expect
(
page
).
to
have_content
(
"Close
d
issues
#{
issue_1
.
to_reference
}
and
#{
issue_2
.
to_reference
}
"
)
expect
(
page
).
to
have_content
(
"Close
s
issues
#{
issue_1
.
to_reference
}
and
#{
issue_2
.
to_reference
}
"
)
end
end
end
end
...
@@ -44,7 +44,7 @@ feature 'Merge Request closing issues message', feature: true, js: true do
...
@@ -44,7 +44,7 @@ feature 'Merge Request closing issues message', feature: true, js: true do
let
(
:merge_request_description
)
{
"Description
\n\n
Refers to
#{
issue_1
.
to_reference
}
and
#{
issue_2
.
to_reference
}
"
}
let
(
:merge_request_description
)
{
"Description
\n\n
Refers to
#{
issue_1
.
to_reference
}
and
#{
issue_2
.
to_reference
}
"
}
it
'does not display closing issue message'
do
it
'does not display closing issue message'
do
expect
(
page
).
to
have_content
(
"Issues
#{
issue_1
.
to_reference
}
and
#{
issue_2
.
to_reference
}
are mentioned but w
ere not closed
"
)
expect
(
page
).
to
have_content
(
"Issues
#{
issue_1
.
to_reference
}
and
#{
issue_2
.
to_reference
}
are mentioned but w
ill not be closed.
"
)
end
end
end
end
...
@@ -52,8 +52,8 @@ feature 'Merge Request closing issues message', feature: true, js: true do
...
@@ -52,8 +52,8 @@ feature 'Merge Request closing issues message', feature: true, js: true do
let
(
:merge_request_title
)
{
"closes
#{
issue_1
.
to_reference
}
\n\n
refers to
#{
issue_2
.
to_reference
}
"
}
let
(
:merge_request_title
)
{
"closes
#{
issue_1
.
to_reference
}
\n\n
refers to
#{
issue_2
.
to_reference
}
"
}
it
'does not display closing issue message'
do
it
'does not display closing issue message'
do
expect
(
page
).
to
have_content
(
"Close
d issue
#{
issue_1
.
to_reference
}
"
)
expect
(
page
).
to
have_content
(
"Close
s issue
#{
issue_1
.
to_reference
}
.
"
)
expect
(
page
).
to
have_content
(
"Issue
#{
issue_2
.
to_reference
}
is mentioned but w
as not closed
"
)
expect
(
page
).
to
have_content
(
"Issue
#{
issue_2
.
to_reference
}
is mentioned but w
ill not be closed.
"
)
end
end
end
end
...
@@ -61,7 +61,7 @@ feature 'Merge Request closing issues message', feature: true, js: true do
...
@@ -61,7 +61,7 @@ feature 'Merge Request closing issues message', feature: true, js: true do
let
(
:merge_request_title
)
{
"closing
#{
issue_1
.
to_reference
}
,
#{
issue_2
.
to_reference
}
"
}
let
(
:merge_request_title
)
{
"closing
#{
issue_1
.
to_reference
}
,
#{
issue_2
.
to_reference
}
"
}
it
'does not display closing issue message'
do
it
'does not display closing issue message'
do
expect
(
page
).
to
have_content
(
"Close
d
issues
#{
issue_1
.
to_reference
}
and
#{
issue_2
.
to_reference
}
"
)
expect
(
page
).
to
have_content
(
"Close
s
issues
#{
issue_1
.
to_reference
}
and
#{
issue_2
.
to_reference
}
"
)
end
end
end
end
...
@@ -69,7 +69,7 @@ feature 'Merge Request closing issues message', feature: true, js: true do
...
@@ -69,7 +69,7 @@ feature 'Merge Request closing issues message', feature: true, js: true do
let
(
:merge_request_title
)
{
"Refers to
#{
issue_1
.
to_reference
}
and
#{
issue_2
.
to_reference
}
"
}
let
(
:merge_request_title
)
{
"Refers to
#{
issue_1
.
to_reference
}
and
#{
issue_2
.
to_reference
}
"
}
it
'does not display closing issue message'
do
it
'does not display closing issue message'
do
expect
(
page
).
to
have_content
(
"Issues
#{
issue_1
.
to_reference
}
and
#{
issue_2
.
to_reference
}
are mentioned but w
ere not closed
"
)
expect
(
page
).
to
have_content
(
"Issues
#{
issue_1
.
to_reference
}
and
#{
issue_2
.
to_reference
}
are mentioned but w
ill not be closed.
"
)
end
end
end
end
...
@@ -77,8 +77,8 @@ feature 'Merge Request closing issues message', feature: true, js: true do
...
@@ -77,8 +77,8 @@ feature 'Merge Request closing issues message', feature: true, js: true do
let
(
:merge_request_title
)
{
"closes
#{
issue_1
.
to_reference
}
\n\n
refers to
#{
issue_2
.
to_reference
}
"
}
let
(
:merge_request_title
)
{
"closes
#{
issue_1
.
to_reference
}
\n\n
refers to
#{
issue_2
.
to_reference
}
"
}
it
'does not display closing issue message'
do
it
'does not display closing issue message'
do
expect
(
page
).
to
have_content
(
"Close
d issue
#{
issue_1
.
to_reference
}
"
)
expect
(
page
).
to
have_content
(
"Close
s issue
#{
issue_1
.
to_reference
}
. Issue
#{
issue_2
.
to_reference
}
is mentioned but will not be closed.
"
)
expect
(
page
).
to
have_content
(
"Issue
#{
issue_2
.
to_reference
}
is mentioned but w
as not closed
"
)
expect
(
page
).
to
have_content
(
"Issue
#{
issue_2
.
to_reference
}
is mentioned but w
ill not be closed.
"
)
end
end
end
end
end
end
spec/javascripts/vue_mr_widget/components/mr_widget_related_links_spec.js
View file @
40eb8253
import
Vue
from
'vue'
;
import
Vue
from
'vue'
;
import
MRWidgetRelatedLinks
from
'~/vue_merge_request_widget/components/mr_widget_related_links'
;
import
relatedLinksComponent
from
'~/vue_merge_request_widget/components/mr_widget_related_links'
;
describe
(
'MRWidgetRelatedLinks'
,
(
)
=>
{
const
createComponent
=
(
data
)
=>
{
let
vm
;
const
Component
=
Vue
.
extend
(
relatedLinksComponent
)
;
beforeEach
(()
=>
{
return
new
Component
({
const
Component
=
Vue
.
extend
(
MRWidgetRelatedLinks
);
vm
=
new
Component
({
el
:
document
.
createElement
(
'div'
),
el
:
document
.
createElement
(
'div'
),
propsData
:
{
propsData
:
data
,
isMerged
:
false
,
relatedLinks
:
{},
},
});
});
afterEach
(()
=>
{
vm
.
$destroy
();
});
});
};
describe
(
'MRWidgetRelatedLinks'
,
()
=>
{
describe
(
'props'
,
()
=>
{
describe
(
'props'
,
()
=>
{
it
(
'should have props'
,
()
=>
{
it
(
'should have props'
,
()
=>
{
const
{
isMerged
,
relatedLinks
}
=
MRWidgetRelatedLinks
.
props
;
const
{
relatedLinks
}
=
relatedLinksComponent
.
props
;
expect
(
isMerged
).
toBeDefined
();
expect
(
isMerged
.
type
).
toBe
(
Boolean
);
expect
(
isMerged
.
required
).
toBeTruthy
();
expect
(
relatedLinks
).
toBeDefined
();
expect
(
relatedLinks
).
toBeDefined
();
expect
(
relatedLinks
.
type
instanceof
Object
).
toBeTruthy
();
expect
(
relatedLinks
.
type
instanceof
Object
).
toBeTruthy
();
expect
(
relatedLinks
.
required
).
toBeTruthy
();
expect
(
relatedLinks
.
required
).
toBeTruthy
();
...
@@ -33,38 +22,16 @@ describe('MRWidgetRelatedLinks', () => {
...
@@ -33,38 +22,16 @@ describe('MRWidgetRelatedLinks', () => {
});
});
describe
(
'computed'
,
()
=>
{
describe
(
'computed'
,
()
=>
{
describe
(
'closingText'
,
()
=>
{
const
dummyIssueLabel
=
'dummy label'
;
beforeEach
(()
=>
{
spyOn
(
vm
,
'issueLabel'
).
and
.
returnValue
(
dummyIssueLabel
);
});
it
(
'outputs text for closing issues'
,
()
=>
{
vm
.
isMerged
=
false
;
const
text
=
vm
.
closingText
;
expect
(
text
).
toBe
(
`Closes
${
dummyIssueLabel
}
`
);
});
it
(
'outputs text for closed issues'
,
()
=>
{
vm
.
isMerged
=
true
;
const
text
=
vm
.
closingText
;
expect
(
text
).
toBe
(
`Closed
${
dummyIssueLabel
}
`
);
});
});
describe
(
'hasLinks'
,
()
=>
{
describe
(
'hasLinks'
,
()
=>
{
it
(
'should return correct value when we have links reference'
,
()
=>
{
it
(
'should return correct value when we have links reference'
,
()
=>
{
vm
.
relatedLinks
=
{
const
data
=
{
relatedLinks
:
{
closing
:
'/foo'
,
closing
:
'/foo'
,
mentioned
:
'/foo'
,
mentioned
:
'/foo'
,
assignToMe
:
'/foo'
,
assignToMe
:
'/foo'
,
},
};
};
const
vm
=
createComponent
(
data
);
expect
(
vm
.
hasLinks
).
toBeTruthy
();
expect
(
vm
.
hasLinks
).
toBeTruthy
();
vm
.
relatedLinks
.
closing
=
null
;
vm
.
relatedLinks
.
closing
=
null
;
...
@@ -77,160 +44,95 @@ describe('MRWidgetRelatedLinks', () => {
...
@@ -77,160 +44,95 @@ describe('MRWidgetRelatedLinks', () => {
expect
(
vm
.
hasLinks
).
toBeFalsy
();
expect
(
vm
.
hasLinks
).
toBeFalsy
();
});
});
});
});
describe
(
'mentionedText'
,
()
=>
{
it
(
'outputs text for one mentioned issue before merging'
,
()
=>
{
vm
.
isMerged
=
false
;
spyOn
(
vm
,
'hasMultipleIssues'
).
and
.
returnValue
(
false
);
const
text
=
vm
.
mentionedText
;
expect
(
text
).
toBe
(
'is mentioned but will not be closed'
);
});
it
(
'outputs text for one mentioned issue after merging'
,
()
=>
{
vm
.
isMerged
=
true
;
spyOn
(
vm
,
'hasMultipleIssues'
).
and
.
returnValue
(
false
);
const
text
=
vm
.
mentionedText
;
expect
(
text
).
toBe
(
'is mentioned but was not closed'
);
});
});
it
(
'outputs text for multiple mentioned issue before merging'
,
()
=>
{
describe
(
'methods'
,
()
=>
{
vm
.
isMerged
=
false
;
const
data
=
{
spyOn
(
vm
,
'hasMultipleIssues'
).
and
.
returnValue
(
true
);
relatedLinks
:
{
closing
:
'<a href="#">#23</a> and <a>#42</a>'
,
const
text
=
vm
.
mentionedText
;
mentioned
:
'<a href="#">#7</a>'
,
},
};
const
vm
=
createComponent
(
data
);
expect
(
text
).
toBe
(
'are mentioned but will not be closed'
);
describe
(
'hasMultipleIssues'
,
()
=>
{
it
(
'should return true if the given text has multiple issues'
,
()
=>
{
expect
(
vm
.
hasMultipleIssues
(
data
.
relatedLinks
.
closing
)).
toBeTruthy
();
});
});
it
(
'outputs text for multiple mentioned issue after merging'
,
()
=>
{
it
(
'should return false if the given text has one issue'
,
()
=>
{
vm
.
isMerged
=
true
;
expect
(
vm
.
hasMultipleIssues
(
data
.
relatedLinks
.
mentioned
)).
toBeFalsy
();
spyOn
(
vm
,
'hasMultipleIssues'
).
and
.
returnValue
(
true
);
const
text
=
vm
.
mentionedText
;
expect
(
text
).
toBe
(
'are mentioned but were not closed'
);
});
});
});
});
describe
(
'methods'
,
()
=>
{
const
relatedLinks
=
{
oneIssue
:
'<a href="#">#7</a>'
,
twoIssues
:
'<a href="#">#23</a> and <a>#42</a>'
,
threeIssues
:
'<a href="#">#1</a>, <a>#2</a>, and <a>#3</a>'
,
};
beforeEach
(()
=>
{
vm
.
relatedLinks
=
relatedLinks
;
});
});
describe
(
'
hasMultipleIssues
'
,
()
=>
{
describe
(
'
issueLabel
'
,
()
=>
{
it
(
'should return true if the given text has multiple issues'
,
()
=>
{
it
(
'should return true if the given text has multiple issues'
,
()
=>
{
expect
(
vm
.
hasMultipleIssues
(
relatedLinks
.
twoIssues
)).
toBeTruthy
();
expect
(
vm
.
issueLabel
(
'closing'
)).
toEqual
(
'issues'
);
expect
(
vm
.
hasMultipleIssues
(
relatedLinks
.
threeIssues
)).
toBeTruthy
();
});
});
it
(
'should return false if the given text has one issue'
,
()
=>
{
it
(
'should return false if the given text has one issue'
,
()
=>
{
expect
(
vm
.
hasMultipleIssues
(
relatedLinks
.
oneIssue
)).
toBeFalsy
(
);
expect
(
vm
.
issueLabel
(
'mentioned'
)).
toEqual
(
'issue'
);
});
});
});
});
describe
(
'
issue
Label'
,
()
=>
{
describe
(
'
verb
Label'
,
()
=>
{
it
(
'should return true if the given text has multiple issues'
,
()
=>
{
it
(
'should return true if the given text has multiple issues'
,
()
=>
{
expect
(
vm
.
issueLabel
(
'twoIssues'
)).
toEqual
(
'issues'
);
expect
(
vm
.
verbLabel
(
'closing'
)).
toEqual
(
'are'
);
expect
(
vm
.
issueLabel
(
'threeIssues'
)).
toEqual
(
'issues'
);
});
});
it
(
'should return false if the given text has one issue'
,
()
=>
{
it
(
'should return false if the given text has one issue'
,
()
=>
{
expect
(
vm
.
issueLabel
(
'oneIssue'
)).
toEqual
(
'issue
'
);
expect
(
vm
.
verbLabel
(
'mentioned'
)).
toEqual
(
'is
'
);
});
});
});
});
});
});
describe
(
'template'
,
()
=>
{
describe
(
'template'
,
()
=>
{
it
(
'should have only have closing issues text'
,
(
done
)
=>
{
it
(
'should have only have closing issues text'
,
()
=>
{
vm
.
relatedLinks
=
{
const
vm
=
createComponent
({
relatedLinks
:
{
closing
:
'<a href="#">#23</a> and <a>#42</a>'
,
closing
:
'<a href="#">#23</a> and <a>#42</a>'
,
};
},
});
Vue
.
nextTick
()
.
then
(()
=>
{
const
content
=
vm
.
$el
.
textContent
.
replace
(
/
\n(\s)
+/g
,
' '
).
trim
();
const
content
=
vm
.
$el
.
textContent
.
replace
(
/
\n(\s)
+/g
,
' '
).
trim
();
expect
(
content
).
toContain
(
'Closes issues #23 and #42'
);
expect
(
content
).
toContain
(
'Closes issues #23 and #42'
);
expect
(
content
).
not
.
toContain
(
'mentioned'
);
expect
(
content
).
not
.
toContain
(
'mentioned'
);
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
});
it
(
'should have only have mentioned issues text'
,
(
done
)
=>
{
it
(
'should have only have mentioned issues text'
,
()
=>
{
vm
.
relatedLinks
=
{
const
vm
=
createComponent
({
relatedLinks
:
{
mentioned
:
'<a href="#">#7</a>'
,
mentioned
:
'<a href="#">#7</a>'
,
};
},
});
Vue
.
nextTick
()
.
then
(()
=>
{
expect
(
vm
.
$el
.
innerText
).
toContain
(
'issue #7'
);
expect
(
vm
.
$el
.
innerText
).
toContain
(
'issue #7'
);
expect
(
vm
.
$el
.
innerText
).
toContain
(
'is mentioned but will not be closed
'
);
expect
(
vm
.
$el
.
innerText
).
toContain
(
'is mentioned but will not be closed.
'
);
expect
(
vm
.
$el
.
innerText
).
not
.
toContain
(
'Closes'
);
expect
(
vm
.
$el
.
innerText
).
not
.
toContain
(
'Closes'
);
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
});
it
(
'should have closing and mentioned issues at the same time'
,
(
done
)
=>
{
it
(
'should have closing and mentioned issues at the same time'
,
()
=>
{
vm
.
relatedLinks
=
{
const
vm
=
createComponent
({
relatedLinks
:
{
closing
:
'<a href="#">#7</a>'
,
closing
:
'<a href="#">#7</a>'
,
mentioned
:
'<a href="#">#23</a> and <a>#42</a>'
,
mentioned
:
'<a href="#">#23</a> and <a>#42</a>'
,
};
},
});
Vue
.
nextTick
()
.
then
(()
=>
{
const
content
=
vm
.
$el
.
textContent
.
replace
(
/
\n(\s)
+/g
,
' '
).
trim
();
const
content
=
vm
.
$el
.
textContent
.
replace
(
/
\n(\s)
+/g
,
' '
).
trim
();
expect
(
content
).
toContain
(
'Closes issue #7.'
);
expect
(
content
).
toContain
(
'Closes issue #7.'
);
expect
(
content
).
toContain
(
'issues #23 and #42'
);
expect
(
content
).
toContain
(
'issues #23 and #42'
);
expect
(
content
).
toContain
(
'are mentioned but will not be closed'
);
expect
(
content
).
toContain
(
'are mentioned but will not be closed.'
);
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
});
it
(
'should have assing issues link'
,
(
done
)
=>
{
it
(
'should have assing issues link'
,
()
=>
{
vm
.
relatedLinks
=
{
const
vm
=
createComponent
({
relatedLinks
:
{
assignToMe
:
'<a href="#">Assign yourself to these issues</a>'
,
assignToMe
:
'<a href="#">Assign yourself to these issues</a>'
,
};
},
Vue
.
nextTick
()
.
then
(()
=>
{
expect
(
vm
.
$el
.
innerText
).
toContain
(
'Assign yourself to these issues'
);
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
});
it
(
'should use different wording after merging'
,
(
done
)
=>
{
expect
(
vm
.
$el
.
innerText
).
toContain
(
'Assign yourself to these issues'
);
vm
.
isMerged
=
true
;
vm
.
relatedLinks
=
{
closing
:
'<a href="#">#7</a>'
,
mentioned
:
'<a href="#">#23</a> and <a>#42</a>'
,
};
Vue
.
nextTick
()
.
then
(()
=>
{
const
content
=
vm
.
$el
.
textContent
.
replace
(
/
\n(\s)
+/g
,
' '
).
trim
();
expect
(
content
).
toContain
(
'Closed issue #7.'
);
expect
(
content
).
toContain
(
'issues #23 and #42'
);
expect
(
content
).
toContain
(
'are mentioned but were not closed'
);
})
.
then
(
done
)
.
catch
(
done
.
fail
);
});
});
});
});
});
});
spec/javascripts/vue_mr_widget/mr_widget_options_spec.js
View file @
40eb8253
...
@@ -48,13 +48,12 @@ describe('mrWidgetOptions', () => {
...
@@ -48,13 +48,12 @@ describe('mrWidgetOptions', () => {
});
});
describe
(
'shouldRenderMergeHelp'
,
()
=>
{
describe
(
'shouldRenderMergeHelp'
,
()
=>
{
it
(
'should return false after merging'
,
()
=>
{
it
(
'should return false for the initial merged state'
,
()
=>
{
vm
.
mr
.
isMerged
=
true
;
expect
(
vm
.
shouldRenderMergeHelp
).
toBeFalsy
();
expect
(
vm
.
shouldRenderMergeHelp
).
toBeFalsy
();
});
});
it
(
'should return true
before merging
'
,
()
=>
{
it
(
'should return true
for a state which requires help widget
'
,
()
=>
{
vm
.
mr
.
isMerged
=
false
;
vm
.
mr
.
state
=
'conflicts'
;
expect
(
vm
.
shouldRenderMergeHelp
).
toBeTruthy
();
expect
(
vm
.
shouldRenderMergeHelp
).
toBeTruthy
();
});
});
});
});
...
...
spec/javascripts/vue_mr_widget/stores/mr_widget_store_spec.js
View file @
40eb8253
...
@@ -18,17 +18,5 @@ describe('MergeRequestStore', () => {
...
@@ -18,17 +18,5 @@ describe('MergeRequestStore', () => {
store
.
setData
({
...
mockData
,
work_in_progress
:
!
mockData
.
work_in_progress
});
store
.
setData
({
...
mockData
,
work_in_progress
:
!
mockData
.
work_in_progress
});
expect
(
store
.
hasSHAChanged
).
toBe
(
false
);
expect
(
store
.
hasSHAChanged
).
toBe
(
false
);
});
});
it
(
'sets isMerged to true for merged state'
,
()
=>
{
store
.
setData
({
...
mockData
,
state
:
'merged'
});
expect
(
store
.
isMerged
).
toBe
(
true
);
});
it
(
'sets isMerged to false for readyToMerge state'
,
()
=>
{
store
.
setData
({
...
mockData
,
state
:
'readyToMerge'
});
expect
(
store
.
isMerged
).
toBe
(
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