grafana/public/app/features/org/state/reducers.test.ts
Uchechukwu Obasi d03aef1951
SelectOrgPage: migrate API function calls to Redux (#43133)
* SelectOrgPage: migrate API function calls to Redux

* used a much better approach

* writes test for getUserOrganizations action

* writes test for userOrganizationsLoaded reducer

* change userOrg to plural
2021-12-16 09:57:18 +01:00

52 lines
1.8 KiB
TypeScript

import { reducerTester } from '../../../../test/core/redux/reducerTester';
import { OrganizationState, OrgRole } from '../../../types';
import {
initialState,
organizationLoaded,
organizationReducer,
userOrganizationsLoaded,
setOrganizationName,
} from './reducers';
describe('organizationReducer', () => {
describe('when organizationLoaded is dispatched', () => {
it('then state should be correct', () => {
reducerTester<OrganizationState>()
.givenReducer(organizationReducer, { ...initialState })
.whenActionIsDispatched(organizationLoaded({ id: 1, name: 'An org' }))
.thenStateShouldEqual({
organization: { id: 1, name: 'An org' },
userOrgs: [],
});
});
});
describe('when setOrganizationName is dispatched', () => {
it('then state should be correct', () => {
reducerTester<OrganizationState>()
.givenReducer(organizationReducer, { ...initialState, organization: { id: 1, name: 'An org' } })
.whenActionIsDispatched(setOrganizationName('New Name'))
.thenStateShouldEqual({
organization: { id: 1, name: 'New Name' },
userOrgs: [],
});
});
});
describe('when userOrganizationsLoaded is dispatched', () => {
it('then state should be correct', () => {
reducerTester<OrganizationState>()
.givenReducer(organizationReducer, {
...initialState,
organization: { id: 1, name: 'An org' },
userOrgs: [],
})
.whenActionIsDispatched(userOrganizationsLoaded([{ orgId: 1, name: 'New org', role: OrgRole.Editor }]))
.thenStateShouldEqual({
organization: { id: 1, name: 'An org' },
userOrgs: [{ orgId: 1, name: 'New org', role: OrgRole.Editor }],
});
});
});
});