defmodule BerrypodWeb.Shop.ContentTest do
  use BerrypodWeb.ConnCase, async: false

  import Phoenix.LiveViewTest
  import Berrypod.AccountsFixtures

  setup do
    user_fixture()
    {:ok, _} = Berrypod.Settings.set_site_live(true)
    Berrypod.Site.seed_defaults()
    :ok
  end

  describe "About page" do
    test "renders about page", %{conn: conn} do
      {:ok, _view, html} = live(conn, ~p"/about")

      assert html =~ "About us"
      assert html =~ "Tell your customers who you are"
    end

    test "displays about content body", %{conn: conn} do
      {:ok, _view, html} = live(conn, ~p"/about")

      assert html =~ "placeholder text"
    end
  end

  describe "Delivery page" do
    test "renders delivery page", %{conn: conn} do
      {:ok, _view, html} = live(conn, ~p"/delivery")

      assert html =~ "Delivery &amp; returns"
      assert html =~ "shipping and returns"
    end

    test "displays delivery content", %{conn: conn} do
      {:ok, _view, html} = live(conn, ~p"/delivery")

      assert html =~ "Production time"
      assert html =~ "Returns &amp; exchanges"
      assert html =~ "Cancellations"
    end

    test "displays shipping fallback when no rates are configured", %{conn: conn} do
      {:ok, _view, html} = live(conn, ~p"/delivery")

      assert html =~ "worldwide"
    end
  end

  describe "Privacy page" do
    test "renders privacy page", %{conn: conn} do
      {:ok, _view, html} = live(conn, ~p"/privacy")

      assert html =~ "Privacy policy"
      assert html =~ "personal information"
    end

    test "displays privacy content", %{conn: conn} do
      {:ok, _view, html} = live(conn, ~p"/privacy")

      assert html =~ "What we collect"
      assert html =~ "Cookies"
      assert html =~ "Your rights"
    end
  end

  describe "Terms page" do
    test "renders terms page", %{conn: conn} do
      {:ok, _view, html} = live(conn, ~p"/terms")

      assert html =~ "Terms of service"
      assert html =~ "The legal bits"
    end

    test "displays terms content", %{conn: conn} do
      {:ok, _view, html} = live(conn, ~p"/terms")

      assert html =~ "Products"
      assert html =~ "Payment"
      assert html =~ "Intellectual property"
    end
  end

  describe "Footer links" do
    test "footer contains policy page links", %{conn: conn} do
      {:ok, _view, html} = live(conn, ~p"/about")

      assert html =~ ~s(href="/delivery")
      assert html =~ ~s(href="/privacy")
      assert html =~ ~s(href="/terms")
      assert html =~ ~s(href="/contact")
    end
  end
end
