import '../utils/dismiss-local-backup';

describe('Markdown widget', () => {

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

  beforeEach(() => {
    cy.clearMarkdownEditorContent();
  });

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

  describe('pressing backspace', () => {
    it('sets non-default block to default when empty', () => {
      cy.focused()
        .clickHeadingOneButton()
        .backspace()
        .confirmMarkdownEditorContent(`
          <p></p>
        `);
    });
    it('does nothing at start of first block in document when non-empty and non-default', () => {
      cy.focused()
        .clickHeadingOneButton()
        .type('foo')
        .setCursorBefore('foo')
        .backspace({ times: 4 })
        .confirmMarkdownEditorContent(`
          <h1>foo</h1>
        `);
    });
    it('deletes individual characters in middle of non-empty non-default block in document', () => {
      cy.focused()
        .clickHeadingOneButton()
        .type('foo')
        .setCursorAfter('fo')
        .backspace({ times: 3 })
        .confirmMarkdownEditorContent(`
          <h1>o</h1>
        `);
    });
    it('at beginning of non-first block, moves default block content to previous block', () => {
      cy.focused()
        .clickHeadingOneButton()
        .type('foo')
        .enter()
        .type('bar')
        .setCursorBefore('bar')
        .backspace()
        .confirmMarkdownEditorContent(`
          <h1>foobar</h1>
        `);
    });
    it('at beginning of non-first block, moves non-default block content to previous block', () => {
      cy.focused()
        .type('foo')
        .enter()
        .clickHeadingOneButton()
        .type('bar')
        .enter()
        .clickHeadingTwoButton()
        .type('baz')
        .setCursorBefore('baz')
        .backspace()
        .confirmMarkdownEditorContent(`
          <p>foo</p>
          <h1>barbaz</h1>
        `)
        .setCursorBefore('bar')
        .backspace()
        .confirmMarkdownEditorContent(`
          <p>foobarbaz</p>
        `);
    });
  });
});