Fix Resource attribute bug
Allow Resources to have the same attribute name but different attribute values
This commit is contained in:
parent
75b1837da7
commit
1d22498251
2 changed files with 37 additions and 11 deletions
|
@ -116,23 +116,13 @@ module QA
|
|||
end
|
||||
private_class_method :evaluator
|
||||
|
||||
def self.dynamic_attributes
|
||||
const_get(:DynamicAttributes)
|
||||
rescue NameError
|
||||
mod = const_set(:DynamicAttributes, Module.new)
|
||||
|
||||
include mod
|
||||
|
||||
mod
|
||||
end
|
||||
|
||||
class DSL
|
||||
def initialize(base)
|
||||
@base = base
|
||||
end
|
||||
|
||||
def attribute(name, &block)
|
||||
@base.dynamic_attributes.module_eval do
|
||||
@base.module_eval do
|
||||
attr_writer(name)
|
||||
|
||||
define_method(name) do
|
||||
|
|
|
@ -213,6 +213,42 @@ describe QA::Resource::Base do
|
|||
.to raise_error(described_class::NoValueError, "No value was computed for no_block of #{resource.class.name}.")
|
||||
end
|
||||
end
|
||||
|
||||
context 'when multiple resources have the same attribute name' do
|
||||
let(:base) do
|
||||
Class.new(QA::Resource::Base) do
|
||||
def fabricate!
|
||||
'any'
|
||||
end
|
||||
|
||||
def self.current_url
|
||||
'http://stub'
|
||||
end
|
||||
end
|
||||
end
|
||||
let(:first_resource) do
|
||||
Class.new(base) do
|
||||
attribute :test do
|
||||
'first block'
|
||||
end
|
||||
end
|
||||
end
|
||||
let(:second_resource) do
|
||||
Class.new(base) do
|
||||
attribute :test do
|
||||
'second block'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
it 'has unique attribute values' do
|
||||
first_result = first_resource.fabricate!(resource: first_resource.new)
|
||||
second_result = second_resource.fabricate!(resource: second_resource.new)
|
||||
|
||||
expect(first_result.test).to eq 'first block'
|
||||
expect(second_result.test).to eq 'second block'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#web_url' do
|
||||
|
|
Loading…
Reference in a new issue