import { login } from '../utils/steps';

const group = (term: string) => {
  cy.get('[data-testid="group-by"]').click();
  cy.get(`[data-testid="group-by-option-${term}"]`).click();
};

const assertGroupsCount = (count: number) => {
  cy.get('[class*=CMS_Entries_group-button]').should('have.length', count);
};

const assertEachGroupCount = (name: string, count: number) => {
  cy.get(`[data-testid="group-by-${name}"]`).click();
  assertEntriesCount(count);
};

const assertEntriesCount = (count: number) => {
  cy.get('[class*=CMS_Entries_entry-listing-table-row]').should('have.length', count);
};

describe('View Group', () => {
  before(() => {
    Cypress.config('defaultCommandTimeout', 4000);
    cy.task('setupBackend', { backend: 'test' });
  });

  after(() => {
    cy.task('teardownBackend', { backend: 'test' });
  });

  beforeEach(() => {
    login();
  });

  it('can apply string group', () => {
    // enable group
    group('Year');

    assertGroupsCount(2);
    const year = new Date().getFullYear();
    assertEachGroupCount(`Year ${year}`, 20);
    assertEachGroupCount('Year 2015', 3);

    //disable group
    group('Year');

    assertEntriesCount(23);

    //enable group
    group('Drafts');

    assertGroupsCount(3);

    assertEachGroupCount('Drafts', 10);
    assertEachGroupCount('Not Drafts', 10);
    assertEachGroupCount('Other', 3);
  });
});