2023-07-24 14:11:09 +05:30
|
|
|
/*
|
|
|
|
* Copyright 2023 Collate.
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
* limitations under the License.
|
|
|
|
*/
|
|
|
|
// eslint-disable-next-line spaced-comment
|
|
|
|
/// <reference types="cypress" />
|
|
|
|
|
|
|
|
import {
|
|
|
|
interceptURL,
|
|
|
|
toastNotification,
|
|
|
|
verifyResponseStatusCode,
|
|
|
|
visitEntityDetailsPage,
|
|
|
|
} from '../../common/common';
|
2023-07-26 15:20:01 +05:30
|
|
|
import {
|
|
|
|
createAndUpdateDescriptionTask,
|
|
|
|
editAssignee,
|
|
|
|
verifyTaskDetails,
|
|
|
|
} from '../../common/TaskUtils';
|
2023-07-24 14:11:09 +05:30
|
|
|
import { SEARCH_ENTITY_TABLE } from '../../constants/constants';
|
|
|
|
|
|
|
|
describe('Task flow should work', () => {
|
|
|
|
beforeEach(() => {
|
|
|
|
cy.login();
|
|
|
|
interceptURL('GET', '/api/v1/permissions/*/name/*', 'entityPermission');
|
|
|
|
interceptURL('GET', '/api/v1/feed/count?entityLink=*', 'entityFeed');
|
|
|
|
interceptURL('GET', '/api/v1/search/suggest?q=*', 'suggestApi');
|
|
|
|
interceptURL('PUT', '/api/v1/feed/tasks/*/resolve', 'taskResolve');
|
|
|
|
interceptURL(
|
|
|
|
'GET',
|
2023-09-20 23:17:54 +05:30
|
|
|
`/api/v1/search/query?q=*%20AND%20disabled:false&index=tag_search_index*`,
|
2023-07-24 14:11:09 +05:30
|
|
|
'suggestTag'
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
2023-07-28 16:46:34 +05:30
|
|
|
const assignee = 'adam_rodriguez9';
|
2023-07-24 14:11:09 +05:30
|
|
|
const tag = 'Personal';
|
|
|
|
|
|
|
|
const createTagTask = (value) => {
|
|
|
|
interceptURL('POST', 'api/v1/feed', 'createTask');
|
|
|
|
|
|
|
|
cy.get('#title').should(
|
|
|
|
'have.value',
|
2023-07-28 16:46:34 +05:30
|
|
|
value.tagCount > 0
|
|
|
|
? `Update tags for table ${value.term}`
|
|
|
|
: `Request tags for table ${value.term}`
|
2023-07-24 14:11:09 +05:30
|
|
|
);
|
|
|
|
|
|
|
|
cy.get('[data-testid="select-assignee"] > .ant-select-selector').type(
|
|
|
|
assignee
|
|
|
|
);
|
|
|
|
// select value from dropdown
|
|
|
|
verifyResponseStatusCode('@suggestApi', 200);
|
|
|
|
|
|
|
|
cy.get(`[data-testid="assignee-option-${assignee}"]`)
|
|
|
|
.trigger('mouseover')
|
|
|
|
.trigger('click');
|
|
|
|
|
|
|
|
cy.clickOutside();
|
2023-07-28 16:46:34 +05:30
|
|
|
if (value.tagCount > 0) {
|
|
|
|
cy.get('[data-testid="tag-selector"]')
|
|
|
|
.find('[data-testid="remove-tags"]')
|
|
|
|
.each(($btn) => {
|
|
|
|
cy.wrap($btn).click();
|
|
|
|
});
|
|
|
|
}
|
2023-07-24 14:11:09 +05:30
|
|
|
cy.get('[data-testid="tag-selector"]').click().type(tag);
|
|
|
|
|
|
|
|
verifyResponseStatusCode('@suggestTag', 200);
|
|
|
|
cy.get('[data-testid="tag-PersonalData.Personal"]').click();
|
|
|
|
|
|
|
|
cy.get('[data-testid="tags-label"]').click();
|
|
|
|
|
|
|
|
cy.get('button[type="submit"]').click();
|
|
|
|
verifyResponseStatusCode('@createTask', 201);
|
|
|
|
toastNotification('Task created successfully.');
|
|
|
|
|
|
|
|
// verify the task details
|
2023-07-28 16:46:34 +05:30
|
|
|
verifyTaskDetails(
|
|
|
|
value.tagCount > 0
|
|
|
|
? /#(\d+) UpdateTagfortags/
|
|
|
|
: /#(\d+) RequestTagfortags/
|
|
|
|
);
|
2023-07-24 14:11:09 +05:30
|
|
|
|
|
|
|
// edit task assignees
|
|
|
|
editAssignee();
|
|
|
|
|
|
|
|
// Accept the description suggestion which is created
|
|
|
|
cy.get('.ant-btn-compact-first-item').contains('Accept Suggestion').click();
|
|
|
|
|
|
|
|
verifyResponseStatusCode('@taskResolve', 200);
|
|
|
|
|
|
|
|
toastNotification('Task resolved successfully');
|
|
|
|
|
|
|
|
verifyResponseStatusCode('@entityFeed', 200);
|
|
|
|
};
|
|
|
|
|
|
|
|
it('Task flow for table description', () => {
|
|
|
|
const value = SEARCH_ENTITY_TABLE.table_1;
|
|
|
|
interceptURL('GET', `/api/v1/${value.entity}/name/*`, 'getEntityDetails');
|
|
|
|
|
|
|
|
visitEntityDetailsPage(value.term, value.serviceName, value.entity);
|
|
|
|
|
|
|
|
cy.get('[data-testid="request-description"]').click();
|
|
|
|
|
2023-07-28 16:46:34 +05:30
|
|
|
cy.wait('@getEntityDetails').then((res) => {
|
|
|
|
const entity = res.response.body;
|
|
|
|
|
|
|
|
// create description task
|
2023-07-24 14:11:09 +05:30
|
|
|
|
2023-07-28 16:46:34 +05:30
|
|
|
createAndUpdateDescriptionTask({
|
|
|
|
...value,
|
|
|
|
term: entity.displayName ?? entity.name,
|
|
|
|
});
|
|
|
|
});
|
2023-07-24 14:11:09 +05:30
|
|
|
});
|
|
|
|
|
|
|
|
it('Task flow for table tags', () => {
|
|
|
|
const value = SEARCH_ENTITY_TABLE.table_1;
|
|
|
|
interceptURL('GET', `/api/v1/${value.entity}/name/*`, 'getEntityDetails');
|
|
|
|
|
|
|
|
visitEntityDetailsPage(value.term, value.serviceName, value.entity);
|
|
|
|
|
|
|
|
cy.get('[data-testid="request-entity-tags"]').click();
|
|
|
|
|
2023-07-28 16:46:34 +05:30
|
|
|
cy.wait('@getEntityDetails').then((res) => {
|
|
|
|
const entity = res.response.body;
|
|
|
|
|
|
|
|
// create tag task
|
|
|
|
createTagTask({
|
|
|
|
...value,
|
|
|
|
term: entity.displayName ?? entity.name,
|
|
|
|
tagCount: entity.tags.length ?? 0,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
it('Cleanup', () => {
|
|
|
|
const value = SEARCH_ENTITY_TABLE.table_1;
|
|
|
|
interceptURL('GET', `/api/v1/${value.entity}/name/*`, 'getEntityDetails');
|
|
|
|
|
|
|
|
visitEntityDetailsPage(value.term, value.serviceName, value.entity);
|
2023-07-24 14:11:09 +05:30
|
|
|
|
2023-07-28 16:46:34 +05:30
|
|
|
cy.get(
|
|
|
|
'[data-testid="entity-right-panel"] [data-testid="tags-container"] [data-testid="edit-button"]'
|
|
|
|
).click();
|
|
|
|
cy.get('[data-testid="remove-tags"]').click();
|
|
|
|
cy.get('[data-testid="saveAssociatedTag"]').click();
|
2023-07-24 14:11:09 +05:30
|
|
|
});
|
|
|
|
});
|