mirror of
https://github.com/grafana/grafana.git
synced 2025-02-12 08:35:43 -06:00
198 lines
5.6 KiB
TypeScript
198 lines
5.6 KiB
TypeScript
import { reducerTester } from '../../../../test/core/redux/reducerTester';
|
|
import { OrgRole, TeamPermissionLevel } from '../../../types';
|
|
import {
|
|
initialUserState,
|
|
orgsLoaded,
|
|
sessionsLoaded,
|
|
setUpdating,
|
|
teamsLoaded,
|
|
updateTimeZone,
|
|
userLoaded,
|
|
userReducer,
|
|
userSessionRevoked,
|
|
UserState,
|
|
} from './reducers';
|
|
|
|
describe('userReducer', () => {
|
|
let dateNow: any;
|
|
|
|
beforeAll(() => {
|
|
dateNow = jest.spyOn(Date, 'now').mockImplementation(() => 1609470000000); // 2021-01-01 04:00:00
|
|
});
|
|
|
|
afterAll(() => {
|
|
dateNow.mockRestore();
|
|
});
|
|
|
|
describe('when updateTimeZone is dispatched', () => {
|
|
it('then state should be correct', () => {
|
|
reducerTester<UserState>()
|
|
.givenReducer(userReducer, { ...initialUserState })
|
|
.whenActionIsDispatched(updateTimeZone({ timeZone: 'xyz' }))
|
|
.thenStateShouldEqual({ ...initialUserState, timeZone: 'xyz' });
|
|
});
|
|
});
|
|
|
|
describe('when setUpdating is dispatched', () => {
|
|
it('then state should be correct', () => {
|
|
reducerTester<UserState>()
|
|
.givenReducer(userReducer, { ...initialUserState, isUpdating: false })
|
|
.whenActionIsDispatched(setUpdating({ updating: true }))
|
|
.thenStateShouldEqual({ ...initialUserState, isUpdating: true });
|
|
});
|
|
});
|
|
|
|
describe('when userLoaded is dispatched', () => {
|
|
it('then state should be correct', () => {
|
|
reducerTester<UserState>()
|
|
.givenReducer(userReducer, { ...initialUserState, user: null })
|
|
.whenActionIsDispatched(
|
|
userLoaded({
|
|
user: {
|
|
id: 2021,
|
|
email: 'test@test.com',
|
|
isDisabled: true,
|
|
login: 'test',
|
|
name: 'Test Account',
|
|
isGrafanaAdmin: false,
|
|
},
|
|
})
|
|
)
|
|
.thenStateShouldEqual({
|
|
...initialUserState,
|
|
user: {
|
|
id: 2021,
|
|
email: 'test@test.com',
|
|
isDisabled: true,
|
|
login: 'test',
|
|
name: 'Test Account',
|
|
isGrafanaAdmin: false,
|
|
},
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('when teamsLoaded is dispatched', () => {
|
|
it('then state should be correct', () => {
|
|
reducerTester<UserState>()
|
|
.givenReducer(userReducer, { ...initialUserState, teamsAreLoading: true })
|
|
.whenActionIsDispatched(
|
|
teamsLoaded({
|
|
teams: [
|
|
{
|
|
id: 1,
|
|
email: 'team@team.com',
|
|
name: 'Team',
|
|
avatarUrl: '/avatar/12345',
|
|
memberCount: 4,
|
|
permission: TeamPermissionLevel.Admin,
|
|
},
|
|
],
|
|
})
|
|
)
|
|
.thenStateShouldEqual({
|
|
...initialUserState,
|
|
teamsAreLoading: false,
|
|
teams: [
|
|
{
|
|
id: 1,
|
|
email: 'team@team.com',
|
|
name: 'Team',
|
|
avatarUrl: '/avatar/12345',
|
|
memberCount: 4,
|
|
permission: TeamPermissionLevel.Admin,
|
|
},
|
|
],
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('when orgsLoaded is dispatched', () => {
|
|
it('then state should be correct', () => {
|
|
reducerTester<UserState>()
|
|
.givenReducer(userReducer, { ...initialUserState, orgsAreLoading: true })
|
|
.whenActionIsDispatched(
|
|
orgsLoaded({
|
|
orgs: [{ orgId: 1, name: 'Main', role: OrgRole.Viewer }],
|
|
})
|
|
)
|
|
.thenStateShouldEqual({
|
|
...initialUserState,
|
|
orgsAreLoading: false,
|
|
orgs: [{ orgId: 1, name: 'Main', role: OrgRole.Viewer }],
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('when sessionsLoaded is dispatched', () => {
|
|
it('then state should be correct', () => {
|
|
reducerTester<UserState>()
|
|
.givenReducer(userReducer, { ...initialUserState, sessionsAreLoading: true })
|
|
.whenActionIsDispatched(
|
|
sessionsLoaded({
|
|
sessions: [
|
|
{
|
|
id: 1,
|
|
browser: 'Chrome',
|
|
browserVersion: '90',
|
|
osVersion: '95',
|
|
clientIp: '192.168.1.1',
|
|
createdAt: '2021-01-01 04:00:00',
|
|
device: 'Computer',
|
|
os: 'Windows',
|
|
isActive: false,
|
|
seenAt: '1996-01-01 04:00:00',
|
|
},
|
|
],
|
|
})
|
|
)
|
|
.thenStateShouldEqual({
|
|
...initialUserState,
|
|
sessionsAreLoading: false,
|
|
sessions: [
|
|
{
|
|
id: 1,
|
|
browser: 'Chrome',
|
|
browserVersion: '90',
|
|
osVersion: '95',
|
|
clientIp: '192.168.1.1',
|
|
createdAt: 'December 31, 2020',
|
|
device: 'Computer',
|
|
os: 'Windows',
|
|
isActive: false,
|
|
seenAt: '25 years ago',
|
|
},
|
|
],
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('when userSessionRevoked is dispatched', () => {
|
|
it('then state should be correct', () => {
|
|
reducerTester<UserState>()
|
|
.givenReducer(userReducer, {
|
|
...initialUserState,
|
|
sessions: [
|
|
{
|
|
id: 1,
|
|
browser: 'Chrome',
|
|
browserVersion: '90',
|
|
osVersion: '95',
|
|
clientIp: '192.168.1.1',
|
|
createdAt: '2021-01-01',
|
|
device: 'Computer',
|
|
os: 'Windows',
|
|
isActive: false,
|
|
seenAt: '1996-01-01',
|
|
},
|
|
],
|
|
})
|
|
.whenActionIsDispatched(userSessionRevoked({ tokenId: 1 }))
|
|
.thenStateShouldEqual({
|
|
...initialUserState,
|
|
sessions: [],
|
|
});
|
|
});
|
|
});
|
|
});
|