ruroku 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data/.travis.yml +5 -0
  2. data/CHANGELOG.md +12 -0
  3. data/Gemfile +9 -0
  4. data/README.md +180 -48
  5. data/Rakefile +7 -1
  6. data/TODO.md +0 -4
  7. data/lib/ruroku.rb +9 -1
  8. data/lib/ruroku/addon.rb +8 -10
  9. data/lib/ruroku/addon_set.rb +4 -1
  10. data/lib/ruroku/api.rb +20 -1
  11. data/lib/ruroku/app.rb +29 -20
  12. data/lib/ruroku/app_set.rb +13 -0
  13. data/lib/ruroku/base.rb +20 -3
  14. data/lib/ruroku/collaborator.rb +5 -2
  15. data/lib/ruroku/collaborator_set.rb +4 -1
  16. data/lib/ruroku/config_var.rb +9 -2
  17. data/lib/ruroku/config_var_set.rb +5 -2
  18. data/lib/ruroku/domain.rb +8 -9
  19. data/lib/ruroku/domain_set.rb +4 -1
  20. data/lib/ruroku/key.rb +8 -0
  21. data/lib/ruroku/key_set.rb +17 -0
  22. data/lib/ruroku/nested_base.rb +3 -2
  23. data/lib/ruroku/nested_resource_set.rb +28 -0
  24. data/lib/ruroku/process.rb +14 -11
  25. data/lib/ruroku/process_set.rb +11 -28
  26. data/lib/ruroku/release.rb +9 -5
  27. data/lib/ruroku/release_set.rb +4 -1
  28. data/lib/ruroku/resource_set.rb +61 -6
  29. data/lib/ruroku/stack.rb +10 -0
  30. data/lib/ruroku/stack_set.rb +13 -0
  31. data/lib/ruroku/user.rb +15 -0
  32. data/lib/ruroku/version.rb +1 -1
  33. data/ruroku.gemspec +4 -5
  34. data/spec/helpers/addon.rb +12 -0
  35. data/spec/helpers/app.rb +18 -0
  36. data/spec/helpers/collaborator.rb +11 -0
  37. data/spec/helpers/config_var.rb +11 -0
  38. data/spec/helpers/domain.rb +13 -0
  39. data/spec/helpers/keys.rb +12 -0
  40. data/spec/helpers/process.rb +15 -0
  41. data/spec/helpers/release.rb +15 -0
  42. data/spec/helpers/stack.rb +11 -0
  43. data/spec/helpers/user.rb +15 -0
  44. data/spec/ruroku/addon_set_spec.rb +29 -0
  45. data/spec/ruroku/api_spec.rb +55 -0
  46. data/spec/ruroku/app_set_spec.rb +15 -0
  47. data/spec/ruroku/app_spec.rb +113 -0
  48. data/spec/ruroku/collaborator_set_spec.rb +22 -0
  49. data/spec/ruroku/domain_set_spec.rb +22 -0
  50. data/spec/ruroku/key_set_spec.rb +29 -0
  51. data/spec/ruroku/nested_resource_set_spec.rb +27 -0
  52. data/spec/ruroku/process_set_spec.rb +36 -0
  53. data/spec/ruroku/release_set_spec.rb +15 -0
  54. data/spec/ruroku/resource_set_spec.rb +26 -0
  55. data/spec/ruroku/stack_set_spec.rb +15 -0
  56. data/spec/spec_helper.rb +72 -0
  57. metadata +70 -15
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe Ruroku::DomainSet do
4
+ before do
5
+ @set = Ruroku::DomainSet.new stubbed_app
6
+ @set_api = @set.api
7
+ end
8
+
9
+ describe '#add' do
10
+ it 'maps to post_domain api method' do
11
+ @set_api.should_receive :post_domains
12
+ @set.add 'example.com'
13
+ end
14
+ end
15
+
16
+ describe '#delete' do
17
+ it 'maps to delete_domain api method' do
18
+ @set_api.should_receive :delete_domain
19
+ @set.delete 'example.com'
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe Ruroku::KeySet do
4
+ before do
5
+ @set = Ruroku::KeySet.new stubbed_api
6
+ @set_api = @set.api
7
+ end
8
+
9
+ describe '#add' do
10
+ it 'maps to post_key api method' do
11
+ @set_api.should_receive :post_key
12
+ @set.add 'key content'
13
+ end
14
+ end
15
+
16
+ describe '#delete' do
17
+ it 'maps to delete_key api method' do
18
+ @set_api.should_receive :delete_key
19
+ @set.delete 'example@me.com'
20
+ end
21
+ end
22
+
23
+ describe '#delete_all' do
24
+ it 'maps to delete_keys api method' do
25
+ @set_api.should_receive :delete_keys
26
+ @set.delete_all
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Ruroku::NestedResourceSet do
4
+ describe '.map_api' do
5
+ before do
6
+ class MyResource < Ruroku::Base; end
7
+ class MyNestedResourceSet < Ruroku::NestedResourceSet
8
+ resource_class MyResource
9
+ collection_api_selector :query_collection
10
+
11
+ map_api my_method: :api_mapping
12
+ end
13
+ end
14
+
15
+ it 'defines the method' do
16
+ MyNestedResourceSet.new(stubbed_app).respond_to?(:my_method).should be_true
17
+ end
18
+
19
+ it 'calls api mapping' do
20
+ app = stubbed_app
21
+ app.api.should_receive(:api_mapping).with app.name, 'param'
22
+
23
+ my_nested_resource_set = MyNestedResourceSet.new app
24
+ my_nested_resource_set.my_method 'param'
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe Ruroku::ProcessSet do
4
+ before do
5
+ @set = Ruroku::ProcessSet.new stubbed_app
6
+ @set_api = @set.api
7
+ end
8
+
9
+ describe '#run' do
10
+ it 'maps to post_ps api method' do
11
+ @set_api.should_receive(:post_ps).with @set.app.name, 'rake task'
12
+ @set.run 'rake task'
13
+ end
14
+ end
15
+
16
+ describe '#restart' do
17
+ it 'maps to post_ps_restart api method' do
18
+ @set_api.should_receive :post_ps_restart
19
+ @set.restart
20
+ end
21
+ end
22
+
23
+ describe '#scale' do
24
+ it 'maps to ps_scale api method' do
25
+ @set_api.should_receive(:ps_scale).with @set.app.name, 'worker', 10
26
+ @set.scale 'worker', 10
27
+ end
28
+ end
29
+
30
+ describe '#stop' do
31
+ it 'maps to post_ps_stop api method' do
32
+ @set_api.should_receive(:post_ps_stop).with @set.app.name, 'ps' => 'web.1'
33
+ @set.stop 'ps' => 'web.1'
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe Ruroku::ReleaseSet do
4
+ before do
5
+ @set = Ruroku::ReleaseSet.new stubbed_app
6
+ @set_api = @set.api
7
+ end
8
+
9
+ describe '#rollback' do
10
+ it 'maps to post_release api method' do
11
+ @set_api.should_receive :post_release
12
+ @set.rollback 'v1'
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe Ruroku::ResourceSet do
4
+ describe '.map_api' do
5
+ before do
6
+ class MyResource < Ruroku::Base; end
7
+ class MyResourceSet < Ruroku::ResourceSet
8
+ resource_class MyResource
9
+ collection_api_selector :query_collection
10
+ map_api my_method: :api_mapping
11
+ end
12
+ end
13
+
14
+ it 'defines the method' do
15
+ MyResourceSet.new(stubbed_api).respond_to?(:my_method).should be_true
16
+ end
17
+
18
+ it 'calls api mapping' do
19
+ api_object = stubbed_api
20
+ api_object.should_receive(:api_mapping).with 'param'
21
+
22
+ my_resource_set = MyResourceSet.new api_object
23
+ my_resource_set.my_method 'param'
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe Ruroku::StackSet do
4
+ before do
5
+ @set = Ruroku::StackSet.new stubbed_app
6
+ @set_api = @set.api
7
+ end
8
+
9
+ describe '#migrate' do
10
+ it 'maps to put_stack api method' do
11
+ @set_api.should_receive :put_stack
12
+ @set.migrate 'cedar'
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,72 @@
1
+ require 'bundler/setup'
2
+
3
+ require 'ruroku'
4
+
5
+ require 'active_support/concern'
6
+ require 'helpers/app'
7
+ require 'helpers/keys'
8
+ require 'helpers/user'
9
+ require 'helpers/addon'
10
+ require 'helpers/collaborator'
11
+ require 'helpers/config_var'
12
+ require 'helpers/domain'
13
+ require 'helpers/process'
14
+ require 'helpers/release'
15
+ require 'helpers/stack'
16
+
17
+ module Helpers
18
+ extend ActiveSupport::Concern
19
+
20
+ included do
21
+ let(:api) { Ruroku::API.new api_key: 'test', mock: true }
22
+ let(:heroku) { api.heroku_api }
23
+
24
+ def stub_api(heroku)
25
+ heroku.stub(:get_apps).and_return apps_response
26
+ heroku.stub(:get_app).and_return app_response
27
+ heroku.stub(:get_keys).and_return keys_response
28
+ heroku.stub(:get_user).and_return user_response
29
+
30
+ heroku.stub(:get_addons).and_return addons_response
31
+ heroku.stub(:get_collaborators).and_return collaborators_response
32
+ heroku.stub(:get_config_vars).and_return config_vars_response
33
+ heroku.stub(:get_domains).and_return domains_response
34
+ heroku.stub(:get_ps).and_return processes_response
35
+ heroku.stub(:get_releases).and_return releases_response
36
+ heroku.stub(:get_stack).and_return stacks_response
37
+
38
+ heroku
39
+ end
40
+
41
+ before do
42
+ api.heroku_api = stubbed_api
43
+ end
44
+ end
45
+
46
+ def stubbed_response(body)
47
+ response = double 'response'
48
+ response.stub(:body).and_return body
49
+
50
+ response
51
+ end
52
+
53
+ def stubbed_api
54
+ api = stub_api double('api')
55
+ api.stub(:query_collection).and_return stubbed_response([])
56
+
57
+ api
58
+ end
59
+
60
+ def stubbed_app
61
+ app = double 'app'
62
+ app.stub(:api).and_return stubbed_api
63
+ app.stub(:name).and_return 'The App'
64
+ app.stub(:keys).and_return Ruroku::Key.new(app, {})
65
+
66
+ app
67
+ end
68
+ end
69
+
70
+ RSpec.configure do |config|
71
+ config.include Helpers
72
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruroku
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-09 00:00:00.000000000 Z
12
+ date: 2012-06-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: heroku-api
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 0.2.4
21
+ version: '0.2'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 0.2.4
29
+ version: '0.2'
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: activesupport
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -44,22 +44,22 @@ dependencies:
44
44
  - !ruby/object:Gem::Version
45
45
  version: 3.2.5
46
46
  - !ruby/object:Gem::Dependency
47
- name: rspec
47
+ name: virtus
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
51
- - - ! '>='
51
+ - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :development
53
+ version: '0.5'
54
+ type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  none: false
58
58
  requirements:
59
- - - ! '>='
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
62
- description: Ruby client for the Heroku API
61
+ version: '0.5'
62
+ description: The better Ruby client for the Heroku API
63
63
  email:
64
64
  - me@goshakkk.name
65
65
  executables: []
@@ -68,6 +68,8 @@ extra_rdoc_files: []
68
68
  files:
69
69
  - .gitignore
70
70
  - .rspec
71
+ - .travis.yml
72
+ - CHANGELOG.md
71
73
  - Gemfile
72
74
  - LICENSE
73
75
  - README.md
@@ -78,6 +80,7 @@ files:
78
80
  - lib/ruroku/addon_set.rb
79
81
  - lib/ruroku/api.rb
80
82
  - lib/ruroku/app.rb
83
+ - lib/ruroku/app_set.rb
81
84
  - lib/ruroku/base.rb
82
85
  - lib/ruroku/collaborator.rb
83
86
  - lib/ruroku/collaborator_set.rb
@@ -85,14 +88,43 @@ files:
85
88
  - lib/ruroku/config_var_set.rb
86
89
  - lib/ruroku/domain.rb
87
90
  - lib/ruroku/domain_set.rb
91
+ - lib/ruroku/key.rb
92
+ - lib/ruroku/key_set.rb
88
93
  - lib/ruroku/nested_base.rb
94
+ - lib/ruroku/nested_resource_set.rb
89
95
  - lib/ruroku/process.rb
90
96
  - lib/ruroku/process_set.rb
91
97
  - lib/ruroku/release.rb
92
98
  - lib/ruroku/release_set.rb
93
99
  - lib/ruroku/resource_set.rb
100
+ - lib/ruroku/stack.rb
101
+ - lib/ruroku/stack_set.rb
102
+ - lib/ruroku/user.rb
94
103
  - lib/ruroku/version.rb
95
104
  - ruroku.gemspec
105
+ - spec/helpers/addon.rb
106
+ - spec/helpers/app.rb
107
+ - spec/helpers/collaborator.rb
108
+ - spec/helpers/config_var.rb
109
+ - spec/helpers/domain.rb
110
+ - spec/helpers/keys.rb
111
+ - spec/helpers/process.rb
112
+ - spec/helpers/release.rb
113
+ - spec/helpers/stack.rb
114
+ - spec/helpers/user.rb
115
+ - spec/ruroku/addon_set_spec.rb
116
+ - spec/ruroku/api_spec.rb
117
+ - spec/ruroku/app_set_spec.rb
118
+ - spec/ruroku/app_spec.rb
119
+ - spec/ruroku/collaborator_set_spec.rb
120
+ - spec/ruroku/domain_set_spec.rb
121
+ - spec/ruroku/key_set_spec.rb
122
+ - spec/ruroku/nested_resource_set_spec.rb
123
+ - spec/ruroku/process_set_spec.rb
124
+ - spec/ruroku/release_set_spec.rb
125
+ - spec/ruroku/resource_set_spec.rb
126
+ - spec/ruroku/stack_set_spec.rb
127
+ - spec/spec_helper.rb
96
128
  homepage: ''
97
129
  licenses: []
98
130
  post_install_message:
@@ -107,7 +139,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
107
139
  version: '0'
108
140
  segments:
109
141
  - 0
110
- hash: 2659213015072619677
142
+ hash: -1851789232377884994
111
143
  required_rubygems_version: !ruby/object:Gem::Requirement
112
144
  none: false
113
145
  requirements:
@@ -116,11 +148,34 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
148
  version: '0'
117
149
  segments:
118
150
  - 0
119
- hash: 2659213015072619677
151
+ hash: -1851789232377884994
120
152
  requirements: []
121
153
  rubyforge_project:
122
154
  rubygems_version: 1.8.23
123
155
  signing_key:
124
156
  specification_version: 3
125
- summary: Ruby client for the Heroku API
126
- test_files: []
157
+ summary: The better Ruby client for the Heroku API
158
+ test_files:
159
+ - spec/helpers/addon.rb
160
+ - spec/helpers/app.rb
161
+ - spec/helpers/collaborator.rb
162
+ - spec/helpers/config_var.rb
163
+ - spec/helpers/domain.rb
164
+ - spec/helpers/keys.rb
165
+ - spec/helpers/process.rb
166
+ - spec/helpers/release.rb
167
+ - spec/helpers/stack.rb
168
+ - spec/helpers/user.rb
169
+ - spec/ruroku/addon_set_spec.rb
170
+ - spec/ruroku/api_spec.rb
171
+ - spec/ruroku/app_set_spec.rb
172
+ - spec/ruroku/app_spec.rb
173
+ - spec/ruroku/collaborator_set_spec.rb
174
+ - spec/ruroku/domain_set_spec.rb
175
+ - spec/ruroku/key_set_spec.rb
176
+ - spec/ruroku/nested_resource_set_spec.rb
177
+ - spec/ruroku/process_set_spec.rb
178
+ - spec/ruroku/release_set_spec.rb
179
+ - spec/ruroku/resource_set_spec.rb
180
+ - spec/ruroku/stack_set_spec.rb
181
+ - spec/spec_helper.rb