From 5ed8286e742597720d48e3bf6fc56938ba717f5e Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Mon, 12 Mar 2018 13:58:54 +0100 Subject: Extract variables collection item to a separate class --- .../gitlab/ci/variables/collection/item_spec.rb | 47 ++++++++++++++++++++++ spec/lib/gitlab/ci/variables/collection_spec.rb | 5 ++- 2 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 spec/lib/gitlab/ci/variables/collection/item_spec.rb (limited to 'spec/lib') diff --git a/spec/lib/gitlab/ci/variables/collection/item_spec.rb b/spec/lib/gitlab/ci/variables/collection/item_spec.rb new file mode 100644 index 00000000000..6f86d658f52 --- /dev/null +++ b/spec/lib/gitlab/ci/variables/collection/item_spec.rb @@ -0,0 +1,47 @@ +require 'spec_helper' + +describe Gitlab::Ci::Variables::Collection::Item do + let(:variable) do + { key: 'VAR', value: 'something', public: true } + end + + describe '.fabricate' do + it 'supports using a hash' do + resource = described_class.fabricate(variable) + + expect(resource).to be_a(described_class) + expect(resource).to eq variable + end + + it 'supports using an active record resource' do + resource = described_class.fabricate(create(:ci_variable)) + + expect(resource).to be_a(described_class) + expect(resource).to eq(key: 'VARIABLE_1', + value: 'VARIABLE_VALUE', + public: false) + end + + it 'supports using another collection item' do + item = described_class.new(**variable) + + resource = described_class.fabricate(item) + + expect(resource).to be_a(described_class) + expect(resource).to eq variable + expect(resource.object_id).not_to eq item.object_id + end + end + + describe '#==' do + it 'compares a hash representation of a variable' do + expect(described_class.new(**variable) == variable).to be true + end + end + + describe '#to_hash' do + it 'returns a hash representation of a collection item' do + expect(described_class.new(**variable).to_hash).to eq variable + end + end +end diff --git a/spec/lib/gitlab/ci/variables/collection_spec.rb b/spec/lib/gitlab/ci/variables/collection_spec.rb index 16c23ae450a..c4b2df7dede 100644 --- a/spec/lib/gitlab/ci/variables/collection_spec.rb +++ b/spec/lib/gitlab/ci/variables/collection_spec.rb @@ -3,10 +3,11 @@ require 'spec_helper' describe Gitlab::Ci::Variables::Collection do describe '.new' do it 'can be initialized with an array' do - variable = { key: 'SOME_VAR', value: 'Some Value' } + variable = { key: 'VAR', value: 'value', public: true } + collection = described_class.new([variable]) - expect(collection.first.to_h).to include variable + expect(collection.first.to_hash).to eq variable end it 'can be initialized without an argument' do -- cgit v1.2.1