bigbuffet-rw/app/soapbox/reducers/__tests__/verification.test.ts
marcin mikołajczak 5fec879148 Fix mutes test, prefer TypeScript for tests
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
2022-06-12 16:30:48 +02:00

117 lines
3.1 KiB
TypeScript

import { Map as ImmutableMap } from 'immutable';
import { SET_LOADING } from 'soapbox/actions/verification';
import { FETCH_CHALLENGES_SUCCESS, FETCH_TOKEN_SUCCESS, SET_CHALLENGES_COMPLETE, SET_NEXT_CHALLENGE } from '../../actions/verification';
import reducer from '../verification';
describe('verfication reducer', () => {
it('returns the initial state', () => {
expect(reducer(undefined, {})).toEqual(ImmutableMap({
ageMinimum: null,
currentChallenge: null,
isLoading: false,
isComplete: false,
token: null,
instance: ImmutableMap(),
}));
});
describe('FETCH_CHALLENGES_SUCCESS', () => {
it('sets the state', () => {
const state = ImmutableMap({
untouched: 'hello',
ageMinimum: null,
currentChallenge: null,
isLoading: true,
isComplete: null,
});
const action = {
type: FETCH_CHALLENGES_SUCCESS,
ageMinimum: 13,
currentChallenge: 'email',
isComplete: false,
};
const expected = ImmutableMap({
untouched: 'hello',
ageMinimum: 13,
currentChallenge: 'email',
isLoading: false,
isComplete: false,
});
expect(reducer(state, action)).toEqual(expected);
});
});
describe('FETCH_TOKEN_SUCCESS', () => {
it('sets the state', () => {
const state = ImmutableMap({
isLoading: true,
token: null,
});
const action = { type: FETCH_TOKEN_SUCCESS, value: '123' };
const expected = ImmutableMap({
isLoading: false,
token: '123',
});
expect(reducer(state, action)).toEqual(expected);
});
});
describe('SET_CHALLENGES_COMPLETE', () => {
it('sets the state', () => {
const state = ImmutableMap({
isLoading: true,
isComplete: false,
});
const action = { type: SET_CHALLENGES_COMPLETE };
const expected = ImmutableMap({
isLoading: false,
isComplete: true,
});
expect(reducer(state, action)).toEqual(expected);
});
});
describe('SET_NEXT_CHALLENGE', () => {
it('sets the state', () => {
const state = ImmutableMap({
currentChallenge: null,
isLoading: true,
});
const action = {
type: SET_NEXT_CHALLENGE,
challenge: 'sms',
};
const expected = ImmutableMap({
currentChallenge: 'sms',
isLoading: false,
});
expect(reducer(state, action)).toEqual(expected);
});
});
describe('SET_LOADING with no value', () => {
it('sets the state', () => {
const state = ImmutableMap({ isLoading: false });
const action = { type: SET_LOADING };
const expected = ImmutableMap({ isLoading: true });
expect(reducer(state, action)).toEqual(expected);
});
});
describe('SET_LOADING with a value', () => {
it('sets the state', () => {
const state = ImmutableMap({ isLoading: true });
const action = { type: SET_LOADING, value: false };
const expected = ImmutableMap({ isLoading: false });
expect(reducer(state, action)).toEqual(expected);
});
});
});