Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
e4503e5d77
commit
93f2849ea5
9 changed files with 79 additions and 17 deletions
|
@ -139,6 +139,8 @@ proper-names:
|
|||
"unicorn-worker-killer",
|
||||
"URL",
|
||||
"WebdriverIO",
|
||||
"Workload Identity Pool",
|
||||
"Workload Identity Provider",
|
||||
"YAML",
|
||||
"YouTrack"
|
||||
]
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.3 KiB |
Binary file not shown.
Before Width: | Height: | Size: 870 B After Width: | Height: | Size: 1 KiB |
|
@ -33,20 +33,51 @@ export const fetchAwards = async ({ commit, dispatch, state }, page = '1') => {
|
|||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Creates an intermediary award, used for display
|
||||
* until the real award is loaded from the backend.
|
||||
*/
|
||||
const newOptimisticAward = (name, state) => {
|
||||
const freeId = Math.min(...state.awards.map((a) => a.id), Number.MAX_SAFE_INTEGER) - 1;
|
||||
return {
|
||||
id: freeId,
|
||||
name,
|
||||
user: {
|
||||
id: window.gon.current_user_id,
|
||||
name: window.gon.current_user_fullname,
|
||||
username: window.gon.current_username,
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
export const toggleAward = async ({ commit, state }, name) => {
|
||||
const award = state.awards.find((a) => a.name === name && a.user.id === state.currentUserId);
|
||||
|
||||
try {
|
||||
if (award) {
|
||||
await axios.delete(joinPaths(gon.relative_url_root || '', `${state.path}/${award.id}`));
|
||||
|
||||
commit(REMOVE_AWARD, award.id);
|
||||
|
||||
await axios
|
||||
.delete(joinPaths(gon.relative_url_root || '', `${state.path}/${award.id}`))
|
||||
.catch((err) => {
|
||||
commit(ADD_NEW_AWARD, award);
|
||||
|
||||
throw err;
|
||||
});
|
||||
|
||||
showToast(__('Award removed'));
|
||||
} else {
|
||||
const { data } = await axios.post(joinPaths(gon.relative_url_root || '', state.path), {
|
||||
name,
|
||||
});
|
||||
const optimisticAward = newOptimisticAward(name, state);
|
||||
|
||||
commit(ADD_NEW_AWARD, optimisticAward);
|
||||
|
||||
const { data } = await axios
|
||||
.post(joinPaths(gon.relative_url_root || '', state.path), {
|
||||
name,
|
||||
})
|
||||
.finally(() => {
|
||||
commit(REMOVE_AWARD, optimisticAward.id);
|
||||
});
|
||||
|
||||
commit(ADD_NEW_AWARD, data);
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ GET /projects/:id/merge_requests/:merge_request_iid/status_checks
|
|||
"id": 2,
|
||||
"name": "Rule 1",
|
||||
"external_url": "https://gitlab.com/test-endpoint",
|
||||
"status": "approved"
|
||||
"status": "pass"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
|
@ -60,6 +60,7 @@ POST /projects/:id/merge_requests/:merge_request_iid/status_check_responses
|
|||
| `merge_request_iid` | integer | yes | IID of a merge request |
|
||||
| `sha` | string | yes | SHA at `HEAD` of the source branch |
|
||||
| `external_status_check_id` | integer | yes | ID of an external status check |
|
||||
| `status` | string | no | Set to `pass` to pass the check |
|
||||
|
||||
NOTE:
|
||||
`sha` must be the SHA at the `HEAD` of the merge request's source branch.
|
||||
|
|
|
@ -105,6 +105,8 @@ Existing:
|
|||
**Expire access tokens** to enable them.
|
||||
- Tokens must be [revoked](../api/oauth2.md#revoke-a-token) or they don't expire.
|
||||
|
||||
When applications are deleted, all grants and tokens associated with the application are also deleted.
|
||||
|
||||
## Authorized applications
|
||||
|
||||
Every application you authorize with your GitLab credentials is shown
|
||||
|
|
|
@ -13,10 +13,10 @@ module QA
|
|||
let(:package_version) { '1.3.7' }
|
||||
let(:package_type) { 'maven_gradle' }
|
||||
|
||||
where(:authentication_token_type, :maven_header_name, :testcase) do
|
||||
:personal_access_token | 'Private-Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347601'
|
||||
:ci_job_token | 'Job-Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347603'
|
||||
:project_deploy_token | 'Deploy-Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347602'
|
||||
where(:case_name, :authentication_token_type, :maven_header_name, :testcase) do
|
||||
'using personal access token' | :personal_access_token | 'Private-Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347601'
|
||||
'using ci job token' | :ci_job_token | 'Job-Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347603'
|
||||
'using project deploy token' | :project_deploy_token | 'Deploy-Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347602'
|
||||
end
|
||||
|
||||
with_them do
|
||||
|
@ -31,7 +31,7 @@ module QA
|
|||
end
|
||||
end
|
||||
|
||||
it "pushes and pulls a maven package via gradle using #{params[:authentication_token_type]}", testcase: params[:testcase] do
|
||||
it 'pushes and pulls a maven package via gradle', testcase: params[:testcase] do
|
||||
Support::Retrier.retry_on_exception(max_attempts: 3, sleep_interval: 2) do
|
||||
Resource::Repository::Commit.fabricate_via_api! do |commit|
|
||||
gradle_upload_yaml = ERB.new(read_fixture('package_managers/maven', 'gradle_upload_package.yaml.erb')).result(binding)
|
||||
|
|
|
@ -27,6 +27,7 @@ RSpec.describe 'Merge request > User awards emoji', :js do
|
|||
|
||||
it 'removes award from merge request' do
|
||||
first('[data-testid="award-button"]').click
|
||||
expect(first('[data-testid="award-button"]')).to have_content '1'
|
||||
find('[data-testid="award-button"].selected').click
|
||||
expect(first('[data-testid="award-button"]')).to have_content '0'
|
||||
|
||||
|
|
|
@ -87,6 +87,26 @@ describe('Awards app actions', () => {
|
|||
describe('toggleAward', () => {
|
||||
let mock;
|
||||
|
||||
const optimisticAwardId = Number.MAX_SAFE_INTEGER - 1;
|
||||
const makeOptimisticAddMutation = (
|
||||
id = optimisticAwardId,
|
||||
name = null,
|
||||
userId = window.gon.current_user_id,
|
||||
) => ({
|
||||
type: 'ADD_NEW_AWARD',
|
||||
payload: {
|
||||
id,
|
||||
name,
|
||||
user: {
|
||||
id: userId,
|
||||
},
|
||||
},
|
||||
});
|
||||
const makeOptimisticRemoveMutation = (id = optimisticAwardId) => ({
|
||||
type: 'REMOVE_AWARD',
|
||||
payload: id,
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
mock = new MockAdapter(axios);
|
||||
});
|
||||
|
@ -110,8 +130,10 @@ describe('Awards app actions', () => {
|
|||
mock.onPost(`${relativeRootUrl || ''}/awards`).reply(200, { id: 1 });
|
||||
});
|
||||
|
||||
it('commits ADD_NEW_AWARD', async () => {
|
||||
it('adds an optimistic award, removes it, and then commits ADD_NEW_AWARD', async () => {
|
||||
testAction(actions.toggleAward, null, { path: '/awards', awards: [] }, [
|
||||
makeOptimisticAddMutation(),
|
||||
makeOptimisticRemoveMutation(),
|
||||
{ type: 'ADD_NEW_AWARD', payload: { id: 1 } },
|
||||
]);
|
||||
});
|
||||
|
@ -127,7 +149,7 @@ describe('Awards app actions', () => {
|
|||
actions.toggleAward,
|
||||
null,
|
||||
{ path: '/awards', awards: [] },
|
||||
[],
|
||||
[makeOptimisticAddMutation(), makeOptimisticRemoveMutation()],
|
||||
[],
|
||||
() => {
|
||||
expect(Sentry.captureException).toHaveBeenCalled();
|
||||
|
@ -137,7 +159,7 @@ describe('Awards app actions', () => {
|
|||
});
|
||||
});
|
||||
|
||||
describe('removing a award', () => {
|
||||
describe('removing an award', () => {
|
||||
const mockData = { id: 1, name: 'thumbsup', user: { id: 1 } };
|
||||
|
||||
describe('success', () => {
|
||||
|
@ -160,6 +182,9 @@ describe('Awards app actions', () => {
|
|||
});
|
||||
|
||||
describe('error', () => {
|
||||
const currentUserId = 1;
|
||||
const name = 'thumbsup';
|
||||
|
||||
beforeEach(() => {
|
||||
mock.onDelete(`${relativeRootUrl || ''}/awards/1`).reply(500);
|
||||
});
|
||||
|
@ -167,13 +192,13 @@ describe('Awards app actions', () => {
|
|||
it('calls Sentry.captureException', async () => {
|
||||
await testAction(
|
||||
actions.toggleAward,
|
||||
'thumbsup',
|
||||
name,
|
||||
{
|
||||
path: '/awards',
|
||||
currentUserId: 1,
|
||||
currentUserId,
|
||||
awards: [mockData],
|
||||
},
|
||||
[],
|
||||
[makeOptimisticRemoveMutation(1), makeOptimisticAddMutation(1, name, currentUserId)],
|
||||
[],
|
||||
() => {
|
||||
expect(Sentry.captureException).toHaveBeenCalled();
|
||||
|
|
Loading…
Reference in a new issue