Mercurial > hg > soundsoftware-site
diff test/integration/api_test/versions_test.rb @ 1464:261b3d9a4903 redmine-2.4
Update to Redmine 2.4 branch rev 12663
author | Chris Cannam |
---|---|
date | Tue, 14 Jan 2014 14:37:42 +0000 |
parents | 433d4f72a19b |
children | e248c7af89ec |
line wrap: on
line diff
--- a/test/integration/api_test/versions_test.rb Fri Jun 14 09:05:06 2013 +0100 +++ b/test/integration/api_test/versions_test.rb Tue Jan 14 14:37:42 2014 +0000 @@ -1,5 +1,5 @@ # Redmine - project management software -# Copyright (C) 2006-2012 Jean-Philippe Lang +# Copyright (C) 2006-2013 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -17,7 +17,7 @@ require File.expand_path('../../../test_helper', __FILE__) -class ApiTest::VersionsTest < ActionController::IntegrationTest +class Redmine::ApiTest::VersionsTest < Redmine::ApiTest::Base fixtures :projects, :trackers, :issue_statuses, :issues, :enumerations, :users, :issue_categories, :projects_trackers, @@ -25,112 +25,118 @@ :member_roles, :members, :enabled_modules, - :workflows, :versions def setup Setting.rest_api_enabled = '1' end - context "/projects/:project_id/versions" do - context "GET" do - should "return project versions" do - get '/projects/1/versions.xml' + test "GET /projects/:project_id/versions.xml should return project versions" do + get '/projects/1/versions.xml' - assert_response :success - assert_equal 'application/xml', @response.content_type - assert_tag :tag => 'versions', - :attributes => {:type => 'array'}, - :child => { - :tag => 'version', - :child => { - :tag => 'id', - :content => '2', - :sibling => { - :tag => 'name', - :content => '1.0' - } - } + assert_response :success + assert_equal 'application/xml', @response.content_type + assert_tag :tag => 'versions', + :attributes => {:type => 'array'}, + :child => { + :tag => 'version', + :child => { + :tag => 'id', + :content => '2', + :sibling => { + :tag => 'name', + :content => '1.0' } - end + } + } + end + + test "POST /projects/:project_id/versions.xml should create the version" do + assert_difference 'Version.count' do + post '/projects/1/versions.xml', {:version => {:name => 'API test'}}, credentials('jsmith') end - context "POST" do - should "create the version" do - assert_difference 'Version.count' do - post '/projects/1/versions.xml', {:version => {:name => 'API test'}}, credentials('jsmith') - end + version = Version.first(:order => 'id DESC') + assert_equal 'API test', version.name - version = Version.first(:order => 'id DESC') - assert_equal 'API test', version.name + assert_response :created + assert_equal 'application/xml', @response.content_type + assert_tag 'version', :child => {:tag => 'id', :content => version.id.to_s} + end - assert_response :created - assert_equal 'application/xml', @response.content_type - assert_tag 'version', :child => {:tag => 'id', :content => version.id.to_s} - end + test "POST /projects/:project_id/versions.xml should create the version with due date" do + assert_difference 'Version.count' do + post '/projects/1/versions.xml', {:version => {:name => 'API test', :due_date => '2012-01-24'}}, credentials('jsmith') + end - should "create the version with due date" do - assert_difference 'Version.count' do - post '/projects/1/versions.xml', {:version => {:name => 'API test', :due_date => '2012-01-24'}}, credentials('jsmith') - end + version = Version.first(:order => 'id DESC') + assert_equal 'API test', version.name + assert_equal Date.parse('2012-01-24'), version.due_date - version = Version.first(:order => 'id DESC') - assert_equal 'API test', version.name - assert_equal Date.parse('2012-01-24'), version.due_date + assert_response :created + assert_equal 'application/xml', @response.content_type + assert_tag 'version', :child => {:tag => 'id', :content => version.id.to_s} + end - assert_response :created - assert_equal 'application/xml', @response.content_type - assert_tag 'version', :child => {:tag => 'id', :content => version.id.to_s} - end + test "POST /projects/:project_id/versions.xml should create the version with custom fields" do + field = VersionCustomField.generate! - context "with failure" do - should "return the errors" do - assert_no_difference('Version.count') do - post '/projects/1/versions.xml', {:version => {:name => ''}}, credentials('jsmith') - end + assert_difference 'Version.count' do + post '/projects/1/versions.xml', { + :version => { + :name => 'API test', + :custom_fields => [ + {'id' => field.id.to_s, 'value' => 'Some value'} + ] + } + }, credentials('jsmith') + end - assert_response :unprocessable_entity - assert_tag :errors, :child => {:tag => 'error', :content => "Name can't be blank"} - end - end + version = Version.first(:order => 'id DESC') + assert_equal 'API test', version.name + assert_equal 'Some value', version.custom_field_value(field) + + assert_response :created + assert_equal 'application/xml', @response.content_type + assert_select 'version>custom_fields>custom_field[id=?]>value', field.id.to_s, 'Some value' + end + + test "POST /projects/:project_id/versions.xml with failure should return the errors" do + assert_no_difference('Version.count') do + post '/projects/1/versions.xml', {:version => {:name => ''}}, credentials('jsmith') + end + + assert_response :unprocessable_entity + assert_tag :errors, :child => {:tag => 'error', :content => "Name can't be blank"} + end + + test "GET /versions/:id.xml should return the version" do + get '/versions/2.xml' + + assert_response :success + assert_equal 'application/xml', @response.content_type + assert_select 'version' do + assert_select 'id', :text => '2' + assert_select 'name', :text => '1.0' + assert_select 'sharing', :text => 'none' end end - context "/versions/:id" do - context "GET" do - should "return the version" do - get '/versions/2.xml' + test "PUT /versions/:id.xml should update the version" do + put '/versions/2.xml', {:version => {:name => 'API update'}}, credentials('jsmith') - assert_response :success - assert_equal 'application/xml', @response.content_type - assert_select 'version' do - assert_select 'id', :text => '2' - assert_select 'name', :text => '1.0' - assert_select 'sharing', :text => 'none' - end - end + assert_response :ok + assert_equal '', @response.body + assert_equal 'API update', Version.find(2).name + end + + test "DELETE /versions/:id.xml should destroy the version" do + assert_difference 'Version.count', -1 do + delete '/versions/3.xml', {}, credentials('jsmith') end - context "PUT" do - should "update the version" do - put '/versions/2.xml', {:version => {:name => 'API update'}}, credentials('jsmith') - - assert_response :ok - assert_equal '', @response.body - assert_equal 'API update', Version.find(2).name - end - end - - context "DELETE" do - should "destroy the version" do - assert_difference 'Version.count', -1 do - delete '/versions/3.xml', {}, credentials('jsmith') - end - - assert_response :ok - assert_equal '', @response.body - assert_nil Version.find_by_id(3) - end - end + assert_response :ok + assert_equal '', @response.body + assert_nil Version.find_by_id(3) end end