spec/seory/dsl_spec.rb in seory-0.0.4 vs spec/seory/dsl_spec.rb in seory-0.1.0
- old
+ new
@@ -5,11 +5,11 @@
subject(:seory) { seory_class.lookup(controller) }
context 'with traditional syntax' do
let(:seory_class) { Object.new.extend(Seory::Dsl) }
before do
- seory_class.describe do
+ seory_class.describe('Group A') do
match ->(c) { c.controller_name == 'reports' } do
title 'Useful reports'
end
match 'products#index' do
@@ -28,33 +28,51 @@
end
end
end
context 'at reports#index / match with proc' do
- let(:controller) { double('controller', controller_name: 'reports', action_name: 'index') }
+ let(:controller) { double('controller', controller_name: 'reports', controller_path: 'reports', action_name: 'index') }
specify { expect(seory.title).to eq 'Useful reports' }
end
context 'at products#index' do
- let(:controller) { double('controller', controller_name: 'products', action_name: 'index') }
+ let(:controller) { double('controller', controller_name: 'products', controller_path: 'products', action_name: 'index') }
specify { expect(seory.title).to eq 'My Great Product' }
specify { expect(seory.h1).to eq 'Great Product Name' }
specify { expect(seory.misc(:option)).to eq 'static optional val' }
specify { expect(seory.h2).to eq 'default h2' }
end
context 'at misc#show' do
- let(:controller) { double('controller', controller_name: 'misc', action_name: 'show') }
+ let(:controller) { double('controller', controller_name: 'misc', controller_path: 'misc', action_name: 'show') }
specify { expect(seory.h1).to eq 'MISC' }
specify { expect(seory.misc(:option)).to eq 'dynamic option name at misc' }
end
end
+ context 'accessor to assign' do
+ let(:seory_class) { Object.new.extend(Seory::Dsl) }
+ let(:controller) do
+ controller_double('products#show') { @product = OpenStruct.new(name: 'seory') }
+ end
+
+ before do
+ seory_class.describe do
+ match slug('products#show') do
+ assign_reader :product
+ title { product.name }
+ end
+ end
+ end
+
+ specify { expect(seory.title).to eq 'seory' }
+ end
+
context 'with matcher build dsl syntax' do
let(:seory_class) { Object.new.extend(Seory::Dsl) }
before do
seory_class.describe do
match path('/products/special-product') do
@@ -67,10 +85,10 @@
end
end
context 'at products#show' do
let(:controller) do
- double('controller', controller_name: 'products', action_name: 'show', params: {id: 42}).tap do |c|
+ double('controller', controller_name: 'products', controller_path: 'products', action_name: 'show', params: {id: 42}).tap do |c|
allow(c).to receive_message_chain(:request, :fullpath) { '/products/42' }
end
end
specify { expect(seory.title).to eq 'Great Product Detail' }