Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
gitlab-ce
Commits
79bdb155
Commit
79bdb155
authored
Aug 16, 2019
by
Paul Slaughter
Committed by
Filipa Lacerda
Aug 16, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rewrite changed_file_icon_spec in Jest
- Uses vue-test-utils - More complete coverage with parameterized tests
parent
a0ec8e9c
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
129 additions
and
72 deletions
+129
-72
app/assets/javascripts/ide/components/file_row_extra.vue
app/assets/javascripts/ide/components/file_row_extra.vue
+0
-1
app/assets/javascripts/vue_shared/components/changed_file_icon.vue
...s/javascripts/vue_shared/components/changed_file_icon.vue
+1
-8
changelogs/unreleased/61335-fix-file-icon-status.yml
changelogs/unreleased/61335-fix-file-icon-status.yml
+5
-0
spec/frontend/vue_shared/components/changed_file_icon_spec.js
.../frontend/vue_shared/components/changed_file_icon_spec.js
+123
-0
spec/javascripts/vue_shared/components/changed_file_icon_spec.js
...vascripts/vue_shared/components/changed_file_icon_spec.js
+0
-63
No files found.
app/assets/javascripts/ide/components/file_row_extra.vue
View file @
79bdb155
...
...
@@ -87,7 +87,6 @@ export default {
:file=
"file"
:show-tooltip=
"true"
:show-staged-icon=
"true"
:force-modified-icon=
"true"
/>
<new-dropdown
:type=
"file.type"
...
...
app/assets/javascripts/vue_shared/components/changed_file_icon.vue
View file @
79bdb155
...
...
@@ -26,11 +26,6 @@ export default {
required
:
false
,
default
:
false
,
},
forceModifiedIcon
:
{
type
:
Boolean
,
required
:
false
,
default
:
false
,
},
size
:
{
type
:
Number
,
required
:
false
,
...
...
@@ -48,8 +43,6 @@ export default {
// eslint-disable-next-line @gitlab/i18n/no-non-i18n-strings
const
suffix
=
!
this
.
file
.
changed
&&
this
.
file
.
staged
&&
!
this
.
showStagedIcon
?
'
-solid
'
:
''
;
if
(
this
.
forceModifiedIcon
)
return
`file-modified
${
suffix
}
`
;
return
`
${
getCommitIconMap
(
this
.
file
).
icon
}${
suffix
}
`
;
},
changedIconClass
()
{
...
...
@@ -88,7 +81,7 @@ export default {
v-gl-tooltip
.
right
:title=
"tooltipTitle"
:class=
"
{ 'ml-auto': isCentered }"
class="file-changed-icon"
class="file-changed-icon
d-inline-block
"
>
<icon
v-if=
"showIcon"
:name=
"changedIcon"
:size=
"size"
:css-classes=
"changedIconClass"
/>
</span>
...
...
changelogs/unreleased/61335-fix-file-icon-status.yml
0 → 100644
View file @
79bdb155
---
title
:
Fix IDE new files icon in tree
merge_request
:
31560
author
:
type
:
fixed
spec/frontend/vue_shared/components/changed_file_icon_spec.js
0 → 100644
View file @
79bdb155
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
ChangedFileIcon
from
'
~/vue_shared/components/changed_file_icon.vue
'
;
import
Icon
from
'
~/vue_shared/components/icon.vue
'
;
const
changedFile
=
()
=>
({
changed
:
true
});
const
stagedFile
=
()
=>
({
changed
:
false
,
staged
:
true
});
const
changedAndStagedFile
=
()
=>
({
changed
:
true
,
staged
:
true
});
const
newFile
=
()
=>
({
changed
:
true
,
tempFile
:
true
});
const
unchangedFile
=
()
=>
({
changed
:
false
,
tempFile
:
false
,
staged
:
false
,
deleted
:
false
});
describe
(
'
Changed file icon
'
,
()
=>
{
let
wrapper
;
const
factory
=
(
props
=
{})
=>
{
wrapper
=
shallowMount
(
ChangedFileIcon
,
{
propsData
:
{
file
:
changedFile
(),
showTooltip
:
true
,
...
props
,
},
sync
:
false
,
});
};
afterEach
(()
=>
{
wrapper
.
destroy
();
});
const
findIcon
=
()
=>
wrapper
.
find
(
Icon
);
const
findIconName
=
()
=>
findIcon
().
props
(
'
name
'
);
const
findIconClasses
=
()
=>
findIcon
()
.
props
(
'
cssClasses
'
)
.
split
(
'
'
);
const
findTooltipText
=
()
=>
wrapper
.
attributes
(
'
data-original-title
'
);
it
(
'
with isCentered true, adds center class
'
,
()
=>
{
factory
({
isCentered
:
true
,
});
expect
(
wrapper
.
classes
(
'
ml-auto
'
)).
toBe
(
true
);
});
it
(
'
with isCentered false, does not center
'
,
()
=>
{
factory
({
isCentered
:
false
,
});
expect
(
wrapper
.
classes
(
'
ml-auto
'
)).
toBe
(
false
);
});
it
(
'
with showTooltip false, does not show tooltip
'
,
()
=>
{
factory
({
showTooltip
:
false
,
});
expect
(
findTooltipText
()).
toBeFalsy
();
});
describe
.
each
`
file | iconName | tooltipText | desc
${
changedFile
()}
|
${
'
file-modified
'
}
|
${
'
Unstaged modification
'
}
|
${
'
with file changed
'
}
${
stagedFile
()}
|
${
'
file-modified-solid
'
}
|
${
'
Staged modification
'
}
|
${
'
with file staged
'
}
${
changedAndStagedFile
()}
|
${
'
file-modified
'
}
|
${
'
Unstaged and staged modification
'
}
|
${
'
with file changed and staged
'
}
${
newFile
()}
|
${
'
file-addition
'
}
|
${
'
Unstaged addition
'
}
|
${
'
with file new
'
}
`
(
'
$desc
'
,
({
file
,
iconName
,
tooltipText
})
=>
{
beforeEach
(()
=>
{
factory
({
file
});
});
it
(
'
renders icon
'
,
()
=>
{
expect
(
findIconName
()).
toBe
(
iconName
);
expect
(
findIconClasses
()).
toContain
(
iconName
);
});
it
(
'
renders tooltip text
'
,
()
=>
{
expect
(
findTooltipText
()).
toBe
(
tooltipText
);
});
});
describe
(
'
with file unchanged
'
,
()
=>
{
beforeEach
(()
=>
{
factory
({
file
:
unchangedFile
(),
});
});
it
(
'
does not show icon
'
,
()
=>
{
expect
(
findIcon
().
exists
()).
toBe
(
false
);
});
it
(
'
does not have tooltip text
'
,
()
=>
{
expect
(
findTooltipText
()).
toBe
(
''
);
});
});
it
(
'
with size set, sets icon size
'
,
()
=>
{
const
size
=
8
;
factory
({
file
:
changedFile
(),
size
,
});
expect
(
findIcon
().
props
(
'
size
'
)).
toBe
(
size
);
});
// NOTE: It looks like 'showStagedIcon' behavior is backwards to what the name suggests
// https://gitlab.com/gitlab-org/gitlab-ce/issues/66071
it
.
each
`
showStagedIcon | iconName | desc
${
false
}
|
${
'
file-modified-solid
'
}
|
${
'
with showStagedIcon false, renders staged icon
'
}
${
true
}
|
${
'
file-modified
'
}
|
${
'
with showStagedIcon true, renders regular icon
'
}
`
(
'
$desc
'
,
({
showStagedIcon
,
iconName
})
=>
{
factory
({
file
:
stagedFile
(),
showStagedIcon
,
});
expect
(
findIconName
()).
toEqual
(
iconName
);
});
});
spec/javascripts/vue_shared/components/changed_file_icon_spec.js
deleted
100644 → 0
View file @
a0ec8e9c
import
Vue
from
'
vue
'
;
import
changedFileIcon
from
'
~/vue_shared/components/changed_file_icon.vue
'
;
import
createComponent
from
'
spec/helpers/vue_mount_component_helper
'
;
describe
(
'
Changed file icon
'
,
()
=>
{
let
vm
;
function
factory
(
props
=
{})
{
const
component
=
Vue
.
extend
(
changedFileIcon
);
vm
=
createComponent
(
component
,
{
...
props
,
file
:
{
tempFile
:
false
,
changed
:
true
,
},
});
}
afterEach
(()
=>
{
vm
.
$destroy
();
});
it
(
'
centers icon
'
,
()
=>
{
factory
({
isCentered
:
true
,
});
expect
(
vm
.
$el
.
classList
).
toContain
(
'
ml-auto
'
);
});
describe
(
'
changedIcon
'
,
()
=>
{
it
(
'
equals file-modified when not a temp file and has changes
'
,
()
=>
{
factory
();
expect
(
vm
.
changedIcon
).
toBe
(
'
file-modified
'
);
});
it
(
'
equals file-addition when a temp file
'
,
()
=>
{
factory
();
vm
.
file
.
tempFile
=
true
;
expect
(
vm
.
changedIcon
).
toBe
(
'
file-addition
'
);
});
});
describe
(
'
changedIconClass
'
,
()
=>
{
it
(
'
includes file-modified when not a temp file
'
,
()
=>
{
factory
();
expect
(
vm
.
changedIconClass
).
toContain
(
'
file-modified
'
);
});
it
(
'
includes file-addition when a temp file
'
,
()
=>
{
factory
();
vm
.
file
.
tempFile
=
true
;
expect
(
vm
.
changedIconClass
).
toContain
(
'
file-addition
'
);
});
});
});
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