Add specs for attributable aspect of ci config entry
This commit is contained in:
parent
4509594e20
commit
0410861171
|
@ -8,7 +8,9 @@ module Gitlab
|
|||
class_methods do
|
||||
def attributes(*attributes)
|
||||
attributes.flatten.each do |attribute|
|
||||
raise ArgumentError if method_defined?(attribute)
|
||||
if method_defined?(attribute)
|
||||
raise ArgumentError, 'Method already defined!'
|
||||
end
|
||||
|
||||
define_method(attribute) do
|
||||
return unless config.is_a?(Hash)
|
||||
|
|
|
@ -1,18 +1,21 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Gitlab::Ci::Config::Entry::Attributable do
|
||||
let(:node) { Class.new }
|
||||
let(:node) do
|
||||
Class.new do
|
||||
include Gitlab::Ci::Config::Entry::Attributable
|
||||
end
|
||||
end
|
||||
|
||||
let(:instance) { node.new }
|
||||
|
||||
before do
|
||||
node.include(described_class)
|
||||
|
||||
node.class_eval do
|
||||
attributes :name, :test
|
||||
end
|
||||
end
|
||||
|
||||
context 'config is a hash' do
|
||||
context 'when config is a hash' do
|
||||
before do
|
||||
allow(instance)
|
||||
.to receive(:config)
|
||||
|
@ -29,7 +32,7 @@ describe Gitlab::Ci::Config::Entry::Attributable do
|
|||
end
|
||||
end
|
||||
|
||||
context 'config is not a hash' do
|
||||
context 'when config is not a hash' do
|
||||
before do
|
||||
allow(instance)
|
||||
.to receive(:config)
|
||||
|
@ -40,4 +43,18 @@ describe Gitlab::Ci::Config::Entry::Attributable do
|
|||
expect(instance.test).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when method is already defined in a superclass' do
|
||||
it 'raises an error' do
|
||||
expectation = expect do
|
||||
Class.new(String) do
|
||||
include Gitlab::Ci::Config::Entry::Attributable
|
||||
|
||||
attributes :length
|
||||
end
|
||||
end
|
||||
|
||||
expectation.to raise_error(ArgumentError, 'Method already defined!')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue