import { setRoles, updateRoles, removeRoles } from '../actions/roles';
import { mockedStore } from './mockedStore';
import { initialState } from './roles';

describe('test roles reducer', () => {
	it('should return initial state', () => {
		const state = mockedStore.getState().roles;
		expect(state).toEqual(initialState);
	});

	it('should return modified store after call setRoles action', () => {
		const roles = { admin: 'enabled', user: 'enabled', dog: 'carlitos' };
		mockedStore.dispatch(setRoles(roles));
		const state = mockedStore.getState().roles;
		expect(state.admin).toEqual('enabled');
		expect(state.user).toEqual('enabled');
		expect(state.dog).toEqual('carlitos');
	});

	it('should return modified store after call updateRoles action', () => {
		mockedStore.dispatch(updateRoles('admin', 'disabled'));
		const state = mockedStore.getState().roles;
		expect(state.admin).toEqual('disabled');
		expect(state.user).toEqual('enabled');
		expect(state.dog).toEqual('carlitos');
	});

	it('should return modified store after call removeRoles action', () => {
		mockedStore.dispatch(removeRoles('dog'));
		const state = mockedStore.getState().roles;
		expect(state.admin).toEqual('disabled');
		expect(state.user).toEqual('enabled');
		expect(state.dog).toEqual(undefined);
	});
});