Skip to content

Commit

Permalink
specs for releases
Browse files Browse the repository at this point in the history
  • Loading branch information
ddollar committed May 9, 2011
1 parent da3b016 commit 660f749
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 0 deletions.
82 changes: 82 additions & 0 deletions spec/heroku/command/releases_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
require "spec_helper"
require "heroku/command/releases"

describe Heroku::Command::Releases do

describe "releases" do
before(:each) do
any_instance_of(Heroku::Client) do |core|
stub(core).releases("myapp").returns([
{ "name" => "v1", "descr" => "Description1", "user" => "User1", "created_at" => "2011-01-01" },
{ "name" => "v2", "descr" => "Description2", "user" => "User2", "created_at" => "2011-02-02" },
{ "name" => "v3", "descr" => "Description3", "user" => "User3", "created_at" => (Time.now - 5).to_s },
{ "name" => "v4", "descr" => "Description4", "user" => "User4", "created_at" => (Time.now - 305).to_s },
{ "name" => "v6", "descr" => "Description5", "user" => "User6", "created_at" => (Time.now - 18005).to_s }
])
end
end

it "should list releases" do
execute "releases"
output.should =~ /v1\s+Description1\s+User1\s+2011-01-01/
output.should =~ /v2\s+Description2\s+User2\s+2011-02-02/
end

it "should calculate time deltas" do
output.should =~ /2011-01-01/
output.should =~ /\d seconds ago/
output.should =~ /\d minutes ago/
output.should =~ /\d hours ago/
end
end

describe "releases:info" do
before(:each) do
any_instance_of(Heroku::Client) do |core|
stub(core).release("myapp", "v1").returns({
"name" => "v1",
"descr" => "Description1",
"user" => "User1",
"created_at" => "2011-01-01",
"addons" => [ "addon:one", "addon:two" ],
"env" => { "foo" => "bar" }
})
end
end

it "requires a release to be specified" do
lambda { execute "releases:info" }.should fail_command("Specify a release")
end

it "shows info for a single release" do
execute "releases:info v1"
output.should =~ /=== Release v1/
output.should =~ /Change: Description1/
output.should =~ /By: User1/
output.should =~ /When: 2011-01-01/
output.should =~ /Addons: addon:one, addon:two/
output.should =~ /Config: foo => bar/
end
end

describe "rollback" do
it "rolls back to the latest release with no argument" do
any_instance_of(Heroku::Client) do |core|
stub(core).rollback("myapp", nil).returns("v10")
end
execute "rollback"
output.should =~ /Rolled back to v10/
end

it "rolls back to the specified release" do
any_instance_of(Heroku::Client) do |core|
stub(core).rollback("myapp", "v11").returns("v11")
end
execute "rollback v11"
output.should =~ /Rolled back to v11/
end
end

end


13 changes: 13 additions & 0 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,26 @@ def object.puts(line=nil)
$command_output << line
end

any_instance_of(Heroku::Command::Base) do |base|
stub(base).extract_app.returns("myapp")
end

object.send(method)
end

def output
($command_output || []).join("\n")
end

def any_instance_of(klass, &block)
extend RR::Adapters::RRMethods
any_instance_of(klass, &block)
end

def fail_command(message)
raise_error(Heroku::Command::CommandFailed, message)
end

def with_blank_git_repository(&block)
sandbox = File.join(Dir.tmpdir, "heroku", Process.pid.to_s)
FileUtils.mkdir_p(sandbox)
Expand Down

0 comments on commit 660f749

Please sign in to comment.