UNPKG

passbolt-styleguide

Version:

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

165 lines (146 loc) 4.42 kB
/** * Passbolt ~ Open source password manager for teams * Copyright (c) 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) Passbolt SA (https://www.passbolt.com) * @license https://opensource.org/licenses/AGPL-3.0 AGPL License * @link https://www.passbolt.com Passbolt(tm) * @since 5.8.0 */ import React from "react"; import { render } from "@testing-library/react"; import AppContext from "../../../../shared/context/AppContext/AppContext"; import DisplayDragUser from "./DisplayDragUser"; import { defaultContext, defaultUserWorkspaceContext } from "./DisplayDragUser.test.data"; import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider"; /** * Mock UserAvatar component */ jest.mock("../../Common/Avatar/UserAvatar", () => ({ __esModule: true, default: ({ user, baseUrl, className }) => ( <div data-testid="user-avatar" data-username={user?.username} data-baseurl={baseUrl} className={className} /> ), })); /** * The DisplayDragUser component represented as a page */ export default class DisplayDragUserPage { /** * Default constructor * @param {Object} props Props to attach */ constructor(props = {}) { this._props = props; this._context = props.context || defaultContext; this._userWorkspaceContext = { ...defaultUserWorkspaceContext, ...props.userWorkspaceContext, }; this._page = render( <MockTranslationProvider> <AppContext.Provider value={this._context}> <DisplayDragUser context={this._context} userWorkspaceContext={this._userWorkspaceContext} /> </AppContext.Provider> </MockTranslationProvider>, ); } /** * Returns the drag and drop container element */ get dragAndDropContainer() { return this._page.container.querySelector(".drag-and-drop"); } /** * Returns the count badge element */ get countBadge() { return this._page.container.querySelector(".count"); } /** * Returns the count badge text content */ get countText() { return this.countBadge?.textContent; } /** * Returns the message span element */ get messageElement() { return this._page.container.querySelector(".message"); } /** * Returns the message text content */ get messageText() { return this.messageElement?.textContent; } /** * Returns the user avatar element */ get userAvatar() { return this._page.container.querySelector('[data-testid="user-avatar"]'); } /** * Returns true if the component has a count badge */ get hasCountBadge() { return Boolean(this.countBadge); } /** * Returns true if the drag container has the specified class * @param {string} className The class name to check * @returns {boolean} */ hasClass(className) { return this.dragAndDropContainer?.classList.contains(className) || false; } /** * Returns the avatar's data-username attribute */ get avatarUsername() { return this.userAvatar?.getAttribute("data-username"); } /** * Returns the avatar's data-baseurl attribute */ get avatarBaseUrl() { return this.userAvatar?.getAttribute("data-baseurl"); } /** * Returns true if the avatar has the specified class * @param {string} className The class name to check * @returns {boolean} */ avatarHasClass(className) { return this.userAvatar?.classList.contains(className) || false; } /** * Returns the underlying container for advanced queries */ get container() { return this._page.container; } /** * Allows rerendering with new props * @param {Object} props New props */ rerender(props) { const context = props.context || defaultContext; const userWorkspaceContext = { ...defaultUserWorkspaceContext, ...props.userWorkspaceContext, }; this._page.rerender( <MockTranslationProvider> <AppContext.Provider value={context}> <DisplayDragUser context={context} userWorkspaceContext={userWorkspaceContext} /> </AppContext.Provider> </MockTranslationProvider>, ); } }