import 'jasmine';
import {ConformancePatternRule, PatternKind} from '../../rules/conformance_pattern_rule';
import {compileAndCheck, customMatchers} from '../../util/testing/test_support';

describe('BANNED_PROPERTY_NON_CONSTANT_WRITE', () => {
  it('matches a trivial example', () => {
    const source = `const q = document.createElement('q');\n` +
        `q.cite = 'some example string';\n` +  // literal
        `q.cite = window.name;\n`;             // non-literal
    const config = {
      errorMessage: 'do not cite dynamically',
      kind: PatternKind.BANNED_PROPERTY_NON_CONSTANT_WRITE,
      values: ['HTMLQuoteElement.prototype.cite']
    };
    const results = compileAndCheck(new ConformancePatternRule(config), source);

    expect(results).toHaveFailuresMatching(
        {start: 71, end: 91, messageText: 'do not cite dynamically'});
  });
});


beforeEach(() => {
  jasmine.addMatchers(customMatchers);
});
