import expect from 'expect';
import { mount } from 'enzyme';

import ConnectedAdminRoutes from './AuthenticatedAdminRoutes';
import { connectedComponent, reduxMockStore } from '../../test/helpers';

describe('AuthenticatedAdminRoutes - layout', () => {
  const redirectToHomeAction = {
    type: '@@router/CALL_HISTORY_METHOD',
    payload: {
      method: 'push',
      args: ['/'],
    },
  };

  it('redirects to the homepage if the user is not an admin', () => {
    const user = { id: 1, admin: false };
    const storeWithoutAdminUser = { auth: { user } };
    const mockStore = reduxMockStore(storeWithoutAdminUser);
    mount(
      connectedComponent(ConnectedAdminRoutes, { mockStore }),
    );

    expect(mockStore.getActions()).toInclude(redirectToHomeAction);
  });

  it('does not redirect if the user is an admin', () => {
    const user = { id: 1, admin: true };
    const storeWithAdminUser = { auth: { user } };
    const mockStore = reduxMockStore(storeWithAdminUser);
    mount(
      connectedComponent(ConnectedAdminRoutes, { mockStore }),
    );

    expect(mockStore.getActions()).toNotInclude(redirectToHomeAction);
  });
});
