passbolt-styleguide
Version:
Passbolt styleguide contains common styling assets used by the different sites, plugin, etc.
248 lines (235 loc) • 6.45 kB
JavaScript
import { defaultAppContext, defaultUserAppContext } from "../../../contexts/ExtAppContext.test.data";
import { defaultWorkflowContext } from "../../../contexts/WorkflowContext.test.data";
import { defaultDialogContext } from "../../../contexts/DialogContext.test.data";
import { defaultActionFeedbackContext } from "../../../contexts/ActionFeedbackContext.test.data";
import { defaultClipboardContext } from "../../../contexts/Clipboard/ManagedClipboardServiceProvider.test.data";
import {
defaultAdministratorRbacContext,
defaultUserRbacContext,
} from "../../../../shared/context/Rbac/RbacContext.test.data";
import { defaultGroupDto } from "../../../../shared/models/entity/group/groupEntity.test.data";
import { minimumGroupUserDto } from "../../../../shared/models/entity/groupUser/groupUserEntity.test.data";
import { defaultUserDto } from "../../../../shared/models/entity/user/userEntity.test.data";
/**
* Default selected user for workspace actions tests
* @param {Object} data The data to override
* @returns {object}
*/
const defaultSelectedUserDto = (data = {}) =>
defaultUserDto(
{
id: "640ebc06-5ec1-5322-a1ae-6120ed2f3a74",
username: "carol@passbolt.com",
active: false,
is_mfa_enabled: true,
missing_metadata_key_ids: ["f848277c-5398-58f8-a82a-72397af2d450"],
...data,
},
{
withRole: true,
withPendingAccountRecoveryUserRequest: true,
},
);
/**
* Props with selected user
*/
export function propsWithSelectedUser(props) {
return {
context: defaultAppContext(),
userWorkspaceContext: {
onDetailsLocked: () => {},
details: {
locked: true,
},
filter: {
type: "ALL",
},
selectedUsers: [defaultSelectedUserDto()],
},
workflowContext: defaultWorkflowContext(),
dialogContext: defaultDialogContext(),
rbacContext: defaultAdministratorRbacContext(),
actionFeedbackContext: defaultActionFeedbackContext(),
clipboardContext: defaultClipboardContext(),
...props,
};
}
/**
* Props with group selected
*/
export function propsGroupSelected() {
const context = defaultAppContext();
return propsWithSelectedUser({
context,
userWorkspaceContext: {
details: {
locked: true,
},
filter: {
type: "FILTER-BY-GROUP",
payload: {
group: defaultGroupDto({}, { withGroupsUsers: 2 }),
},
},
selectedUsers: [defaultUserDto()],
},
});
}
/**
* Props with sole member selected in group
*/
export function propsSoleMemberSelected() {
const context = defaultAppContext();
return propsWithSelectedUser({
context,
userWorkspaceContext: {
details: {
locked: true,
},
filter: {
type: "FILTER-BY-GROUP",
payload: {
group: defaultGroupDto({}, { withGroupsUsers: 1 }),
},
},
selectedUsers: [defaultUserDto()],
},
});
}
/**
* Props with sole manager selected in group
*/
export function propsSoleManagerSelected() {
const context = defaultAppContext();
return propsWithSelectedUser({
context,
userWorkspaceContext: {
details: {
locked: true,
},
filter: {
type: "FILTER-BY-GROUP",
payload: {
group: defaultGroupDto({
groups_users: [
minimumGroupUserDto({ user_id: context.loggedInUser.id, is_admin: true }),
minimumGroupUserDto(),
],
}),
},
},
selectedUsers: [defaultUserDto({ id: context.loggedInUser.id })],
},
});
}
/**
* Props user is group manager with group selected
*/
export function propsUserGroupManagerWithGroupSelected() {
const context = defaultUserAppContext();
return propsWithSelectedUser({
context: context,
rbacContext: defaultUserRbacContext(),
userWorkspaceContext: {
details: {
locked: true,
},
filter: {
type: "FILTER-BY-GROUP",
payload: {
group: {
groups_users: [{}, {}], // At least two users needed in the group
my_group_user: {
is_admin: true,
},
},
},
},
selectedUsers: [{}], // At least on user selected
},
});
}
/**
* Props with user Role
*/
export function propsUserRole() {
return propsWithSelectedUser({
context: defaultUserAppContext(),
rbacContext: defaultUserRbacContext(),
});
}
/**
* Props with logged in user as selected user
*/
export function propsWithMyselfAsSelectedUser() {
const context = defaultAppContext();
return propsWithSelectedUser({
context,
userWorkspaceContext: {
details: {
locked: true,
},
filter: {
type: "ALL",
},
selectedUsers: [
defaultUserDto(
{
id: context.loggedInUser.id,
active: true,
is_mfa_enabled: true,
missing_metadata_key_ids: ["f848277c-5398-58f8-a82a-72397af2d450"],
},
{ withRole: true },
),
],
},
});
}
/**
* Props with active selected user
*/
export function propsWithSelectedActiveUser() {
const props = propsWithSelectedUser();
props.userWorkspaceContext.selectedUsers[0].active = true;
return props;
}
/**
* Props with disabled MFA selected user
*/
export function propsWithSelectedMFADisabledUser() {
const props = propsWithSelectedUser();
props.userWorkspaceContext.selectedUsers[0].is_mfa_enabled = false;
return props;
}
/**
* Props with temporary pending account recovery selected user
*/
export function propsWithSelectedUserTemporaryHasPendingAccountRecovery() {
const props = propsWithSelectedUser();
props.userWorkspaceContext.selectedUsers[0].pending_account_recovery_request = true;
return props;
}
/**
* Props with user role and group selected (user is not a manager)
*/
export function propsUserRoleGroupSelectedNotManager() {
const context = defaultUserAppContext();
return propsWithSelectedUser({
context,
userWorkspaceContext: {
details: {
locked: true,
},
filter: {
type: "FILTER-BY-GROUP",
payload: {
group: defaultGroupDto({
groups_users: [minimumGroupUserDto({ user_id: "other-user-id", is_admin: true }), minimumGroupUserDto()],
}),
},
},
selectedUsers: [defaultUserDto()],
},
});
}