Sha256: 403ffe15c9a785b13ae58b8c61f30087ff4bd4eaa7612a21dc5da747b0cc0f90

Contents?: true

Size: 1.4 KB

Versions: 1

Compression:

Stored size: 1.4 KB

Contents

# frozen_string_literal: true

require "rails_helper"

module Archangel
  module Frontend
    RSpec.describe PagesController, type: :controller do
      let(:page) { create(:page) }

      describe "loads correct layout" do
        it "loads correct view" do
          get :show, params: { path: page.path }

          expect(response).to render_with_layout("frontend")
        end
      end

      describe "GET #show" do
        it "assigns the requested page as @page" do
          get :show, params: { path: page.path }

          expect(response.content_type).to eq "text/html"
          expect(assigns(:page)).to eq(page)
        end

        it "assigns the requested page as @page for JSON request" do
          get :show, params: { path: page.path }, format: :json

          expect(response.content_type).to eq "application/json"
          expect(assigns(:page)).to eq(page)
        end

        it "redirects to homepage" do
          page = create(:page, :homepage)

          get :show, params: { path: page.path }

          expect(response).to redirect_to(root_path)
          expect(response.status).to eq(301)
        end

        it "returns a 404 status code when page is not found" do
          get :show, params: { path: "not-a-real-page" }

          expect(response).to render_template("archangel/errors/error_404")
          expect(response).to have_http_status(:not_found)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
archangel-0.3.0 spec/controllers/archangel/frontend/pages_controller_spec.rb