require 'helper' module TestExtensions class TestScenarios < Coupler::Test::IntegrationTest def self.startup super conn = new_connection('h2', :name => 'foo') conn.database do |db| db.create_table!(:foo) do primary_key :id String :foo String :bar end db[:foo].insert({:foo => 'foo', :bar => 'bar'}) db[:foo].insert({:foo => 'bar', :bar => 'foo'}) end end def setup super @project = Project.create(:name => 'foo') @connection = new_connection('h2', :name => 'h2 connection').save! @resource = Resource.create(:name => 'foo', :project => @project, :connection => @connection, :table_name => 'foo') end test "index" do scenario = Scenario.create(:name => 'foo', :resource_1 => @resource, :project => @project) get "/projects/#{@project.id}/scenarios" assert last_response.ok? end test "index of non existant project" do get "/projects/8675309/scenarios" assert last_response.redirect? assert_equal "http://example.org/projects", last_response['location'] follow_redirect! assert_match /The project you were looking for doesn't exist/, last_response.body end test "show" do scenario = Scenario.create(:name => 'foo', :resource_1 => @resource, :project => @project) get "/projects/#{@project.id}/scenarios/#{scenario.id}" assert last_response.ok? end test "new" do get "/projects/#{@project.id}/scenarios/new" assert last_response.ok? end test "successfully creating scenario" do attribs = { 'name' => 'foo', 'resource_ids' => [@resource.id.to_s] } post "/projects/#{@project.id}/scenarios", { 'scenario' => attribs } scenario = Scenario[:name => 'foo', :project_id => @project.id] assert scenario assert_equal [@resource], scenario.resources assert last_response.redirect?, "Wasn't redirected" assert_equal "http://example.org/projects/#{@project.id}/scenarios/#{scenario.id}", last_response['location'] end test "failing to create scenario" do post "/projects/#{@project.id}/scenarios", { 'scenario' => { 'name' => nil, 'resource_ids' => [@resource.id.to_s] } } assert last_response.ok? assert_match /Name is not present/, last_response.body end test "run scenario" do scenario = Scenario.create(:name => 'foo', :resource_1 => @resource, :project => @project) get "/projects/#{@project.id}/scenarios/#{scenario.id}/run" assert last_response.redirect?, "Wasn't redirected" assert_equal "http://example.org/projects/#{@project[:id]}/scenarios/#{scenario[:id]}", last_response['location'] assert Job.filter(:name => 'run_scenario', :scenario_id => scenario.id, :status => 'scheduled').count == 1 end #def test_progress #scenario = Factory(:scenario, :project => @project, :completed => 100, :total => 1000) #get "/projects/#{@project.id}/scenarios/#{scenario.id}/progress" #assert last_response.ok? #assert_equal "10", last_response.body #end end end