5095 move onboardingstatus computation from frontend to backend (#5954)
- move front `onboardingStatus` computing to server side - add logic to `useSetNextOnboardingStatus` - update some missing redirections in `usePageChangeEffectNavigateLocation` - separate subscriptionStatus from onboardingStatus
This commit is contained in:
@ -8,7 +8,6 @@ export const UPDATE_WORKSPACE = gql`
|
||||
displayName
|
||||
logo
|
||||
allowImpersonation
|
||||
subscriptionStatus
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
@ -0,0 +1,57 @@
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { renderHook } from '@testing-library/react';
|
||||
import { RecoilRoot, useSetRecoilState } from 'recoil';
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
import {
|
||||
CurrentWorkspace,
|
||||
currentWorkspaceState,
|
||||
} from '@/auth/states/currentWorkspaceState';
|
||||
import { useSubscriptionStatus } from '@/workspace/hooks/useSubscriptionStatus';
|
||||
import { SubscriptionStatus } from '~/generated/graphql';
|
||||
|
||||
const currentWorkspace = {
|
||||
id: '1',
|
||||
currentBillingSubscription: { status: SubscriptionStatus.Incomplete },
|
||||
activationStatus: 'active',
|
||||
allowImpersonation: true,
|
||||
} as CurrentWorkspace;
|
||||
|
||||
const renderHooks = () => {
|
||||
const { result } = renderHook(
|
||||
() => {
|
||||
const subscriptionStatus = useSubscriptionStatus();
|
||||
const setCurrentWorkspace = useSetRecoilState(currentWorkspaceState);
|
||||
|
||||
return {
|
||||
subscriptionStatus,
|
||||
setCurrentWorkspace,
|
||||
};
|
||||
},
|
||||
{
|
||||
wrapper: RecoilRoot,
|
||||
},
|
||||
);
|
||||
return { result };
|
||||
};
|
||||
|
||||
describe('useSubscriptionStatus', () => {
|
||||
Object.values(SubscriptionStatus).forEach((subscriptionStatus) => {
|
||||
it(`should return "${subscriptionStatus}"`, async () => {
|
||||
const { result } = renderHooks();
|
||||
const { setCurrentWorkspace } = result.current;
|
||||
|
||||
act(() => {
|
||||
setCurrentWorkspace({
|
||||
...currentWorkspace,
|
||||
currentBillingSubscription: {
|
||||
id: v4(),
|
||||
status: subscriptionStatus,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
expect(result.current.subscriptionStatus).toBe(subscriptionStatus);
|
||||
});
|
||||
});
|
||||
});
|
||||
@ -0,0 +1,9 @@
|
||||
import { useRecoilValue } from 'recoil';
|
||||
|
||||
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
|
||||
import { SubscriptionStatus } from '~/generated/graphql';
|
||||
|
||||
export const useSubscriptionStatus = (): SubscriptionStatus | undefined => {
|
||||
const currentWorkspace = useRecoilValue(currentWorkspaceState);
|
||||
return currentWorkspace?.currentBillingSubscription?.status;
|
||||
};
|
||||
Reference in New Issue
Block a user