Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2020-01-17 03:09:17 +00:00
parent efb0c7f501
commit d9e821dbd9
11 changed files with 108 additions and 13 deletions

View File

@ -1 +1 @@
1.13.0
1.12.0

View File

@ -47,6 +47,11 @@ export default {
thClass: 'w-15p',
tdClass: 'table-col d-flex align-items-center d-sm-table-cell',
},
{
key: 'ignore',
label: '',
tdClass: 'table-col d-flex align-items-center d-sm-table-cell',
},
{
key: 'details',
tdClass: 'table-col d-sm-none d-flex align-items-center',
@ -97,6 +102,14 @@ export default {
type: Boolean,
required: true,
},
projectPath: {
type: String,
required: true,
},
listPath: {
type: String,
required: true,
},
},
hasLocalStorage: AccessorUtils.isLocalStorageAccessSafe(),
data() {
@ -144,6 +157,7 @@ export default {
'loadRecentSearches',
'setIndexPath',
'fetchPaginatedResults',
'updateStatus',
]),
setSearchText(text) {
this.errorSearchQuery = text;
@ -166,6 +180,16 @@ export default {
isCurrentSortField(field) {
return field === this.sortField;
},
getIssueUpdatePath(errorId) {
return `/${this.projectPath}/-/error_tracking/${errorId}.json`;
},
updateIssueStatus(errorId, status) {
this.updateStatus({
endpoint: this.getIssueUpdatePath(errorId),
redirectUrl: this.listPath,
status,
});
},
},
};
</script>
@ -299,6 +323,16 @@ export default {
<time-ago :time="errors.item.lastSeen" class="text-secondary" />
</div>
</template>
<template v-slot:ignore="errors">
<gl-button
ref="ignoreError"
v-gl-tooltip.hover
:title="__('Ignore')"
@click="updateIssueStatus(errors.item.id, 'ignored')"
>
<gl-icon name="eye-slash" :size="12" />
</gl-button>
</template>
<template v-slot:details="errors">
<gl-button
:href="getDetailsLink(errors.item.id)"

View File

@ -13,7 +13,13 @@ export default () => {
store,
render(createElement) {
const domEl = document.querySelector(this.$options.el);
const { indexPath, enableErrorTrackingLink, illustrationPath } = domEl.dataset;
const {
indexPath,
enableErrorTrackingLink,
illustrationPath,
projectPath,
listPath,
} = domEl.dataset;
let { errorTrackingEnabled, userCanEnableErrorTracking } = domEl.dataset;
errorTrackingEnabled = parseBoolean(errorTrackingEnabled);
@ -26,6 +32,8 @@ export default () => {
errorTrackingEnabled,
illustrationPath,
userCanEnableErrorTracking,
projectPath,
listPath,
},
});
},

View File

@ -21,8 +21,8 @@ export const createStore = () =>
list: {
namespaced: true,
state: listState(),
actions: listActions,
mutations: listMutations,
actions: { ...actions, ...listActions },
mutations: { ...mutations, ...listMutations },
},
details: {
namespaced: true,

View File

@ -10,6 +10,8 @@ module Projects::ErrorTrackingHelper
'user-can-enable-error-tracking' => can?(current_user, :admin_operations, project).to_s,
'enable-error-tracking-link' => project_settings_operations_path(project),
'error-tracking-enabled' => error_tracking_enabled.to_s,
'project-path' => project.full_path,
'list-path' => project_error_tracking_index_path(project),
'illustration-path' => image_path('illustrations/cluster_popover.svg')
}
end

View File

@ -0,0 +1,5 @@
---
title: Implement ability to ignore Sentry errrors from the list view
merge_request: 22819
author:
type: added

View File

@ -1,5 +0,0 @@
---
title: Upgrade Pages to 1.13.0
merge_request: 23023
author:
type: added

View File

@ -14,7 +14,7 @@ document more information about using branches to work together.
Forking a project is in most cases a two-step process.
1. Click on the fork button located located in between the star and clone buttons on the project's home page.
1. Click on the fork button located in between the star and clone buttons on the project's home page.
![Fork button](img/forking_workflow_fork_button.png)

View File

@ -31,6 +31,8 @@ describe('ErrorTrackingList', () => {
store,
propsData: {
indexPath: '/path',
listPath: '/error_tracking',
projectPath: 'project/test',
enableErrorTrackingLink: '/link',
userCanEnableErrorTracking,
errorTrackingEnabled,
@ -59,6 +61,7 @@ describe('ErrorTrackingList', () => {
searchByQuery: jest.fn(),
sortByField: jest.fn(),
fetchPaginatedResults: jest.fn(),
updateStatus: jest.fn(),
};
const state = {
@ -139,6 +142,14 @@ describe('ErrorTrackingList', () => {
});
});
it('each error in the list should have an ignore button', () => {
const error = wrapper.findAll('tbody tr');
error.wrappers.forEach((_, index) => {
expect(error.at(index).exists('glicon-stub[name="eye-slash"]')).toBe(true);
});
});
describe('filtering', () => {
const findSearchBox = () => wrapper.find(GlFormInput);
@ -205,6 +216,35 @@ describe('ErrorTrackingList', () => {
});
});
describe('When the ignore button on an error is clicked', () => {
beforeEach(() => {
store.state.list.loading = false;
store.state.list.errors = errorsList;
mountComponent({
stubs: {
GlTable: false,
GlLink: false,
GlButton: false,
},
});
});
it('sends the "ignored" status and error ID', () => {
const ignoreButton = wrapper.find({ ref: 'ignoreError' });
ignoreButton.trigger('click');
expect(actions.updateStatus).toHaveBeenCalledWith(
expect.anything(),
{
endpoint: '/project/test/-/error_tracking/3.json',
redirectUrl: '/error_tracking',
status: 'ignored',
},
undefined,
);
});
});
describe('When error tracking is disabled and user is not allowed to enable it', () => {
beforeEach(() => {
mountComponent({

View File

@ -11,6 +11,8 @@ describe Projects::ErrorTrackingHelper do
describe '#error_tracking_data' do
let(:can_enable_error_tracking) { true }
let(:setting_path) { project_settings_operations_path(project) }
let(:list_path) { project_error_tracking_index_path(project) }
let(:project_path) { project.full_path }
let(:index_path) do
project_error_tracking_index_path(project, format: :json)
@ -30,6 +32,8 @@ describe Projects::ErrorTrackingHelper do
'user-can-enable-error-tracking' => 'true',
'enable-error-tracking-link' => setting_path,
'error-tracking-enabled' => 'false',
'list-path' => list_path,
'project-path' => project_path,
'illustration-path' => match_asset_path('/assets/illustrations/cluster_popover.svg')
)
end

View File

@ -17,6 +17,7 @@ describe 'Test coverage of the Project Import' do
# opening a follow-up issue to fix this.
MUTED_RELATIONS = %w[
project.milestones.events.push_event_payload
project.issues.events
project.issues.events.push_event_payload
project.issues.notes.events
project.issues.notes.events.push_event_payload
@ -55,13 +56,19 @@ describe 'Test coverage of the Project Import' do
# Note that we use separate fixture to test ee-only features.
# Most of the relations are present in `complex/project.json`
# which is our main fixture.
PROJECT_JSON_FIXTURES_EE =
if Gitlab.ee?
['ee/spec/fixtures/lib/gitlab/import_export/designs/project.json'].freeze
else
[]
end
PROJECT_JSON_FIXTURES = [
'spec/fixtures/lib/gitlab/import_export/complex/project.json',
'spec/fixtures/lib/gitlab/import_export/group/project.json',
'spec/fixtures/lib/gitlab/import_export/light/project.json',
'spec/fixtures/lib/gitlab/import_export/milestone-iid/project.json',
'ee/spec/fixtures/lib/gitlab/import_export/designs/project.json'
].freeze
'spec/fixtures/lib/gitlab/import_export/milestone-iid/project.json'
].freeze + PROJECT_JSON_FIXTURES_EE
it 'ensures that all imported/exported relations are present in test JSONs' do
not_tested_relations = (relations_from_config - tested_relations) - MUTED_RELATIONS