diff --git a/e2e/suites/actions/mark-favorite.test.ts b/e2e/suites/actions/mark-favorite.test.ts index 9fc59e582..3f4afadcb 100644 --- a/e2e/suites/actions/mark-favorite.test.ts +++ b/e2e/suites/actions/mark-favorite.test.ts @@ -24,7 +24,7 @@ */ import { LoginPage, BrowsingPage } from '../../pages/pages'; -import { SITE_VISIBILITY } from '../../configs'; +import { SITE_VISIBILITY, SITE_ROLES } from '../../configs'; import { RepoClient } from '../../utilities/repo-client/repo-client'; import { Utils } from '../../utilities/utils'; @@ -494,4 +494,60 @@ describe('Mark items as favorites', () => { await apis.user.favorites.waitForApi({ expect: 5 }); }); }); + + describe('on a library', () => { + const adminSite1 = `adminSite1-${Utils.random()}`; + const adminSite2 = `adminSite2-${Utils.random()}`; + const adminSite3 = `adminSite3-${Utils.random()}`; + + beforeAll(async (done) => { + await apis.admin.sites.createSite(adminSite1); + await apis.admin.sites.createSite(adminSite2); + await apis.admin.sites.createSite(adminSite3); + await apis.admin.sites.addSiteMember(adminSite1, username, SITE_ROLES.SITE_CONSUMER.ROLE); + await apis.admin.sites.addSiteMember(adminSite2, username, SITE_ROLES.SITE_CONSUMER.ROLE); + await apis.admin.sites.addSiteMember(adminSite3, username, SITE_ROLES.SITE_CONSUMER.ROLE); + + await apis.user.favorites.addFavoriteById('site', adminSite2); + await apis.user.favorites.addFavoriteById('site', adminSite3); + done(); + }); + + beforeEach(async (done) => { + await Utils.pressEscape(); + done(); + }); + + afterAll(async (done) => { + await apis.admin.sites.deleteSite(adminSite1); + await apis.admin.sites.deleteSite(adminSite2); + await apis.admin.sites.deleteSite(adminSite3); + done(); + }); + + it('Mark a library as favorite - [C289974]', async () => { + await page.goToMyLibraries(); + await dataTable.selectItem(adminSite1); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Favorite'); + expect(await apis.user.favorites.isFavoriteWithRetry(adminSite1, { expect: true })).toBe(true, `${adminSite1} not favorite`); + }); + + it('Remove a library from favorites - on My Libraries - [C289975]', async () => { + await page.goToMyLibraries(); + await dataTable.selectItem(adminSite2); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Favorite'); + expect(await apis.user.favorites.isFavoriteWithRetry(adminSite2, { expect: false })).toBe(false, `${adminSite2} still favorite`); + }); + + it('Remove a library from favorites - on Favorite Libraries - [C289976]', async () => { + await page.goToFavoriteLibraries(); + await dataTable.selectItem(adminSite3); + await toolbar.openMoreMenu(); + await toolbar.menu.clickMenuItem('Favorite'); + expect(await dataTable.getRowByName(adminSite3).isPresent()).toBe(false, `${adminSite3} is displayed`); + expect(await apis.user.favorites.isFavoriteWithRetry(adminSite3, { expect: false })).toBe(false, `${adminSite3} still favorite`); + }); + }); }); diff --git a/e2e/suites/actions/toolbar-single-selection.test.ts b/e2e/suites/actions/toolbar-single-selection.test.ts index 838ffe269..895f8372f 100755 --- a/e2e/suites/actions/toolbar-single-selection.test.ts +++ b/e2e/suites/actions/toolbar-single-selection.test.ts @@ -103,6 +103,7 @@ describe('Toolbar actions - single selection : ', () => { expect(await toolbar.isButtonPresent('View details')).toBe(true, `View details is not displayed for ${siteName}`); await toolbar.openMoreMenu(); expect(await toolbar.menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${siteName}`); + expect(await toolbar.menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${siteName}`); }); it('Correct actions appear when a library is selected - Favorite Libraries - [C289892]', async () => { @@ -112,6 +113,7 @@ describe('Toolbar actions - single selection : ', () => { expect(await toolbar.isButtonPresent('View details')).toBe(true, `View details is not displayed for ${siteName}`); await toolbar.openMoreMenu(); expect(await toolbar.menu.isMenuItemPresent('Delete')).toBe(true, `Delete is not displayed for ${siteName}`); + expect(await toolbar.menu.isMenuItemPresent('Favorite')).toBe(true, `Favorite is not displayed for ${siteName}`); }); it('selected row is marked with a check circle icon - [C213134]', async () => { diff --git a/e2e/utilities/repo-client/apis/favorites/favorites-api.ts b/e2e/utilities/repo-client/apis/favorites/favorites-api.ts index b744a91c9..f4fb0d1ad 100755 --- a/e2e/utilities/repo-client/apis/favorites/favorites-api.ts +++ b/e2e/utilities/repo-client/apis/favorites/favorites-api.ts @@ -79,13 +79,32 @@ export class FavoritesApi extends RepoApi { async getFavoriteById(nodeId: string) { await this.apiAuth(); - return await this.alfrescoJsApi.core.favoritesApi.getFavorite('-me', nodeId); + return await this.alfrescoJsApi.core.favoritesApi.getFavorite('-me-', nodeId); } async isFavorite(nodeId: string) { return JSON.stringify((await this.getFavorites()).list.entries).includes(nodeId); } + async isFavoriteWithRetry(nodeId: string, data) { + let isFavorite; + try { + const favorite = async () => { + isFavorite = JSON.stringify((await this.getFavorites()).list.entries).includes(nodeId); + if ( isFavorite !== data.expect ) { + return Promise.reject(isFavorite); + } else { + return Promise.resolve(isFavorite); + } + }; + + return await Utils.retryCall(favorite); + } catch (error) { + console.log('-----> catch isFavoriteWithRetry: ', error); + } + return isFavorite; + } + async removeFavoriteById(nodeId: string) { await this.apiAuth(); return await this.alfrescoJsApi.core.peopleApi.removeFavoriteSite('-me-', nodeId);