import { createDiscussionRequest, createDiscussionSuccess, createDiscussionFailure } from '../actions/createDiscussion';
import { initialState } from './createDiscussion';
import { mockedStore } from './mockedStore';

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

	it('should return correct createDiscussion state after dispatch createDiscussionRequest action', () => {
		mockedStore.dispatch(createDiscussionRequest({}));
		const { createDiscussion } = mockedStore.getState();
		expect(createDiscussion).toEqual({ isFetching: true, failure: false, error: {}, result: {} });
	});

	it('should return correct createDiscussion state after dispatch createDiscussionSuccess action', () => {
		mockedStore.dispatch(createDiscussionSuccess({ data: true }));
		const { createDiscussion } = mockedStore.getState();
		expect(createDiscussion).toEqual({ isFetching: false, failure: false, result: { data: true }, error: {} });
	});

	it('should return correct createDiscussion state after dispatch createDiscussionFailure action', () => {
		mockedStore.dispatch(createDiscussionFailure({ err: true }));
		const { createDiscussion } = mockedStore.getState();
		expect(createDiscussion).toEqual({
			isFetching: false,
			failure: true,
			result: { data: true },
			error: { err: true }
		});
	});
});