require "spec_helper" module Refinery module Admin describe PagesHelper, :type => :helper do describe "#template_options" do context "when page layout/view template is set" do it "returns those templates as selected" do page = FactoryGirl.create(:page) page.view_template = "rspec_template" expect(helper.template_options(:view_template, page)).to eq(:selected => "rspec_template") page.layout_template = "rspec_layout" expect(helper.template_options(:layout_template, page)).to eq(:selected => "rspec_layout") end end context "when page layout template is set using symbols" do before do allow(Pages.config).to receive(:layout_template_whitelist).and_return [:three, :one, :two] end it "works as expected" do page = FactoryGirl.create(:page, :layout_template => "three") expect(helper.template_options(:layout_template, page)).to eq(:selected => 'three') end end context "when page layout template isn't set" do context "when page has parent and parent has layout_template set" do it "returns parent layout_template as selected" do parent = FactoryGirl.create(:page, :layout_template => "rspec_layout") page = FactoryGirl.create(:page, :parent_id => parent.id) expected_layout = { :selected => parent.layout_template } expect(helper.template_options(:layout_template, page)).to eq(expected_layout) end end context "when page doesn't have parent page" do it "returns default application template" do page = FactoryGirl.create(:page) expected_layout = { :selected => "application" } expect(helper.template_options(:layout_template, page)).to eq(expected_layout) end end end end describe "#page_meta_information" do let(:page) { FactoryGirl.build(:page) } context "when show_in_menu is false" do it "adds 'hidden' label" do page.show_in_menu = false expect(helper.page_meta_information(page)).to eq( %Q{#{::I18n.t('refinery.admin.pages.page.hidden')}} ) end end context "when draft is true" do it "adds 'draft' label" do page.draft = true expect(helper.page_meta_information(page)).to eq( %Q{#{::I18n.t('refinery.admin.pages.page.draft')}} ) end end end describe "#page_title_with_translations" do let(:page) { FactoryGirl.build(:page) } before do Globalize.with_locale(:en) do page.title = "draft" page.save! end Globalize.with_locale(:lv) do page.title = "melnraksts" page.save! end end context "when title is present" do it "returns it" do expect(helper.page_title_with_translations(page)).to eq("draft") end end context "when title for current locale isn't available" do it "returns existing title from translations" do Page.translation_class.where(:locale => :en).first.destroy expect(helper.page_title_with_translations(page)).to eq("melnraksts") end end end end end end