UNPKG

passbolt-styleguide

Version:

Passbolt styleguide contains common styling assets used by the different sites, plugin, etc.

187 lines (163 loc) 7.53 kB
/** * Passbolt ~ Open source password manager for teams * Copyright (c) 2020 Passbolt SA (https://www.passbolt.com) * * Licensed under GNU Affero General Public License version 3 of the or any later version. * For full copyright and license information, please see the LICENSE.txt * Redistributions of files must retain the above copyright notice. * * @copyright Copyright (c) 2020 Passbolt SA (https://www.passbolt.com) * @license https://opensource.org/licenses/AGPL-3.0 AGPL License * @link https://www.passbolt.com Passbolt(tm) * @since 2.11.0 */ /** * Unit tests on SidebarGroupSection in regard of specifications */ import {defaultAppContext, defaultProps, groupsMock} from "./FilterUsersByGroup.test.data"; import FilterUsersByGroupPage from "./FilterUsersByGroup.test.page"; import MockPort from "../../../test/mock/MockPort"; beforeEach(() => { jest.resetModules(); }); describe("See groups", () => { let page; // The page to test against const props = defaultProps(); // The props to pass describe('As LU I see the groups of my organization', () => { const appContext = { port: new MockPort(), groups: groupsMock, loggedInUser: { role: { name: 'admin' } } }; const context = defaultAppContext(appContext); // The applicative context /** * Given an organization with 10 groups * Then I should see the 10 groups on the left sidebar * And I should see the groups sorted alphabetically * And I should be able to see each group name */ beforeEach(() => { page = new FilterUsersByGroupPage(context, props); }); it('I should see the 10 groups made on the resource', () => { expect(page.displayGroupList.exists()).toBeTruthy(); expect(page.displayGroupList.count()).toBe(10); }); it('I should be able to identify each group name', () => { expect(page.displayGroupList.name(1)).toBe('Leadership team'); expect(page.displayGroupList.name(2)).toBe('Management'); expect(page.displayGroupList.name(3)).toBe('Marketing'); expect(page.displayGroupList.name(4)).toBe('Network'); expect(page.displayGroupList.name(5)).toBe('Operations'); expect(page.displayGroupList.name(6)).toBe('Procurement'); expect(page.displayGroupList.name(7)).toBe('Quality assurance'); expect(page.displayGroupList.name(8)).toBe('Resource planning'); expect(page.displayGroupList.name(9)).toBe('Sales'); expect(page.displayGroupList.name(10)).toBe('Traffic'); }); it('As LU I filter the groups in the users workspace primary sidebar by group I am member of', async() => { await page.title.click(page.title.filterButton); expect(page.displayFilterContextualMenu.groupMemberMenu.textContent).toBe("Groups I am member of"); await page.displayFilterContextualMenu.click(page.displayFilterContextualMenu.groupMemberMenu); expect(page.title.hyperlink.textContent).toBe("Groups I am member of"); expect(page.displayGroupList.count()).toBe(3); }); it('As LU I filter the groups in the users workspace primary sidebar by all groups', async() => { await page.title.click(page.title.filterButton); expect(page.displayFilterContextualMenu.allGroupMenu.textContent).toBe("All groups"); await page.displayFilterContextualMenu.click(page.displayFilterContextualMenu.allGroupMenu); expect(page.title.hyperlink.textContent).toBe("All groups"); expect(page.displayGroupList.count()).toBe(10); }); it('As LU I filter the groups in the users workspace primary sidebar by group I manage', async() => { await page.title.click(page.title.filterButton); expect(page.displayFilterContextualMenu.groupManageMenu.textContent).toBe("Groups I manage"); await page.displayFilterContextualMenu.click(page.displayFilterContextualMenu.groupManageMenu); expect(page.title.hyperlink.textContent).toBe("Groups I manage"); expect(page.displayGroupList.count()).toBe(6); }); it('As AD I should be able to start deleting a group', async() => { await page.displayGroupList.click(page.displayGroupList.moreButton); expect(page.displayGroupContextualMenu.deleteGroupContextualMenu).not.toBeNull(); }); it('As AD I should be able to start editing a group', async() => { await page.displayGroupList.click(page.displayGroupList.moreButton); expect(page.displayGroupContextualMenu.editGroupContextualMenu).not.toBeNull(); }); }); describe('As LU I should see the group section empty', () => { const appContext = { port: new MockPort(), groups: [] }; const context = defaultAppContext(appContext); // The applicative context /** * Given an organization with 0 groups * Then I should see the group section empty */ beforeEach(() => { page = new FilterUsersByGroupPage(context, props); }); it('I should see the groups section empty', () => { expect(page.displayGroupList.isEmpty()).toBeTruthy(); }); it('As LU I see an empty feedback if I’m member of no group after filtering by group I am member of', async() => { context.groups = [groupsMock[0]]; await page.title.click(page.title.filterButton); expect(page.displayGroupList.isEmpty()).toBeFalsy(); await page.displayFilterContextualMenu.click(page.displayFilterContextualMenu.groupMemberMenu); expect(page.title.hyperlink.textContent).toBe("Groups I am member of"); expect(page.displayGroupList.isEmpty()).toBeTruthy(); }); it('As LU I see an empty feedback if I manage no group after filtering by group I manage', async() => { context.groups = [groupsMock[1]]; await page.title.click(page.title.filterButton); expect(page.displayGroupList.isEmpty()).toBeFalsy(); await page.displayFilterContextualMenu.click(page.displayFilterContextualMenu.groupManageMenu); expect(page.title.hyperlink.textContent).toBe("Groups I manage"); expect(page.displayGroupList.isEmpty()).toBeTruthy(); }); }); describe('As LU I see a loading feedback in the section when the groups are not yet fetched', () => { const context = defaultAppContext(); // The applicative context /** * Given the groups section * And the groups are not loaded yet * Then I should see the loading message “Retrieving groups” */ beforeEach(() => { page = new FilterUsersByGroupPage(context, props); }); it('I should see the loading message “Retrieving groups”', async() => { expect(page.displayGroupList.isLoading()).toBeTruthy(); }); }); describe('As ALU I shouldn’t be able to start deleting a group', () => { const appContext = { port: new MockPort(), groups: groupsMock, loggedInUser: { role: { name: 'user' } } }; const context = defaultAppContext(appContext); // The applicative context /** * Given the groups section * And the logged uin user is not AD * Then I should’t see the delete group menu */ beforeEach(() => { page = new FilterUsersByGroupPage(context, props); }); it('As NOT_AD I shouldn’t be able to start deleting a group', async() => { await page.displayGroupList.click(page.displayGroupList.moreButton); expect(page.displayGroupContextualMenu.deleteGroupContextualMenu).toBeNull(); }); }); });