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
c83e8c06
Commit
c83e8c06
authored
May 19, 2019
by
GitLab Bot
Browse files
Options
Browse Files
Download
Plain Diff
Automatic merge of gitlab-org/gitlab-ce master
parents
2a10454f
7e14fc25
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
56 additions
and
32 deletions
+56
-32
app/views/shared/issuable/_sidebar.html.haml
app/views/shared/issuable/_sidebar.html.haml
+1
-1
changelogs/unreleased/61795-fix-error-when-moving-issues.yml
changelogs/unreleased/61795-fix-error-when-moving-issues.yml
+5
-0
doc/user/project/issues/csv_import.md
doc/user/project/issues/csv_import.md
+13
-7
spec/frontend/serverless/components/function_row_spec.js
spec/frontend/serverless/components/function_row_spec.js
+17
-12
spec/frontend/serverless/components/functions_spec.js
spec/frontend/serverless/components/functions_spec.js
+6
-3
spec/frontend/serverless/components/missing_prometheus_spec.js
...frontend/serverless/components/missing_prometheus_spec.js
+9
-6
spec/frontend/serverless/components/url_spec.js
spec/frontend/serverless/components/url_spec.js
+5
-3
No files found.
app/views/shared/issuable/_sidebar.html.haml
View file @
c83e8c06
...
...
@@ -164,7 +164,7 @@
=
dropdown_content
=
dropdown_loading
=
dropdown_footer
add_content_class:
true
do
%button
.btn.btn-success.sidebar-move-issue-confirmation-button.js-move-issue-confirmation-button
{
disabled:
true
}
%button
.btn.btn-success.sidebar-move-issue-confirmation-button.js-move-issue-confirmation-button
{
type:
'button'
,
disabled:
true
}
=
_
(
'Move'
)
=
icon
(
'spinner spin'
,
class:
'sidebar-move-issue-confirmation-loading-icon'
)
...
...
changelogs/unreleased/61795-fix-error-when-moving-issues.yml
0 → 100644
View file @
c83e8c06
---
title
:
Remove unintended error message shown when moving issues
merge_request
:
28317
author
:
type
:
fixed
doc/user/project/issues/csv_import.md
View file @
c83e8c06
# Importing
I
ssues from CSV
# Importing
i
ssues from CSV
> [Introduced](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/23532) in GitLab 11.7.
Issues can be imported to a project by uploading a CSV file
. Supported fields are
`title`
and
`description`
.
Issues can be imported to a project by uploading a CSV file
with the columns
`title`
and
`description`
, in that order
.
The user uploading the CSV file will be set as the author of the imported issues.
> **Note:** A permission level of `Developer` or higher is required to import issues.
## Prepare for the import
-
Consider importing a test file containing only a few issues. There is no way to undo a large import without using the GitLab API.
-
Ensure your CSV file meets the
[
file format
](
#csv-file-format
)
requirements.
## Import the file
To import issues:
1.
Ensure your CSV file meets the
[
file format
](
#csv-file-format
)
requirements.
1.
Navigate to a project's Issues list page.
1.
If existing issues are present, click the import icon at the top right, next to the
**Edit issues**
button.
1.
For a project without any issues, click the button labeled
**Import CSV**
in the middle of the page.
...
...
@@ -20,11 +26,11 @@ To import issues:
The file is processed in the background and a notification email is sent
to you once the import is completed.
## CSV
File F
ormat
## CSV
file f
ormat
### Header row
CSV files must contain a header row
beginning with at least two columns,
`title`
and
`description`
, in that order
.
CSV files must contain a header row
where the first column header is
`title`
and the second is
`description`
.
If additional columns are present, they will be ignored.
### Column separator
...
...
@@ -53,7 +59,7 @@ The limit depends on the configuration value of Max Attachment Size for the GitL
For GitLab.com, it is set to 10 MB.
## Sample
D
ata
## Sample
d
ata
```
csv
title,description
...
...
spec/frontend/serverless/components/function_row_spec.js
View file @
c83e8c06
import
functionRowComponent
from
'
~/serverless/components/function_row.vue
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
Timeago
from
'
~/vue_shared/components/time_ago_tooltip.vue
'
;
import
{
mockServerlessFunction
}
from
'
../mock_data
'
;
const
createComponent
=
func
=>
shallowMount
(
functionRowComponent
,
{
propsData
:
{
func
},
sync
:
false
}).
vm
;
describe
(
'
functionRowComponent
'
,
()
=>
{
it
(
'
Parses the function details correctly
'
,
()
=>
{
const
vm
=
createComponent
(
mockServerlessFunction
);
let
wrapper
;
expect
(
vm
.
$el
.
querySelector
(
'
b
'
).
innerHTML
).
toEqual
(
mockServerlessFunction
.
name
);
expect
(
vm
.
$el
.
querySelector
(
'
span
'
).
innerHTML
).
toEqual
(
mockServerlessFunction
.
image
);
expect
(
vm
.
$el
.
querySelector
(
'
timeago-stub
'
).
getAttribute
(
'
time
'
)).
not
.
toBe
(
null
)
;
const
createComponent
=
func
=>
{
wrapper
=
shallowMount
(
functionRowComponent
,
{
propsData
:
{
func
},
sync
:
false
}
);
}
;
vm
.
$destroy
();
afterEach
(()
=>
{
wrapper
.
destroy
();
});
it
(
'
Parses the function details correctly
'
,
()
=>
{
createComponent
(
mockServerlessFunction
);
expect
(
wrapper
.
find
(
'
b
'
).
text
()).
toBe
(
mockServerlessFunction
.
name
);
expect
(
wrapper
.
find
(
'
span
'
).
text
()).
toBe
(
mockServerlessFunction
.
image
);
expect
(
wrapper
.
find
(
Timeago
).
attributes
(
'
time
'
)).
not
.
toBe
(
null
);
});
it
(
'
handles clicks correctly
'
,
()
=>
{
const
vm
=
createComponent
(
mockServerlessFunction
);
createComponent
(
mockServerlessFunction
);
const
{
vm
}
=
wrapper
;
expect
(
vm
.
checkClass
(
vm
.
$el
.
querySelector
(
'
p
'
))).
toBe
(
true
);
// check somewhere inside the row
vm
.
$destroy
();
});
});
spec/frontend/serverless/components/functions_spec.js
View file @
c83e8c06
import
Vuex
from
'
vuex
'
;
import
{
GlLoadingIcon
}
from
'
@gitlab/ui
'
;
import
AxiosMockAdapter
from
'
axios-mock-adapter
'
;
import
axios
from
'
~/lib/utils/axios_utils
'
;
import
functionsComponent
from
'
~/serverless/components/functions.vue
'
;
import
{
createLocalVue
,
shallowMount
}
from
'
@vue/test-utils
'
;
import
{
createStore
}
from
'
~/serverless/store
'
;
import
EmptyState
from
'
~/serverless/components/empty_state.vue
'
;
import
EnvironmentRow
from
'
~/serverless/components/environment_row.vue
'
;
import
{
TEST_HOST
}
from
'
helpers/test_constants
'
;
import
{
mockServerlessFunctions
}
from
'
../mock_data
'
;
...
...
@@ -43,7 +46,7 @@ describe('functionsComponent', () => {
sync
:
false
,
});
expect
(
component
.
vm
.
$el
.
querySelector
(
'
emptystate-stub
'
)).
not
.
toBe
(
null
);
expect
(
component
.
find
(
EmptyState
).
exists
()).
toBe
(
true
);
});
it
(
'
should render a loading component
'
,
()
=>
{
...
...
@@ -60,7 +63,7 @@ describe('functionsComponent', () => {
sync
:
false
,
});
expect
(
component
.
vm
.
$el
.
querySelector
(
'
glloadingicon-stub
'
)).
not
.
toBe
(
null
);
expect
(
component
.
find
(
GlLoadingIcon
).
exists
()).
toBe
(
true
);
});
it
(
'
should render empty state when there is no function data
'
,
()
=>
{
...
...
@@ -104,7 +107,7 @@ describe('functionsComponent', () => {
component
.
vm
.
$store
.
dispatch
(
'
receiveFunctionsSuccess
'
,
mockServerlessFunctions
);
return
component
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
component
.
vm
.
$el
.
querySelector
(
'
environmentrow-stub
'
)).
not
.
toBe
(
null
);
expect
(
component
.
find
(
EnvironmentRow
).
exists
()).
toBe
(
true
);
});
});
});
spec/frontend/serverless/components/missing_prometheus_spec.js
View file @
c83e8c06
import
{
GlButton
}
from
'
@gitlab/ui
'
;
import
missingPrometheusComponent
from
'
~/serverless/components/missing_prometheus.vue
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
...
...
@@ -9,27 +10,29 @@ const createComponent = missingData =>
missingData
,
},
sync
:
false
,
})
.
vm
;
});
describe
(
'
missingPrometheusComponent
'
,
()
=>
{
let
vm
;
let
wrapper
;
afterEach
(()
=>
{
vm
.
$
destroy
();
wrapper
.
destroy
();
});
it
(
'
should render missing prometheus message
'
,
()
=>
{
vm
=
createComponent
(
false
);
wrapper
=
createComponent
(
false
);
const
{
vm
}
=
wrapper
;
expect
(
vm
.
$el
.
querySelector
(
'
.state-description
'
).
innerHTML
.
trim
()).
toContain
(
'
Function invocation metrics require Prometheus to be installed first.
'
,
);
expect
(
vm
.
$el
.
querySelector
(
'
glbutton-stub
'
).
getAttribute
(
'
variant
'
)).
toEqual
(
'
success
'
);
expect
(
wrapper
.
find
(
GlButton
).
attributes
(
'
variant
'
)).
toBe
(
'
success
'
);
});
it
(
'
should render no prometheus data message
'
,
()
=>
{
vm
=
createComponent
(
true
);
wrapper
=
createComponent
(
true
);
const
{
vm
}
=
wrapper
;
expect
(
vm
.
$el
.
querySelector
(
'
.state-description
'
).
innerHTML
.
trim
()).
toContain
(
'
Invocation metrics loading or not available at this time.
'
,
...
...
spec/frontend/serverless/components/url_spec.js
View file @
c83e8c06
import
Vue
from
'
vue
'
;
import
urlComponent
from
'
~/serverless/components/url.vue
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
ClipboardButton
from
'
~/vue_shared/components/clipboard_button.vue
'
;
const
createComponent
=
uri
=>
shallowMount
(
Vue
.
extend
(
urlComponent
),
{
...
...
@@ -8,15 +9,16 @@ const createComponent = uri =>
uri
,
},
sync
:
false
,
})
.
vm
;
});
describe
(
'
urlComponent
'
,
()
=>
{
it
(
'
should render correctly
'
,
()
=>
{
const
uri
=
'
http://testfunc.apps.example.com
'
;
const
vm
=
createComponent
(
uri
);
const
wrapper
=
createComponent
(
uri
);
const
{
vm
}
=
wrapper
;
expect
(
vm
.
$el
.
classList
.
contains
(
'
clipboard-group
'
)).
toBe
(
true
);
expect
(
vm
.
$el
.
querySelector
(
'
clipboardbutton-stub
'
).
getAttribute
(
'
text
'
)).
toEqual
(
uri
);
expect
(
wrapper
.
find
(
ClipboardButton
).
attributes
(
'
text
'
)).
toEqual
(
uri
);
expect
(
vm
.
$el
.
querySelector
(
'
.url-text-field
'
).
innerHTML
).
toEqual
(
uri
);
...
...
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