~ubuntu-branches/ubuntu/wily/puppet/wily-proposed

« back to all changes in this revision

Viewing changes to spec/unit/module_tool/metadata_spec.rb

  • Committer: Package Import Robot
  • Author(s): Stig Sandbeck Mathisen
  • Date: 2014-10-24 13:47:15 UTC
  • mfrom: (3.1.64 sid)
  • Revision ID: package-import@ubuntu.com-20141024134715-6ig54u0c4gar36ss
Tags: 3.7.2-1
* Imported upstream release 3.7.2
* Declare compliance with Debian Policy 3.9.6

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
  let(:data) { {} }
6
6
  let(:metadata) { Puppet::ModuleTool::Metadata.new }
7
7
 
 
8
  describe 'property lookups' do
 
9
    subject { metadata }
 
10
 
 
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
 
15
          subject.send(prop)
 
16
        end
 
17
      end
 
18
    end
 
19
  end
 
20
 
8
21
  describe "#update" do
9
22
    subject { metadata.update(data) }
10
23
 
156
169
 
157
170
    end
158
171
 
 
172
    context "with a valid dependency" do
 
173
      let(:data) { {'dependencies' => [{'name' => 'puppetlabs-goodmodule'}] }}
 
174
 
 
175
      it "adds the dependency" do
 
176
        subject.dependencies.size.should == 1
 
177
      end
 
178
    end
 
179
 
 
180
    context "with a invalid dependency name" do
 
181
      let(:data) { {'dependencies' => [{'name' => 'puppetlabsbadmodule'}] }}
 
182
 
 
183
      it "raises an exception" do
 
184
        expect { subject }.to raise_error(ArgumentError)
 
185
      end
 
186
    end
 
187
 
 
188
    context "with a valid dependency version range" do
 
189
      let(:data) { {'dependencies' => [{'name' => 'puppetlabs-badmodule', 'version_requirement' => '>= 2.0.0'}] }}
 
190
 
 
191
      it "adds the dependency" do
 
192
        subject.dependencies.size.should == 1
 
193
      end
 
194
    end
 
195
 
 
196
    context "with a invalid version range" do
 
197
      let(:data) { {'dependencies' => [{'name' => 'puppetlabsbadmodule', 'version_requirement' => '>= banana'}] }}
 
198
 
 
199
      it "raises an exception" do
 
200
        expect { subject }.to raise_error(ArgumentError)
 
201
      end
 
202
    end
 
203
 
 
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'}] }
 
207
      }
 
208
 
 
209
      it "raises an exception" do
 
210
        expect { subject }.to raise_error(ArgumentError)
 
211
      end
 
212
    end
 
213
 
 
214
    context "adding a duplicate dependency" do
 
215
      let(:data) { {'dependencies' => [{'name' => 'puppetlabs-origmodule', 'version_requirement' => '1.0.0'}] }}
 
216
 
 
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)
 
220
      end
 
221
 
 
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
 
225
      end
 
226
    end
159
227
  end
160
228
 
161
229
  describe '#dashed_name' do
202
270
  describe "#to_hash" do
203
271
    subject { metadata.to_hash }
204
272
 
205
 
    its(:keys) do
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
207
275
    end
208
276
 
209
277
    describe "['license']" do
213
281
    end
214
282
 
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
218
286
      end
219
287
    end
220
288