Skip to content

Commit

Permalink
feat: move publication status logic in backend (#1355)
Browse files Browse the repository at this point in the history
  • Loading branch information
ReidyT committed Jul 18, 2024
1 parent ef1ef37 commit 50b2ae9
Show file tree
Hide file tree
Showing 21 changed files with 114 additions and 230 deletions.
2 changes: 1 addition & 1 deletion cypress/e2e/item/publish/coEditorSettings.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ it('Change choice', () => {
const item = ITEM_WITH_CATEGORIES_CONTEXT.items[0];
const newOptionValue = DISPLAY_CO_EDITORS_OPTIONS.NO.value;

cy.wait('@getLatestValidationGroup').then(() => {
cy.wait('@getPublicationStatus').then(() => {
cy.get(buildDataCyWrapper(CO_EDITOR_SETTINGS_CHECKBOX_ID)).click();
});

Expand Down
31 changes: 23 additions & 8 deletions cypress/e2e/item/publish/publishedItem.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,10 @@ import {
PackedFolderItemFactory,
PackedItem,
PermissionLevel,
PublicationStatus,
PublishableItemTypeChecker,
} from '@graasp/sdk';

import { PublicationStatus } from '@/types/publication';

import { buildItemPath } from '../../../../src/config/paths';
import {
EMAIL_NOTIFICATION_CHECKBOX,
Expand All @@ -37,14 +36,22 @@ const openPublishItemTab = (id: string) => {
const setUpAndVisitItemPage = (
item: PackedItem | ItemForTest,
{
itemPublicationStatus,
itemValidationGroups,
currentMember,
}: {
itemPublicationStatus?: PublicationStatus;
itemValidationGroups?: ItemValidationGroup[];
currentMember?: Member | null;
} = {},
) => {
cy.setUpApi({ items: [item], itemValidationGroups, currentMember });
cy.setUpApi({
items: [item],
itemValidationGroups,
currentMember,
itemPublicationStatus:
itemPublicationStatus ?? PublicationStatus.Unpublished,
});
cy.visit(buildItemPath(item.id));
};

Expand Down Expand Up @@ -125,7 +132,7 @@ describe('Private Item', () => {
const status = PublicationStatus.Unpublished;

beforeEach(() => {
setUpAndVisitItemPage(privateItem);
setUpAndVisitItemPage(privateItem, { itemPublicationStatus: status });
openPublishItemTab(privateItem.id);
});

Expand All @@ -149,6 +156,7 @@ describe('Private Item', () => {

beforeEach(() => {
setUpAndVisitItemPage(privateItem, {
itemPublicationStatus: status,
itemValidationGroups: [itemValidationGroup],
});
openPublishItemTab(privateItem.id);
Expand All @@ -169,23 +177,25 @@ describe('Private Item', () => {
});

describe('Visibility of published item is private again', () => {
const status = PublicationStatus.NotPublic;
const itemValidationGroup = ItemValidationGroupFactory(privateItem);

beforeEach(() => {
setUpAndVisitItemPage(PublishedItemFactory(privateItem), {
itemPublicationStatus: status,
itemValidationGroups: [itemValidationGroup],
});
openPublishItemTab(privateItem.id);
});

it('Publication status should be Not Public', () => {
getPublicationStatusComponent(PublicationStatus.NotPublic)
getPublicationStatusComponent(status)
.should('exist')
.should('be.visible');
});

it('Should ask before change item visility to public', () => {
getPublicationButton(PublicationStatus.NotPublic).click(); // Click on change visibility
getPublicationButton(status).click(); // Click on change visibility
confirmSetItemToPublic();
waitOnSetItemPublic(privateItem);
});
Expand All @@ -199,6 +209,7 @@ describe('Private Item', () => {

beforeEach(() => {
setUpAndVisitItemPage(privateItem, {
itemPublicationStatus: status,
itemValidationGroups: [itemValidationGroup],
});
openPublishItemTab(privateItem.id);
Expand Down Expand Up @@ -226,7 +237,7 @@ describe('Public Item', () => {
const status = PublicationStatus.Unpublished;

beforeEach(() => {
setUpAndVisitItemPage(publicItem);
setUpAndVisitItemPage(publicItem, { itemPublicationStatus: status });
openPublishItemTab(publicItem.id);
});

Expand All @@ -250,6 +261,7 @@ describe('Public Item', () => {

beforeEach(() => {
setUpAndVisitItemPage(PublishedItemFactory(publicItem), {
itemPublicationStatus: status,
itemValidationGroups: [itemValidationGroup],
});
openPublishItemTab(publicItem.id);
Expand All @@ -274,6 +286,7 @@ describe('Public Item', () => {

beforeEach(() => {
setUpAndVisitItemPage(publicItem, {
itemPublicationStatus: status,
itemValidationGroups: [itemValidationGroup],
});
openPublishItemTab(publicItem.id);
Expand Down Expand Up @@ -305,6 +318,7 @@ describe('Public Item', () => {

beforeEach(() => {
setUpAndVisitItemPage(publicItem, {
itemPublicationStatus: status,
itemValidationGroups: [itemValidationGroup],
});
openPublishItemTab(publicItem.id);
Expand All @@ -328,6 +342,7 @@ describe('Public Item', () => {

beforeEach(() => {
setUpAndVisitItemPage(PublishedItemFactory(publicItem), {
itemPublicationStatus: status,
itemValidationGroups: [itemValidationGroup],
});
openPublishItemTab(publicItem.id);
Expand All @@ -352,7 +367,7 @@ describe('Public Item', () => {
statusExpected: PublicationStatus,
) => {
it(testTitle, () => {
setUpAndVisitItemPage(item);
setUpAndVisitItemPage(item, { itemPublicationStatus: statusExpected });
openPublishItemTab(item.id);
getPublicationStatusComponent(statusExpected)
.should('exist')
Expand Down
5 changes: 4 additions & 1 deletion cypress/support/commands.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { CookieKeys } from '@graasp/sdk';
import { CookieKeys, PublicationStatus } from '@graasp/sdk';

import 'cypress-localstorage-commands';

Expand Down Expand Up @@ -64,6 +64,7 @@ import {
mockGetMembersBy,
mockGetOwnItems,
mockGetParents,
mockGetPublicationStatus,
mockGetPublishItemInformations,
mockGetPublishItemsForMember,
mockGetRecycledItems,
Expand Down Expand Up @@ -114,6 +115,7 @@ Cypress.Commands.add(
categories = SAMPLE_CATEGORIES,
itemValidationAndReview = ITEM_VALIDATION_AND_REVIEW,
itemValidationGroups = [],
itemPublicationStatus = PublicationStatus.Unpublished,
deleteItemsError = false,
postItemError = false,
moveItemsError = false,
Expand Down Expand Up @@ -322,6 +324,7 @@ Cypress.Commands.add(

mockUploadInvitationCSV(items, false);

mockGetPublicationStatus(itemPublicationStatus);
mockPublishItem(items);
mockUnpublishItem(items);

Expand Down
20 changes: 14 additions & 6 deletions cypress/support/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import {
Member,
PermissionLevel,
PermissionLevelCompare,
PublicationStatus,
RecycledItemData,
ShortLink,
ShortLinkPayload,
Expand Down Expand Up @@ -55,7 +56,6 @@ const {
buildItemUnpublishRoute,
buildGetItemRoute,
GET_OWN_ITEMS_ROUTE,
buildPostItemMembershipRoute,
buildGetMemberRoute,
buildPostManyItemMembershipsRoute,
ITEMS_ROUTE,
Expand Down Expand Up @@ -96,6 +96,7 @@ const {
buildPostUserCSVUploadRoute,
buildGetPublishedItemsForMemberRoute,
buildItemPublishRoute,
buildGetPublicationStatusRoute,
buildUpdateMemberPasswordRoute,
buildPostItemValidationRoute,
buildGetShortLinkAvailableRoute,
Expand Down Expand Up @@ -595,11 +596,7 @@ export const mockPostItemMembership = (
cy.intercept(
{
method: HttpMethod.Post,
url: new RegExp(
`${API_HOST}/${parseStringToRegExp(
buildPostItemMembershipRoute(ID_FORMAT),
)}`,
),
url: `${API_HOST}/item-memberships?*`,
},
({ reply, body }) => {
if (shouldThrowError) {
Expand Down Expand Up @@ -1908,6 +1905,17 @@ export const mockUploadInvitationCSV = (
).as('uploadCSV');
};

export const mockGetPublicationStatus = (status: PublicationStatus): void => {
const interceptingPathFormat = buildGetPublicationStatusRoute(ID_FORMAT);
cy.intercept(
{
method: HttpMethod.Get,
url: new RegExp(`${API_HOST}/${interceptingPathFormat}`),
},
({ reply }) => reply(status),
).as('getPublicationStatus');
};

export const mockPublishItem = (items: ItemForTest[]): void => {
const interceptingPathFormat = buildItemPublishRoute(ID_FORMAT);
cy.intercept(
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
"@emotion/styled": "11.11.5",
"@graasp/chatbox": "3.1.0",
"@graasp/map": "1.16.0",
"@graasp/query-client": "3.15.2",
"@graasp/sdk": "4.18.0",
"@graasp/query-client": "3.16.0",
"@graasp/sdk": "4.19.0",
"@graasp/translations": "1.32.0",
"@graasp/ui": "4.21.0",
"@mui/icons-material": "5.16.4",
Expand Down
140 changes: 0 additions & 140 deletions src/components/hooks/usePublicationStatus.tsx

This file was deleted.

Loading

0 comments on commit 50b2ae9

Please sign in to comment.