mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-10-30 14:49:14 +00:00
143 lines
4.8 KiB
TypeScript
143 lines
4.8 KiB
TypeScript
import {OrganizationFixture} from 'sentry-fixture/organization';
|
|
import {ProjectFixture} from 'sentry-fixture/project';
|
|
import {TeamFixture} from 'sentry-fixture/team';
|
|
|
|
import {fetchOrganizationDetails} from 'sentry/actionCreators/organization';
|
|
import * as OrganizationsActionCreator from 'sentry/actionCreators/organizations';
|
|
import OrganizationStore from 'sentry/stores/organizationStore';
|
|
import PageFiltersStore from 'sentry/stores/pageFiltersStore';
|
|
import ProjectsStore from 'sentry/stores/projectsStore';
|
|
import TeamStore from 'sentry/stores/teamStore';
|
|
|
|
describe('OrganizationActionCreator', function () {
|
|
const org = OrganizationFixture();
|
|
|
|
const teams = [TeamFixture()];
|
|
const projects = [ProjectFixture()];
|
|
|
|
const api = new MockApiClient();
|
|
|
|
beforeEach(function () {
|
|
MockApiClient.clearMockResponses();
|
|
jest.spyOn(TeamStore, 'loadInitialData');
|
|
jest.spyOn(TeamStore, 'reset');
|
|
jest.spyOn(PageFiltersStore, 'onReset');
|
|
jest.spyOn(ProjectsStore, 'loadInitialData');
|
|
jest.spyOn(ProjectsStore, 'reset');
|
|
jest.spyOn(OrganizationStore, 'reset');
|
|
jest.spyOn(OrganizationStore, 'onUpdate');
|
|
jest.spyOn(OrganizationStore, 'onFetchOrgError');
|
|
jest.spyOn(OrganizationsActionCreator, 'setActiveOrganization');
|
|
});
|
|
|
|
afterEach(function () {
|
|
jest.restoreAllMocks();
|
|
MockApiClient.clearMockResponses();
|
|
});
|
|
|
|
it('fetches organization details', async function () {
|
|
const getOrgMock = MockApiClient.addMockResponse({
|
|
url: `/organizations/${org.slug}/`,
|
|
body: org,
|
|
});
|
|
const getProjectsMock = MockApiClient.addMockResponse({
|
|
url: `/organizations/${org.slug}/projects/`,
|
|
body: projects,
|
|
});
|
|
const getTeamsMock = MockApiClient.addMockResponse({
|
|
url: `/organizations/${org.slug}/teams/`,
|
|
body: teams,
|
|
});
|
|
|
|
fetchOrganizationDetails(api, org.slug, false);
|
|
await tick();
|
|
|
|
expect(OrganizationStore.reset).toHaveBeenCalled();
|
|
expect(PageFiltersStore.onReset).toHaveBeenCalled();
|
|
expect(ProjectsStore.reset).toHaveBeenCalled();
|
|
expect(TeamStore.reset).toHaveBeenCalled();
|
|
|
|
expect(getOrgMock).toHaveBeenCalledWith(
|
|
`/organizations/${org.slug}/`,
|
|
expect.anything()
|
|
);
|
|
expect(getProjectsMock).toHaveBeenCalledWith(
|
|
`/organizations/${org.slug}/projects/`,
|
|
expect.anything()
|
|
);
|
|
expect(getTeamsMock).toHaveBeenCalledWith(
|
|
`/organizations/${org.slug}/teams/`,
|
|
expect.anything()
|
|
);
|
|
expect(OrganizationStore.onUpdate).toHaveBeenCalledWith(org, {replace: true});
|
|
expect(OrganizationsActionCreator.setActiveOrganization).toHaveBeenCalled();
|
|
|
|
expect(TeamStore.loadInitialData).toHaveBeenCalledWith(teams);
|
|
expect(ProjectsStore.loadInitialData).toHaveBeenCalledWith(projects);
|
|
|
|
expect(OrganizationStore.get().organization).toEqual(org);
|
|
});
|
|
|
|
it('silently fetches organization details', async function () {
|
|
const getOrgMock = MockApiClient.addMockResponse({
|
|
url: `/organizations/${org.slug}/`,
|
|
body: org,
|
|
});
|
|
MockApiClient.addMockResponse({
|
|
url: `/organizations/${org.slug}/projects/`,
|
|
body: projects,
|
|
});
|
|
MockApiClient.addMockResponse({
|
|
url: `/organizations/${org.slug}/teams/`,
|
|
body: teams,
|
|
});
|
|
|
|
fetchOrganizationDetails(api, org.slug, true, true);
|
|
await tick();
|
|
|
|
expect(OrganizationStore.reset).not.toHaveBeenCalled();
|
|
expect(PageFiltersStore.onReset).not.toHaveBeenCalled();
|
|
expect(ProjectsStore.reset).not.toHaveBeenCalled();
|
|
expect(TeamStore.reset).not.toHaveBeenCalled();
|
|
|
|
expect(getOrgMock).toHaveBeenCalledWith(
|
|
`/organizations/${org.slug}/`,
|
|
expect.anything()
|
|
);
|
|
|
|
expect(OrganizationStore.onUpdate).toHaveBeenCalledWith(org, {replace: true});
|
|
expect(OrganizationsActionCreator.setActiveOrganization).toHaveBeenCalled();
|
|
|
|
expect(TeamStore.loadInitialData).toHaveBeenCalledWith(teams);
|
|
expect(ProjectsStore.loadInitialData).toHaveBeenCalledWith(projects);
|
|
});
|
|
|
|
it('errors out correctly', async function () {
|
|
const getOrgMock = MockApiClient.addMockResponse({
|
|
url: `/organizations/${org.slug}/`,
|
|
statusCode: 400,
|
|
});
|
|
MockApiClient.addMockResponse({
|
|
url: `/organizations/${org.slug}/projects/`,
|
|
body: projects,
|
|
});
|
|
MockApiClient.addMockResponse({
|
|
url: `/organizations/${org.slug}/teams/`,
|
|
body: teams,
|
|
});
|
|
|
|
fetchOrganizationDetails(api, org.slug, false);
|
|
await tick();
|
|
|
|
expect(OrganizationStore.reset).toHaveBeenCalled();
|
|
expect(PageFiltersStore.onReset).toHaveBeenCalled();
|
|
expect(ProjectsStore.reset).toHaveBeenCalled();
|
|
expect(TeamStore.reset).toHaveBeenCalled();
|
|
expect(getOrgMock).toHaveBeenCalledWith(
|
|
`/organizations/${org.slug}/`,
|
|
expect.anything()
|
|
);
|
|
expect(OrganizationStore.onFetchOrgError).toHaveBeenCalled();
|
|
});
|
|
});
|