1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- import {Organization} from 'sentry-fixture/organization';
- import {reactHooks} from 'sentry-test/reactTestingLibrary';
- import * as useExperiment from 'sentry/utils/useExperiment';
- import {useProjectCreationAccess} from './useProjectCreationAccess';
- describe('ProjectCreationAccess', function () {
- const organization = Organization();
- const teams = [TestStubs.Team()];
- it('passes project creation eligibility for org-manager', function () {
- const {result} = reactHooks.renderHook(useProjectCreationAccess, {
- initialProps: {organization, teams},
- });
- expect(result.current.canCreateProject).toBeTruthy();
- });
- it('fails project creation eligibility for org-members', function () {
- const member_org = Organization({
- access: ['org:read', 'team:read', 'project:read'],
- });
- const {result} = reactHooks.renderHook(useProjectCreationAccess, {
- initialProps: {organization: member_org, teams},
- });
- expect(result.current.canCreateProject).toBeFalsy();
- });
- it('passes project creation eligibility for team-admin', function () {
- const member_org = Organization({
- access: ['org:read', 'team:read', 'project:read'],
- });
- const admin_teams = [
- {...TestStubs.Team(), access: ['team:admin', 'team:write', 'team:read']},
- ];
- const {result} = reactHooks.renderHook(useProjectCreationAccess, {
- initialProps: {organization: member_org, teams: admin_teams},
- });
- expect(result.current.canCreateProject).toBeTruthy();
- });
- it('passes if org is part of experiment and member has no access', function () {
- const experiment_org = Organization({
- access: ['org:read', 'team:read', 'project:read'],
- features: ['team-project-creation-all'],
- experiments: {ProjectCreationForAllExperimentV2: 1},
- });
- jest.spyOn(useExperiment, 'useExperiment').mockReturnValue({
- experimentAssignment: 1,
- logExperiment: jest.fn(),
- });
- const {result} = reactHooks.renderHook(useProjectCreationAccess, {
- initialProps: {organization: experiment_org, teams},
- });
- expect(result.current.canCreateProject).toBeTruthy();
- });
- it('fails if org is not part of experiment and member has no access', function () {
- const no_exp_org = Organization({
- access: ['org:read', 'team:read', 'project:read'],
- features: ['team-project-creation-all'],
- experiments: {ProjectCreationForAllExperimentV2: 0},
- });
- jest.spyOn(useExperiment, 'useExperiment').mockReturnValue({
- experimentAssignment: 0,
- logExperiment: jest.fn(),
- });
- const {result} = reactHooks.renderHook(useProjectCreationAccess, {
- initialProps: {organization: no_exp_org, teams},
- });
- expect(result.current.canCreateProject).toBeFalsy();
- });
- it('fails if org does not have the feature regardless of experiment value', function () {
- const no_flag_org = Organization({
- access: ['org:read', 'team:read', 'project:read'],
- features: [],
- experiments: {ProjectCreationForAllExperimentV2: 1},
- });
- jest.spyOn(useExperiment, 'useExperiment').mockReturnValue({
- experimentAssignment: 1,
- logExperiment: jest.fn(),
- });
- const {result} = reactHooks.renderHook(useProjectCreationAccess, {
- initialProps: {organization: no_flag_org, teams},
- });
- expect(result.current.canCreateProject).toBeFalsy();
- });
- });
|