Files
2024-02-15 17:01:50 +00:00

114 lines
2.7 KiB
TypeScript

import {TeamFixture} from 'sentry-fixture/team';
import TeamStore from 'sentry/stores/teamStore';
describe('TeamStore', function () {
const teamFoo = TeamFixture({
id: '1',
slug: 'team-foo',
});
const teamBar = TeamFixture({
id: '2',
slug: 'team-bar',
});
beforeEach(function () {
TeamStore.reset();
});
describe('setting data', function () {
it('populate teams correctly', function () {
expect(TeamStore.getState()).toMatchObject({
teams: [],
loading: true,
hasMore: null,
cursor: null,
loadedUserTeams: false,
});
TeamStore.loadInitialData([teamFoo, teamBar]);
expect(TeamStore.getState()).toMatchObject({
teams: [teamBar, teamFoo],
loading: false,
hasMore: null,
cursor: null,
loadedUserTeams: false,
});
});
it('loads user teams', function () {
expect(TeamStore.getState()).toMatchObject({
teams: [],
loadedUserTeams: false,
});
TeamStore.loadUserTeams([teamFoo]);
expect(TeamStore.getState()).toMatchObject({
teams: [teamFoo],
loadedUserTeams: true,
});
});
it('stores cursor and hasMore correctly', function () {
expect(TeamStore.getState()).toMatchObject({
teams: [],
hasMore: null,
cursor: null,
loadedUserTeams: false,
});
TeamStore.loadInitialData([teamFoo], false, null);
expect(TeamStore.getState()).toMatchObject({
teams: [teamFoo],
hasMore: false,
cursor: null,
loadedUserTeams: true,
});
});
});
describe('updating teams', function () {
it('adds new teams', async function () {
TeamStore.loadInitialData([teamFoo]);
await tick();
expect(TeamStore.getState()).toMatchObject({
teams: [teamFoo],
});
TeamStore.onCreateSuccess(teamBar);
await tick();
expect(TeamStore.getState()).toMatchObject({
teams: [teamBar, teamFoo],
});
});
it('removes teams', async function () {
TeamStore.loadInitialData([teamFoo]);
await tick();
expect(TeamStore.getState()).toMatchObject({
teams: [teamFoo],
});
TeamStore.onRemoveSuccess(teamFoo.slug);
await tick();
expect(TeamStore.getState()).toMatchObject({
teams: [],
});
});
it('updates teams', async function () {
TeamStore.loadInitialData([teamFoo]);
await tick();
expect(TeamStore.getState()).toMatchObject({
teams: [teamFoo],
});
TeamStore.onUpdateSuccess(teamFoo.slug, teamBar);
await tick();
expect(TeamStore.getState()).toMatchObject({
teams: [teamBar],
});
});
});
});