docbrown/spec/models/page_spec.rb
Ben Halpern bff4050c35
Add dynamic monthly sitemaps (#6704) [deploy]
* Initial sitemap work

* More sitemap progress

* Remove files

* Finalize monthly sitemap

* Update spec/models/organization_spec.rb

Co-Authored-By: Vaidehi Joshi <vaidehi.sj@gmail.com>

* Clean up approach

* Change tests

* Fix test not sure what problem was

Co-authored-by: Vaidehi Joshi <vaidehi.sj@gmail.com>
2020-03-19 17:20:23 -04:00

66 lines
2 KiB
Ruby

require "rails_helper"
RSpec.describe Page, type: :model do
describe "#validations" do
it "requires either body_markdown or body_html" do
page = build(:page)
page.body_html = nil
page.body_markdown = nil
expect(page).not_to be_valid
end
it "takes organization slug into account" do
create(:organization, slug: "benandfriends")
page = build(:page, slug: "benandfriends")
expect(page).not_to be_valid
expect(page.errors[:slug].to_s.include?("taken")).to be true
end
it "takes podcast slug into account" do
create(:podcast, slug: "benmeetsworld")
page = build(:page, slug: "benmeetsworld")
expect(page).not_to be_valid
expect(page.errors[:slug].to_s.include?("taken")).to be true
end
it "takes user username into account" do
create(:user, username: "bennybenben")
page = build(:page, slug: "bennybenben")
expect(page).not_to be_valid
expect(page.errors[:slug].to_s.include?("taken")).to be true
end
it "takes sitemap into account" do
page = build(:page, slug: "sitemap-hey")
expect(page).not_to be_valid
expect(page.errors[:slug].to_s.include?("taken")).to be true
end
end
context "when callbacks are triggered before save" do
let(:page) { create(:page) }
describe "#processed_html" do
it "accepts body markdown and turns it into html" do
page.update(body_markdown: "Hello `heyhey`")
expect(page.processed_html).to include("<code>")
end
it "accepts body html without changing it" do
html = "Hello `heyhey`"
page.update(body_html: html, body_markdown: "")
expect(page.processed_html).to eq(html)
end
end
end
context "when callbacks are triggered after save" do
let(:page) { create(:page) }
it "triggers cache busting on save" do
sidekiq_assert_enqueued_with(job: Pages::BustCacheWorker, args: [page.slug]) do
page.save
end
end
end
end