12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- import {updateOnboardingTask} from 'sentry/actionCreators/onboardingTasks';
- import ConfigStore from 'sentry/stores/configStore';
- import OrganizationStore from 'sentry/stores/organizationStore';
- import {OnboardingTaskKey} from 'sentry/types';
- describe('actionCreators/onboardingTasks', function () {
- const api = new MockApiClient();
- const user = ConfigStore.get('user');
- jest.spyOn(OrganizationStore, 'onUpdate');
- describe('updateOnboardingTask', function () {
- it('Adds the task to the organization when task does not exists', async function () {
- const detailedOrg = TestStubs.Organization({
- teams: [TestStubs.Team()],
- projects: [TestStubs.Project()],
- });
- // User is not passed into the update request
- const testTask = {
- task: OnboardingTaskKey.FIRST_PROJECT,
- status: 'complete',
- } as const;
- const mockUpdate = MockApiClient.addMockResponse({
- url: `/organizations/${detailedOrg.slug}/onboarding-tasks/`,
- method: 'POST',
- body: testTask,
- });
- updateOnboardingTask(api, detailedOrg, testTask);
- await tick();
- expect(mockUpdate).toHaveBeenCalled();
- expect(OrganizationStore.onUpdate).toHaveBeenCalledWith({
- onboardingTasks: [{...testTask, user}],
- });
- });
- it('Updates existing onboarding task', async function () {
- const detailedOrg = TestStubs.Organization({
- teams: [TestStubs.Team()],
- projects: [TestStubs.Project()],
- onboardingTasks: [{task: 'send_first_event', status: 'skipped'}],
- });
- const testTask = {
- task: OnboardingTaskKey.FIRST_EVENT,
- status: 'complete',
- } as const;
- MockApiClient.clearMockResponses();
- const mockUpdate = MockApiClient.addMockResponse({
- url: `/organizations/${detailedOrg.slug}/onboarding-tasks/`,
- method: 'POST',
- body: testTask,
- });
- updateOnboardingTask(api, detailedOrg, testTask);
- await tick();
- expect(mockUpdate).toHaveBeenCalled();
- // NOTE: user is not passed as it is already associated to the existing
- // onboarding task.
- expect(OrganizationStore.onUpdate).toHaveBeenCalledWith({
- onboardingTasks: [testTask],
- });
- });
- it('Does not make API request without api object', async function () {
- const detailedOrg = TestStubs.Organization({
- teams: [TestStubs.Team()],
- projects: [TestStubs.Project()],
- });
- const testTask = {
- task: OnboardingTaskKey.FIRST_EVENT,
- status: 'complete',
- } as const;
- const mockUpdate = MockApiClient.addMockResponse({
- url: `/organizations/${detailedOrg.slug}/onboarding-tasks/`,
- method: 'POST',
- });
- updateOnboardingTask(null, detailedOrg, testTask);
- await tick();
- expect(mockUpdate).not.toHaveBeenCalled();
- expect(OrganizationStore.onUpdate).toHaveBeenCalledWith({
- onboardingTasks: [{...testTask, user}],
- });
- });
- });
- });
|