spec/lib/azeroth/resourceable/builder_spec.rb in azeroth-0.0.3 vs spec/lib/azeroth/resourceable/builder_spec.rb in azeroth-0.0.4
- old
+ new
@@ -1,92 +1,16 @@
require 'spec_helper'
-shared_examples 'a builder that adds a resource for route' do |route|
- let(:params) { {} }
- let(:instance) { clazz.new(params) }
- let(:value) { instance.public_send("#{route}_resource") }
-
- it "adds #{route}_resource" do
- expect { subject.build }
- .to change { clazz.new.respond_to?(:"#{route}_resource") }
- .from(false).to(true)
- end
-
- it "#{route}_resource responds with correct resource" do
- subject.build
- expect(value.to_json).to eq(expected.to_json)
- end
-end
-
describe Azeroth::Resourceable::Builder do
- subject { described_class.new(clazz, :document) }
+ subject { described_class.new(klass, :document) }
- let(:name) { 'The Doc' }
- let(:document_params) { { name: name } }
-
- let(:clazz) do
+ let(:klass) do
Class.new(Controller) do
end
end
describe '#build' do
- describe 'index_resource' do
- it_behaves_like 'a builder that adds a resource for route', :index do
- let(:expected) { Document.all }
- end
- end
-
- describe 'new_resource' do
- it_behaves_like 'a builder that adds a resource for route', :new do
- let(:expected) { Document.new }
- end
- end
-
- describe 'create_resource' do
- it_behaves_like 'a builder that adds a resource for route', :create do
- let(:expected) { Document.last }
- let(:params) { { document: document_params } }
-
- it 'creates the resource' do
- subject.build
- expect do
- instance.create_resource
- end.to change(Document, :count).by(1)
- end
- end
- end
-
- describe 'show_resource' do
- let(:document) { Document.create }
-
- it_behaves_like 'a builder that adds a resource for route', :show do
- let(:expected) { document }
- let(:params) { { id: document.id } }
- end
- end
-
- describe 'update_resource' do
- let!(:document) { Document.create }
-
- it_behaves_like 'a builder that adds a resource for route', :update do
- let(:expected) { Document.find(document.id) }
- let(:params) { { id: document.id, document: document_params } }
-
- context 'after the methods has been built' do
- before { subject.build }
-
- it 'updates the resource the resource' do
- expect do
- instance.update_resource
- end.to change { document.reload.name }.to(name)
- end
-
- it 'does not create the resource' do
- expect do
- instance.update_resource
- end.not_to change(Document, :count)
- end
- end
- end
+ it_behaves_like 'a route resource build' do
+ let(:builder) { subject }
end
end
end