Sha256: a7f9af09c08436169b08b1893630c383f3aa8b749de3d1862a025f6dbf1224aa
Contents?: true
Size: 1.84 KB
Versions: 2
Compression:
Stored size: 1.84 KB
Contents
require 'spec_helper' describe MetaPresenter::Builder do let(:controller_class) { ApplicationController } let(:controller) { controller_class.new } let(:action_name) { 'logs' } let(:object) { described_class.new(controller, action_name) } def controller_ancestors controller.class.ancestors end describe '#new' do subject { object } it { expect(subject.controller).to eql(controller) } it { expect(subject.action_name).to eql(action_name) } end describe '#presenter_class' do subject { object.presenter_class } before do expect(controller_ancestors.first).to eql(controller_class) end context "application controller" do let(:controller_class) { ApplicationController } it { is_expected.to be ApplicationPresenter } end context "subclass of ApplicationController" do let(:controller_class) { PagesController } context "action with a presenter class defined" do let(:action_name) { "logs" } before { expect(Object).to_not be_const_defined('LogsPresenter') } it { is_expected.to be Pages::LogsPresenter } end context "action without a presenter class defined" do let(:action_name) { "fairy" } before { expect(Object).to_not be_const_defined('FairyPresenter') } it "defers to the parent presenter" do expect(subject).to be PagesPresenter end context "but the file exists" do let(:action_name) { "only_file_exists" } it do expect { subject }.to raise_error(MetaPresenter::Builder::FileExistsButPresenterNotDefinedError) end end end end context "namespaced" do let(:controller_class) { Admin::DashboardController } let(:action_name) { "inbox" } it { is_expected.to be Admin::Dashboard::InboxPresenter } end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
meta_presenter-0.1.4 | spec/meta_presenter/builder_spec.rb |
meta_presenter-0.1.3 | spec/meta_presenter/builder_spec.rb |