require "rails_helper"

describe "Custom Pages" do
  context "New custom page" do
    context "Published" do
      scenario "See page" do
        custom_page = create(
          :site_customization_page, :published,
          slug: "other-slug",
          title_en: "Custom page",
          content_en: "Text for new custom page",
          print_content_flag: false
        )

        visit custom_page.url

        expect(page).to have_title("Custom page")
        expect(page).to have_css "h1", text: "Custom page"
        expect(page).to have_content("Text for new custom page")
        expect(page).not_to have_content("Print this info")
      end

      scenario "Show all fields and text with links" do
        custom_page = create(
          :site_customization_page, :published,
          slug: "slug-with-all-fields-filled",
          title_en: "Custom page",
          subtitle_en: "This is my new custom page",
          content_en: "Text for new custom page with a link to https://consul.dev",
          print_content_flag: true
        )

        visit custom_page.url

        expect(page).to have_title("Custom page")
        expect(page).to have_css "h1", text: "Custom page"
        expect(page).to have_css "h2", text: "This is my new custom page"
        expect(page).to have_content("Text for new custom page with a link to https://consul.dev")
        expect(page).to have_link("https://consul.dev")
        expect(page).to have_content("Print this info")
      end

      scenario "Don't show subtitle if its blank" do
        custom_page = create(
          :site_customization_page, :published,
          slug: "slug-without-subtitle",
          title_en: "Custom page",
          subtitle_en: "",
          content_en: "Text for new custom page",
          print_content_flag: false
        )

        visit custom_page.url

        expect(page).to have_title("Custom page")
        expect(page).to have_css "h1", text: "Custom page"
        expect(page).to have_content("Text for new custom page")
        expect(page).not_to have_css "h2"
        expect(page).not_to have_content("Print this info")
      end

      scenario "Listed in more information page" do
        create(
          :site_customization_page, :published,
          slug: "another-slug",
          title_en: "Another custom page",
          subtitle_en: "Subtitle for custom page",
          more_info_flag: true
        )

        visit help_path

        expect(page).to have_content("Another custom page")
      end

      scenario "Not listed in more information page" do
        custom_page = create(
          :site_customization_page, :published,
          slug: "another-slug", title_en: "Another custom page",
          subtitle_en: "Subtitle for custom page",
          more_info_flag: false
        )

        visit help_path

        expect(page).not_to have_content("Another custom page")

        visit custom_page.url

        expect(page).to have_title("Another custom page")
        expect(page).to have_css "h1", text: "Another custom page"
        expect(page).to have_content("Subtitle for custom page")
      end

      scenario "Show widget cards for that page" do
        custom_page = create(:site_customization_page, :published)
        create(:widget_card, cardable: custom_page, title: "Medium prominent card", order: 2)
        create(:widget_card, cardable: custom_page, title: "Less prominent card", order: 2)
        create(:widget_card, cardable: custom_page, title: "Card Highlights", order: 1)

        visit custom_page.url

        expect("CARD HIGHLIGHTS").to appear_before("MEDIUM PROMINENT CARD")
        expect("MEDIUM PROMINENT CARD").to appear_before("LESS PROMINENT CARD")
      end
    end
  end
end
