describe('spaceBetweenParagraphs', function() { var space = rule('There should only be one blank line between paragraphs'); afterEach(teardownFixtures); it('warns of a blank line after a paragraph with text content', function() { var $p = fixture('

Galois lived during a time of political turmoil.

'); var $empty = fixture('


'); var results = run(space); expect(results.errors.length).toBe(1); expect(results.errors[0].element).toEqual($p.get(0)); }); it('points to paragraph preceding a blank line; but not to other element types', function() { var $div = fixture('
Galois lived during a time of political turmoil.
'); var $empty = fixture('


'); var results = run(space); expect(results.errors.length).toBe(1); expect(results.errors[0].element).not.toEqual($div.get(0)); expect(results.errors[0].element).toEqual($empty.get(0)); }); it('points to the closest paragraph with text preceding the blank line', function() { var $p1 = fixture('

Galois lived during a time of political turmoil.

'); var $p2 = fixture('

Galois was incensed and wrote a blistering letter.

'); var $empty = fixture('


'); var results = run(space); expect(results.errors[0].element).toEqual($p2.get(0)); }); it('emits at most one error per paragraph with text', function() { var $p = fixture('

He passed, receiving his degree.

'); var $empty1 = fixture('


'); var $empty2= fixture('


'); var $empty3= fixture('


'); var results = run(space); expect(results.errors.length).toEqual(1); expect(results.errors[0].element).toEqual($p.get(0)); }); it('does not point to a paragraph separated by non-paragraph tags', function() { var $p = fixture('

Charles X had succeeded Louis XVIII.

'); var $e1 = fixture('
'); var $empty = fixture('


'); var results = run(space); expect(results.errors.length).toEqual(1); expect(results.errors[0].element).toEqual($empty.get(0)); }); });