6
6
let(:metadata) { Puppet::ModuleTool::Metadata.new }
8
describe 'property lookups' do
11
%w[ name version author summary license source project_page issues_url
12
dependencies dashed_name release_name description ].each do |prop|
13
describe "##{prop}" do
14
it "responds to the property" do
8
21
describe "#update" do
9
22
subject { metadata.update(data) }
172
context "with a valid dependency" do
173
let(:data) { {'dependencies' => [{'name' => 'puppetlabs-goodmodule'}] }}
175
it "adds the dependency" do
176
subject.dependencies.size.should == 1
180
context "with a invalid dependency name" do
181
let(:data) { {'dependencies' => [{'name' => 'puppetlabsbadmodule'}] }}
183
it "raises an exception" do
184
expect { subject }.to raise_error(ArgumentError)
188
context "with a valid dependency version range" do
189
let(:data) { {'dependencies' => [{'name' => 'puppetlabs-badmodule', 'version_requirement' => '>= 2.0.0'}] }}
191
it "adds the dependency" do
192
subject.dependencies.size.should == 1
196
context "with a invalid version range" do
197
let(:data) { {'dependencies' => [{'name' => 'puppetlabsbadmodule', 'version_requirement' => '>= banana'}] }}
199
it "raises an exception" do
200
expect { subject }.to raise_error(ArgumentError)
204
context "with duplicate dependencies" do
205
let(:data) { {'dependencies' => [{'name' => 'puppetlabs-dupmodule', 'version_requirement' => '1.0.0'},
206
{'name' => 'puppetlabs-dupmodule', 'version_requirement' => '0.0.1'}] }
209
it "raises an exception" do
210
expect { subject }.to raise_error(ArgumentError)
214
context "adding a duplicate dependency" do
215
let(:data) { {'dependencies' => [{'name' => 'puppetlabs-origmodule', 'version_requirement' => '1.0.0'}] }}
217
it "with a different version raises an exception" do
218
metadata.add_dependency('puppetlabs-origmodule', '>= 0.0.1')
219
expect { subject }.to raise_error(ArgumentError)
222
it "with the same version does not add another dependency" do
223
metadata.add_dependency('puppetlabs-origmodule', '1.0.0')
224
subject.dependencies.size.should == 1
161
229
describe '#dashed_name' do
202
270
describe "#to_hash" do
203
271
subject { metadata.to_hash }
206
subject.sort.should == %w[ name version author summary license source issues_url project_page dependencies ].sort
273
it "contains the default set of keys" do
274
subject.keys.sort.should == %w[ name version author summary license source issues_url project_page dependencies ].sort
209
277
describe "['license']" do
215
283
describe "['dependencies']" do
216
it "defaults to an empty Array" do
217
subject['dependencies'].should == []
284
it "defaults to an empty set" do
285
subject['dependencies'].should == Set.new