shelly 0.1.16 → 0.1.17

Sign up to get free protection for your applications and to get access to all the features.
data/lib/shelly/app.rb CHANGED
@@ -9,7 +9,8 @@ module Shelly
9
9
  SERVER_SIZES = %w(small large)
10
10
 
11
11
  attr_accessor :code_name, :databases, :ruby_version, :environment,
12
- :git_url, :domains, :web_server_ip, :mail_server_ip, :size, :thin
12
+ :git_url, :domains, :web_server_ip, :mail_server_ip, :size, :thin,
13
+ :redeem_code
13
14
 
14
15
  def initialize(code_name = nil)
15
16
  self.code_name = code_name
@@ -41,7 +42,7 @@ module Shelly
41
42
  end
42
43
 
43
44
  def create
44
- attributes = {:code_name => code_name}
45
+ attributes = {:code_name => code_name, :redeem_code => redeem_code}
45
46
  response = shelly.create_app(attributes)
46
47
  self.git_url = response["git_url"]
47
48
  self.domains = response["domains"]
@@ -197,6 +198,14 @@ module Shelly
197
198
  attributes["state"]
198
199
  end
199
200
 
201
+ def trial?
202
+ !!attributes["trial"]
203
+ end
204
+
205
+ def credit
206
+ attributes["credit"]
207
+ end
208
+
200
209
  def self.inside_git_repository?
201
210
  system("git status > /dev/null 2>&1")
202
211
  end
@@ -79,6 +79,8 @@ module Shelly
79
79
  :desc => "List of databases of your choice"
80
80
  method_option :size, :type => :string, :aliases => "-s",
81
81
  :desc => "Server size [large, small]"
82
+ method_option "redeem-code", :type => :string, :aliases => "-r",
83
+ :desc => "Redeem code for free credits"
82
84
  desc "add", "Add a new cloud"
83
85
  def add
84
86
  check_options(options)
@@ -87,6 +89,7 @@ module Shelly
87
89
  app.code_name = options["code-name"] || ask_for_code_name
88
90
  app.databases = options["databases"] || ask_for_databases
89
91
  app.size = options["size"] || "large"
92
+ app.redeem_code = options["redeem-code"]
90
93
  app.create
91
94
 
92
95
  if overwrite_remote?(app)
@@ -99,10 +102,10 @@ module Shelly
99
102
 
100
103
  say "Creating Cloudfile", :green
101
104
  app.create_cloudfile
102
- if app.attributes["trial"]
105
+ if app.trial?
103
106
  say_new_line
104
107
  say "Billing information", :green
105
- say "Cloud created with 20 Euro credit."
108
+ say "Cloud created with #{app.credit} Euro credit."
106
109
  say "Remember to provide billing details before trial ends."
107
110
  say app.edit_billing_url
108
111
  end
@@ -1,3 +1,3 @@
1
1
  module Shelly
2
- VERSION = "0.1.16"
2
+ VERSION = "0.1.17"
3
3
  end
@@ -142,6 +142,8 @@ describe Shelly::App do
142
142
  @response = {"web_server_ip" => "192.0.2.1",
143
143
  "mail_server_ip" => "192.0.2.3",
144
144
  "state" => "running",
145
+ "trial" => true,
146
+ "credit" => 23.0,
145
147
  "git_info" => {
146
148
  "deployed_commit_message" => "Commit message",
147
149
  "deployed_commit_sha" => "52e65ed2d085eaae560cdb81b2b56a7d76",
@@ -150,6 +152,23 @@ describe Shelly::App do
150
152
  @client.stub(:app).and_return(@response)
151
153
  end
152
154
 
155
+ describe "#trial?" do
156
+ it "should return true if app is trial" do
157
+ @app.should be_trial
158
+ end
159
+
160
+ it "should return false if app is not trial" do
161
+ @client.stub(:app).and_return("trial" => false)
162
+ @app.should_not be_trial
163
+ end
164
+ end
165
+
166
+ describe "#credit" do
167
+ it "should return freecredit that app has" do
168
+ @app.credit.should == 23.0
169
+ end
170
+ end
171
+
153
172
  it "should fetch app attributes from API and cache them" do
154
173
  @client.should_receive(:app).with("foo-staging").exactly(:once).and_return(@response)
155
174
  2.times { @app.attributes }
@@ -261,8 +280,10 @@ describe Shelly::App do
261
280
  describe "#create" do
262
281
  it "should create the app on shelly cloud via API client" do
263
282
  @app.code_name = "fooo"
283
+ @app.redeem_code = "foo123"
264
284
  attributes = {
265
- :code_name => "fooo"
285
+ :code_name => "fooo",
286
+ :redeem_code => "foo123"
266
287
  }
267
288
  @client.should_receive(:create_app).with(attributes).and_return("git_url" => "git@git.shellycloud.com:fooo.git",
268
289
  "domains" => %w(fooo.shellyapp.com))
@@ -362,5 +383,5 @@ describe Shelly::App do
362
383
  Shelly::Cloudfile.should_receive(:new).and_return(cloudfile)
363
384
  @app.create_cloudfile
364
385
  end
365
- end
386
+ end
366
387
  end
@@ -402,11 +402,11 @@ OUT
402
402
  end
403
403
 
404
404
  it "should create the app on shelly cloud and show trial information" do
405
- @app.stub(:attributes).and_return({"trial" => true})
405
+ @app.stub(:attributes).and_return({"trial" => true, "credit" => 40})
406
406
  @client.stub(:shellyapp_url).and_return("http://example.com")
407
407
  @app.should_receive(:create)
408
408
  $stdout.should_receive(:puts).with(green "Billing information")
409
- $stdout.should_receive(:puts).with("Cloud created with 20 Euro credit.")
409
+ $stdout.should_receive(:puts).with("Cloud created with 40 Euro credit.")
410
410
  $stdout.should_receive(:puts).with("Remember to provide billing details before trial ends.")
411
411
  $stdout.should_receive(:puts).with("http://example.com/apps/foo-staging/billing/edit")
412
412
 
@@ -470,7 +470,6 @@ OUT
470
470
  invoke(@main, :add)
471
471
  end
472
472
  end
473
-
474
473
  end
475
474
  end
476
475
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shelly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.16
4
+ version: 0.1.17
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-07-11 00:00:00.000000000 Z
12
+ date: 2012-07-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec