So now we test in depth at the model level, and can be a bit more relaxed about integration tests for translations. Note we're defining some extra factories to make sure all translatable attributes with presence validation rules are mandatory. This way we can simplify the way we obtain required fields, using `required_attribute?`. Otherwise, fields having an `unless` condition in their presence validation rules would count as mandatory even when they're not.
94 lines
1.6 KiB
Ruby
94 lines
1.6 KiB
Ruby
require "rails_helper"
|
|
|
|
describe Legislation::DraftVersion do
|
|
let(:legislation_draft_version) { build(:legislation_draft_version) }
|
|
|
|
it_behaves_like "acts as paranoid", :legislation_draft_version
|
|
it_behaves_like "globalizable", :legislation_draft_version
|
|
|
|
it "is valid" do
|
|
expect(legislation_draft_version).to be_valid
|
|
end
|
|
|
|
it "renders and saves the html from the markdown body field" do
|
|
legislation_draft_version.body = body_markdown
|
|
|
|
legislation_draft_version.save!
|
|
|
|
expect(legislation_draft_version.body_html).to eq(body_html)
|
|
expect(legislation_draft_version.toc_html).to eq(toc_html)
|
|
end
|
|
|
|
it "renders and saves the html from the markdown body field with alternative translation" do
|
|
legislation_draft_version.title_fr = "Français"
|
|
legislation_draft_version.body_fr = body_markdown
|
|
|
|
legislation_draft_version.save!
|
|
|
|
expect(legislation_draft_version.body_html_fr).to eq(body_html)
|
|
expect(legislation_draft_version.toc_html_fr).to eq(toc_html)
|
|
end
|
|
|
|
def body_markdown
|
|
<<-BODY_MARKDOWN
|
|
# Title 1
|
|
|
|
Some paragraph.
|
|
|
|
A list:
|
|
|
|
- item 1
|
|
- item 2
|
|
|
|
## Subtitle
|
|
|
|
Another paragraph.
|
|
|
|
# Title 2
|
|
|
|
Something about this.
|
|
BODY_MARKDOWN
|
|
end
|
|
|
|
def body_html
|
|
<<-BODY_HTML
|
|
<h1 id="title-1">Title 1</h1>
|
|
|
|
<p>Some paragraph.</p>
|
|
|
|
<p>A list:</p>
|
|
|
|
<ul>
|
|
<li>item 1</li>
|
|
<li>item 2</li>
|
|
</ul>
|
|
|
|
<h2 id="subtitle">Subtitle</h2>
|
|
|
|
<p>Another paragraph.</p>
|
|
|
|
<h1 id="title-2">Title 2</h1>
|
|
|
|
<p>Something about this.</p>
|
|
BODY_HTML
|
|
end
|
|
|
|
def toc_html
|
|
<<-TOC_HTML
|
|
<ul>
|
|
<li>
|
|
<a href="#title-1">Title 1</a>
|
|
<ul>
|
|
<li>
|
|
<a href="#subtitle">Subtitle</a>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a href="#title-2">Title 2</a>
|
|
</li>
|
|
</ul>
|
|
TOC_HTML
|
|
end
|
|
end
|