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
1
Merge Requests
1
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
nexedi
gitlab-ce
Commits
59b84720
Commit
59b84720
authored
Mar 21, 2022
by
Illya Klymov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Address reviewer comments
* improve tests * set page to 1 on page size change
parent
c07eba6c
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
54 additions
and
9 deletions
+54
-9
app/assets/javascripts/pages/import/history/components/import_history_app.vue
...ts/pages/import/history/components/import_history_app.vue
+13
-4
spec/frontend/pages/import/history/import_history_app_spec.js
.../frontend/pages/import/history/import_history_app_spec.js
+41
-5
No files found.
app/assets/javascripts/pages/import/history/components/import_history_app.vue
View file @
59b84720
...
@@ -15,7 +15,7 @@ const DEFAULT_TH_CLASSES =
...
@@ -15,7 +15,7 @@ const DEFAULT_TH_CLASSES =
'
gl-bg-transparent! gl-border-b-solid! gl-border-b-gray-200! gl-border-b-1! gl-p-5!
'
;
'
gl-bg-transparent! gl-border-b-solid! gl-border-b-gray-200! gl-border-b-1! gl-p-5!
'
;
const
tableCell
=
(
config
)
=>
({
const
tableCell
=
(
config
)
=>
({
thClass
:
`
${
DEFAULT_TH_CLASSES
}
`
,
thClass
:
DEFAULT_TH_CLASSES
,
tdClass
:
(
value
,
key
,
item
)
=>
{
tdClass
:
(
value
,
key
,
item
)
=>
{
return
{
return
{
// eslint-disable-next-line no-underscore-dangle
// eslint-disable-next-line no-underscore-dangle
...
@@ -108,7 +108,7 @@ export default {
...
@@ -108,7 +108,7 @@ export default {
}
}
},
},
isHTTP
(
url
)
{
hasHttpProtocol
(
url
)
{
try
{
try
{
const
parsedUrl
=
new
URL
(
url
);
const
parsedUrl
=
new
URL
(
url
);
return
[
'
http:
'
,
'
https:
'
].
includes
(
parsedUrl
.
protocol
);
return
[
'
http:
'
,
'
https:
'
].
includes
(
parsedUrl
.
protocol
);
...
@@ -116,6 +116,11 @@ export default {
...
@@ -116,6 +116,11 @@ export default {
return
false
;
return
false
;
}
}
},
},
setPageSize
(
size
)
{
this
.
paginationConfig
.
perPage
=
size
;
this
.
paginationConfig
.
page
=
1
;
},
},
},
gitlabLogo
:
window
.
gon
.
gitlab_logo
,
gitlabLogo
:
window
.
gon
.
gitlab_logo
,
...
@@ -147,7 +152,11 @@ export default {
...
@@ -147,7 +152,11 @@ export default {
>
>
<template
#cell(source)=
"
{ item }">
<template
#cell(source)=
"
{ item }">
<template
v-if=
"item.import_url"
>
<template
v-if=
"item.import_url"
>
<gl-link
v-if=
"isHTTP(item.import_url)"
:href=
"item.import_url"
target=
"_blank"
>
<gl-link
v-if=
"hasHttpProtocol(item.import_url)"
:href=
"item.import_url"
target=
"_blank"
>
{{
item
.
import_url
}}
{{
item
.
import_url
}}
<gl-icon
name=
"external-link"
class=
"gl-vertical-align-middle"
/>
<gl-icon
name=
"external-link"
class=
"gl-vertical-align-middle"
/>
</gl-link>
</gl-link>
...
@@ -183,7 +192,7 @@ export default {
...
@@ -183,7 +192,7 @@ export default {
:page-info=
"pageInfo"
:page-info=
"pageInfo"
class=
"gl-m-0 gl-mt-3"
class=
"gl-m-0 gl-mt-3"
@
set-page=
"paginationConfig.page = $event"
@
set-page=
"paginationConfig.page = $event"
@
set-page-size=
"
paginationConfig.perPage = $event
"
@
set-page-size=
"
setPageSize
"
/>
/>
</template>
</template>
</div>
</div>
...
...
spec/frontend/pages/import/history/import_history_app_spec.js
View file @
59b84720
...
@@ -6,6 +6,7 @@ import ImportErrorDetails from '~/pages/import/history/components/import_error_d
...
@@ -6,6 +6,7 @@ import ImportErrorDetails from '~/pages/import/history/components/import_error_d
import
ImportHistoryApp
from
'
~/pages/import/history/components/import_history_app.vue
'
;
import
ImportHistoryApp
from
'
~/pages/import/history/components/import_history_app.vue
'
;
import
PaginationBar
from
'
~/vue_shared/components/pagination_bar/pagination_bar.vue
'
;
import
PaginationBar
from
'
~/vue_shared/components/pagination_bar/pagination_bar.vue
'
;
import
{
extendedWrapper
}
from
'
helpers/vue_test_utils_helper
'
;
import
{
extendedWrapper
}
from
'
helpers/vue_test_utils_helper
'
;
import
{
stubComponent
}
from
'
helpers/stub_component
'
;
describe
(
'
ImportHistoryApp
'
,
()
=>
{
describe
(
'
ImportHistoryApp
'
,
()
=>
{
const
API_URL
=
'
/api/v4/projects.json
'
;
const
API_URL
=
'
/api/v4/projects.json
'
;
...
@@ -37,9 +38,9 @@ describe('ImportHistoryApp', () => {
...
@@ -37,9 +38,9 @@ describe('ImportHistoryApp', () => {
import_status
:
'
failed
'
,
import_status
:
'
failed
'
,
},
},
{
{
id
:
2
,
id
:
3
,
name_with_namespace
:
'
Administrator / Dummy
'
,
name_with_namespace
:
'
Administrator / Dummy
'
,
path_with_namespace
:
'
root/dummy
'
,
path_with_namespace
:
'
root/dummy
2
'
,
created_at
:
'
2022-03-09T11:23:04.974Z
'
,
created_at
:
'
2022-03-09T11:23:04.974Z
'
,
import_url
:
'
git://non-http.url
'
,
import_url
:
'
git://non-http.url
'
,
import_type
:
'
gi
'
,
import_type
:
'
gi
'
,
...
@@ -51,7 +52,10 @@ describe('ImportHistoryApp', () => {
...
@@ -51,7 +52,10 @@ describe('ImportHistoryApp', () => {
function
createComponent
({
shallow
=
true
}
=
{})
{
function
createComponent
({
shallow
=
true
}
=
{})
{
const
mountFn
=
shallow
?
shallowMount
:
mount
;
const
mountFn
=
shallow
?
shallowMount
:
mount
;
wrapper
=
mountFn
(
ImportHistoryApp
);
wrapper
=
mountFn
(
ImportHistoryApp
,
shallow
?
{
stubs
:
{
GlTable
:
{
...
stubComponent
(
GlTable
),
props
:
[
'
items
'
]
}
}
}
:
{},
);
}
}
const
originalApiVersion
=
gon
.
api_version
;
const
originalApiVersion
=
gon
.
api_version
;
...
@@ -94,8 +98,7 @@ describe('ImportHistoryApp', () => {
...
@@ -94,8 +98,7 @@ describe('ImportHistoryApp', () => {
const
table
=
wrapper
.
find
(
GlTable
);
const
table
=
wrapper
.
find
(
GlTable
);
expect
(
table
.
exists
()).
toBe
(
true
);
expect
(
table
.
exists
()).
toBe
(
true
);
// can't use .props() or .attributes() here
expect
(
table
.
props
().
items
).
toStrictEqual
(
DUMMY_RESPONSE
);
expect
(
table
.
vm
.
$attrs
.
items
).
toHaveLength
(
DUMMY_RESPONSE
.
length
);
});
});
it
(
'
changes page when requested by pagination bar
'
,
async
()
=>
{
it
(
'
changes page when requested by pagination bar
'
,
async
()
=>
{
...
@@ -106,11 +109,25 @@ describe('ImportHistoryApp', () => {
...
@@ -106,11 +109,25 @@ describe('ImportHistoryApp', () => {
await
axios
.
waitForAll
();
await
axios
.
waitForAll
();
mock
.
resetHistory
();
mock
.
resetHistory
();
const
FAKE_NEXT_PAGE_REPLY
=
[
{
id
:
4
,
path_with_namespace
:
'
root/some_other_project
'
,
created_at
:
'
2022-03-10T15:10:03.172Z
'
,
import_url
:
null
,
import_type
:
'
gitlab_project
'
,
import_status
:
'
finished
'
,
},
];
mock
.
onGet
(
API_URL
).
reply
(
200
,
FAKE_NEXT_PAGE_REPLY
,
DEFAULT_HEADERS
);
wrapper
.
findComponent
(
PaginationBar
).
vm
.
$emit
(
'
set-page
'
,
NEW_PAGE
);
wrapper
.
findComponent
(
PaginationBar
).
vm
.
$emit
(
'
set-page
'
,
NEW_PAGE
);
await
axios
.
waitForAll
();
await
axios
.
waitForAll
();
expect
(
mock
.
history
.
get
.
length
).
toBe
(
1
);
expect
(
mock
.
history
.
get
.
length
).
toBe
(
1
);
expect
(
mock
.
history
.
get
[
0
].
params
).
toStrictEqual
(
expect
.
objectContaining
({
page
:
NEW_PAGE
}));
expect
(
mock
.
history
.
get
[
0
].
params
).
toStrictEqual
(
expect
.
objectContaining
({
page
:
NEW_PAGE
}));
expect
(
wrapper
.
find
(
GlTable
).
props
().
items
).
toStrictEqual
(
FAKE_NEXT_PAGE_REPLY
);
});
});
});
});
...
@@ -131,6 +148,25 @@ describe('ImportHistoryApp', () => {
...
@@ -131,6 +148,25 @@ describe('ImportHistoryApp', () => {
);
);
});
});
it
(
'
resets page to 1 when page size is changed
'
,
async
()
=>
{
const
NEW_PAGE_SIZE
=
4
;
mock
.
onGet
(
API_URL
).
reply
(
200
,
DUMMY_RESPONSE
,
DEFAULT_HEADERS
);
createComponent
();
await
axios
.
waitForAll
();
wrapper
.
findComponent
(
PaginationBar
).
vm
.
$emit
(
'
set-page
'
,
2
);
await
axios
.
waitForAll
();
mock
.
resetHistory
();
wrapper
.
findComponent
(
PaginationBar
).
vm
.
$emit
(
'
set-page-size
'
,
NEW_PAGE_SIZE
);
await
axios
.
waitForAll
();
expect
(
mock
.
history
.
get
.
length
).
toBe
(
1
);
expect
(
mock
.
history
.
get
[
0
].
params
).
toStrictEqual
(
expect
.
objectContaining
({
per_page
:
NEW_PAGE_SIZE
,
page
:
1
}),
);
});
describe
(
'
details button
'
,
()
=>
{
describe
(
'
details button
'
,
()
=>
{
beforeEach
(()
=>
{
beforeEach
(()
=>
{
mock
.
onGet
(
API_URL
).
reply
(
200
,
DUMMY_RESPONSE
,
DEFAULT_HEADERS
);
mock
.
onGet
(
API_URL
).
reply
(
200
,
DUMMY_RESPONSE
,
DEFAULT_HEADERS
);
...
...
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