spec/lib/sinclair/method_definitions_spec.rb in sinclair-1.10.0 vs spec/lib/sinclair/method_definitions_spec.rb in sinclair-1.11.0
- old
+ new
@@ -4,11 +4,12 @@
describe Sinclair::MethodDefinitions do
subject(:definitions) { described_class.new }
describe '#add' do
- let(:name) { :the_method }
+ let(:name) { :the_method }
+ let(:klass) { Class.new }
context 'when passing block' do
it 'returns the resulting array' do
expect(definitions.add(name) { RandomGenerator.rand })
.to be_a(Array)
@@ -39,85 +40,83 @@
it 'creates a new StringDefinition' do
expect(definitions.add(name, 'RandomGenerator.rand').last)
.to be_a(Sinclair::MethodDefinition::StringDefinition)
end
end
- end
- describe '#add_definition' do
context 'when there are no options nor block' do
let(:type) { :call }
let(:arguments) { %i[attr_reader some_attribute other_attribute] }
it do
- expect(definitions.add_definition(type, *arguments))
+ expect(definitions.add(*arguments, type: type))
.to be_a(Array)
end
it 'creates a new definition' do
- expect(definitions.add_definition(type, *arguments).last)
+ expect(definitions.add(*arguments, type: type).last)
.to be_a(Sinclair::MethodDefinition)
end
it 'creates a new definition of the chosen type' do
- expect(definitions.add_definition(type, *arguments).last)
+ expect(definitions.add(*arguments, type: type).last)
.to be_a(Sinclair::MethodDefinition::CallDefinition)
end
it 'initializes it correctly' do
- expect(definitions.add_definition(type, *arguments).last.code_string)
- .to eq('attr_reader :some_attribute, :other_attribute')
+ expect { klass.module_eval(&definitions.add(*arguments, type: type).last.code_block) }
+ .to add_method(:some_attribute).to(klass)
end
end
context 'when a block is given' do
let(:type) { :block }
let(:method_name) { :the_method }
let(:block) { proc { 10 } }
it do
- expect(definitions.add_definition(type, method_name, &block))
+ expect(definitions.add(type, method_name, &block))
.to be_a(Array)
end
it 'creates a new definition' do
- expect(definitions.add_definition(type, method_name, &block).last)
+ expect(definitions.add(type, method_name, &block).last)
.to be_a(Sinclair::MethodDefinition)
end
it 'creates a new definition of the chosen type' do
- expect(definitions.add_definition(type, method_name, &block).last)
+ expect(definitions.add(type, method_name, &block).last)
.to be_a(Sinclair::MethodDefinition::BlockDefinition)
end
it 'initializes it correctly' do
- expect(definitions.add_definition(type, method_name, &block).last.name)
+ expect(definitions.add(method_name, type: type, &block).last.name)
.to eq(method_name)
end
end
context 'when options are given' do
let(:type) { :string }
let(:method_name) { :the_method }
let(:code) { '10' }
it do
- expect(definitions.add_definition(type, method_name, code))
+ expect(definitions.add(method_name, code, type: type))
.to be_a(Array)
end
it 'creates a new definition' do
- expect(definitions.add_definition(type, method_name, code).last)
+ expect(definitions.add(method_name, code, type: type).last)
.to be_a(Sinclair::MethodDefinition)
end
it 'creates a new definition of the chosen type' do
- expect(definitions.add_definition(type, method_name, code).last)
+ expect(definitions.add(method_name, code, type: type).last)
.to be_a(Sinclair::MethodDefinition::StringDefinition)
end
it 'initializes it correctly' do
- expect(definitions.add_definition(type, method_name, code).last.name)
+ expect(definitions.add(method_name, code, type: type).last.name)
.to eq(method_name)
end
end
end
end