var testPackage = require('../../helpers/test-package');
var Dgeni = require('dgeni');
const plugin = require('./h1-checker');
describe('h1Checker postprocessor', () => {
  let processor, createDocMessage;
  beforeEach(() => {
    const dgeni = new Dgeni([testPackage('angular-base-package')]);
    const injector = dgeni.configureInjector();
    createDocMessage = injector.get('createDocMessage');
    processor = injector.get('postProcessHtml');
    processor.docTypes = ['a'];
    processor.plugins = [plugin];
  });
  it('should complain if there is more than two h1 in a document', () => {
    const doc = {
      docType: 'a',
      renderedContent: `
        
Heading 1
        标题1
        Heading 2
        Heading 1a
    `
    };
    expect(() => processor.$process([doc])).toThrowError(createDocMessage('More than one h1 found in ' + doc.renderedContent, doc));
  });
  it('should not complain if there is exactly one h1 in a document', () => {
    const doc = {
      docType: 'a',
      renderedContent: `
        Heading 1
        Heading 2
    `
    };
    expect(() => processor.$process([doc])).not.toThrow();
  });
  it('should not complain if there are no h1s in a document', () => {
    const doc = {
      docType: 'a',
      renderedContent: `
        Heading 2
    `
    };
    expect(() => processor.$process([doc])).not.toThrow();
  });
  it('should attach the h1 text to the vFile', () => {
    const doc = {
      docType: 'a',
      renderedContent: 'Heading 1
'
    };
    processor.$process([doc]);
    expect(doc.vFile.title).toEqual('Heading 1');
  });
  it('should clean aria-hidden anchors from h1 text added to the vFile', () => {
    const doc = {
      docType: 'a',
      renderedContent:
        '' +
          'What is Angular?' +
        '
'
    };
    processor.$process([doc]);
    expect(doc.vFile.title).toEqual('What is Angular?');
  });
  it('should not break if the h1 is empty (except for an aria-hidden anchor)', () => {
    const doc = {
      docType: 'a',
      renderedContent: `
        
      `
    };
    expect(() => processor.$process([doc])).not.toThrow();
  });
});