cf 1.0.1.rc1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -44,17 +44,13 @@ module CF::Service
44
44
  end
45
45
  end
46
46
 
47
- until offerings.size < 2
48
- # cast to Array since it might be given as a Service with #invoke
49
- offerings = Array(input[:offering, offerings.sort_by(&:label)])
50
- input.forget(:offering)
51
- end
47
+ selected_offerings = offerings.any? ? Array(input[:offering, offerings.sort_by(&:label)]) : []
52
48
 
53
- if offerings.empty?
49
+ if selected_offerings.empty?
54
50
  fail "Cannot find services matching the given criteria."
55
51
  end
56
52
 
57
- offering = offerings.first
53
+ offering = selected_offerings.first
58
54
 
59
55
  service = client.service_instance
60
56
  service.name = input[:name, offering]
@@ -1,3 +1,3 @@
1
1
  module CF
2
- VERSION = "1.0.1.rc1".freeze
2
+ VERSION = "1.1.0".freeze
3
3
  end
@@ -0,0 +1,67 @@
1
+ require "spec_helper"
2
+
3
+ module CF::Service
4
+ describe Create do
5
+ before do
6
+ any_instance_of(CF::CLI) do |cli|
7
+ stub(cli).client { client }
8
+ end
9
+ end
10
+
11
+ describe "metadata" do
12
+ let(:command) { Mothership.commands[:create_service] }
13
+
14
+ describe "command" do
15
+ subject { command }
16
+ its(:description) { should eq "Create a service" }
17
+ it { expect(Mothership::Help.group(:services, :manage)).to include(subject) }
18
+ end
19
+
20
+ include_examples "inputs must have descriptions"
21
+
22
+ describe "arguments" do
23
+ subject { command.arguments }
24
+ it "has the correct argument order" do
25
+ should eq([{:type => :optional, :value => nil, :name => :offering}, {:type => :optional, :value => nil, :name => :name}])
26
+ end
27
+ end
28
+ end
29
+
30
+ context "when there are services" do
31
+ let(:service_plan) { fake(:service_plan, :name => "F20") }
32
+ let(:selected_service) { fake(:service, :label => "Foo Service", :service_plans => [service_plan]) }
33
+ let(:command) { Mothership.new.invoke(:create_service, {}, {}) }
34
+ let(:client) { fake_client(:services => services) }
35
+
36
+ describe "when there is at least one service" do
37
+ let(:services) { [selected_service] }
38
+
39
+ it "asks for the service" do
40
+ mock_ask("What kind?", anything) { selected_service }
41
+ mock_ask("Name?", anything) { selected_service.label }
42
+ mock_ask("Which plan?", anything) { service_plan }
43
+ any_instance_of(CFoundry::V2::ServiceInstance) do |service_instance|
44
+ stub(service_instance).create!
45
+ end
46
+
47
+ capture_output { command }
48
+ end
49
+ end
50
+
51
+ describe "when there are more than one services" do
52
+ let(:services) { [selected_service, fake(:service), fake(:service)] }
53
+
54
+ it "asks for the service" do
55
+ mock_ask("What kind?", anything) { selected_service }
56
+ mock_ask("Name?", anything) { selected_service.label }
57
+ mock_ask("Which plan?", anything) { service_plan }
58
+ any_instance_of(CFoundry::V2::ServiceInstance) do |service_instance|
59
+ stub(service_instance).create!
60
+ end
61
+
62
+ capture_output { command }
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1.rc1
5
- prerelease: 6
4
+ version: 1.1.0
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Cloud Foundry Team
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-05-21 00:00:00.000000000 Z
13
+ date: 2013-05-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: addressable
@@ -51,10 +51,10 @@ dependencies:
51
51
  requirements:
52
52
  - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
- version: 1.1.0.rc2
54
+ version: 1.2.0
55
55
  - - <
56
56
  - !ruby/object:Gem::Version
57
- version: '1.2'
57
+ version: '1.3'
58
58
  type: :runtime
59
59
  prerelease: false
60
60
  version_requirements: !ruby/object:Gem::Requirement
@@ -62,10 +62,10 @@ dependencies:
62
62
  requirements:
63
63
  - - ! '>='
64
64
  - !ruby/object:Gem::Version
65
- version: 1.1.0.rc2
65
+ version: 1.2.0
66
66
  - - <
67
67
  - !ruby/object:Gem::Version
68
- version: '1.2'
68
+ version: '1.3'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: interact
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -477,6 +477,7 @@ files:
477
477
  - spec/cf/cli/route/map_spec.rb
478
478
  - spec/cf/cli/route/unmap_spec.rb
479
479
  - spec/cf/cli/service/bind_spec.rb
480
+ - spec/cf/cli/service/create_spec.rb
480
481
  - spec/cf/cli/service/delete_spec.rb
481
482
  - spec/cf/cli/service/rename_spec.rb
482
483
  - spec/cf/cli/service/service_spec.rb
@@ -534,16 +535,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
534
535
  version: '0'
535
536
  segments:
536
537
  - 0
537
- hash: 1616370664200184088
538
+ hash: -4141716087622851168
538
539
  required_rubygems_version: !ruby/object:Gem::Requirement
539
540
  none: false
540
541
  requirements:
541
- - - ! '>'
542
+ - - ! '>='
542
543
  - !ruby/object:Gem::Version
543
- version: 1.3.1
544
+ version: '0'
544
545
  requirements: []
545
546
  rubyforge_project: cf
546
- rubygems_version: 1.8.24
547
+ rubygems_version: 1.8.25
547
548
  signing_key:
548
549
  specification_version: 3
549
550
  summary: Friendly command-line interface for Cloud Foundry.
@@ -622,6 +623,7 @@ test_files:
622
623
  - spec/cf/cli/route/map_spec.rb
623
624
  - spec/cf/cli/route/unmap_spec.rb
624
625
  - spec/cf/cli/service/bind_spec.rb
626
+ - spec/cf/cli/service/create_spec.rb
625
627
  - spec/cf/cli/service/delete_spec.rb
626
628
  - spec/cf/cli/service/rename_spec.rb
627
629
  - spec/cf/cli/service/service_spec.rb