import React from 'react';
import {mount} from 'enzyme';

import * as OrgActions from 'app/actionCreators/organizations';
import AccountSettingsLayout from 'app/views/settings/account/accountSettingsLayout';

describe('AccountSettingsLayout', function() {
  let wrapper;
  let spy;
  let api;

  const organization = {
    id: '44',
    name: 'Org Index',
    slug: 'org-index',
  };

  beforeEach(function() {
    spy = jest.spyOn(OrgActions, 'fetchOrganizationDetails');
    api = MockApiClient.addMockResponse({
      url: `/organizations/${organization.slug}/`,
    });
    wrapper = mount(<AccountSettingsLayout params={{}} />, TestStubs.routerContext());
  });

  it('fetches org details for SidebarDropdown', function() {
    // org from index endpoint, no `access` info
    wrapper.setProps({organization});
    wrapper.update();

    expect(spy).toHaveBeenCalledWith(organization.slug, {
      setActive: true,
      loadProjects: true,
    });
    expect(api).toHaveBeenCalledTimes(1);
  });

  it('does not fetch org details for SidebarDropdown', function() {
    // org already has details
    wrapper.setProps({organization: TestStubs.Organization()});
    wrapper.update();

    expect(spy).not.toHaveBeenCalledWith();
    expect(api).not.toHaveBeenCalled();
  });
});