require File.dirname(__FILE__) + '/../test_helper' require 'versions_controller' # Re-raise errors caught by the controller. class VersionsController; def rescue_action(e) raise e end; end class VersionsControllerTest < Test::Unit::TestCase fixtures :books, :pages, :versions, :authors def setup @controller = VersionsController.new @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new end def test_create_new post( :create, :book_url_name => books(:stories).url_name, :page => { :title => "A brave new world", :revision_number => "1" }, :version => { :body => "So wonderful!" }, :author_name => "David" ) assert_response :redirect assert_not_nil page = books(:stories).pages.detect { |page| page.title == "A brave new world" } assert_equal "So wonderful!", page.entry_versions.first.body assert_equal authors(:david), page.entry_versions.first.author end def test_create_continuous_edit pages(:home_page).current_version.update_attribute(:updated_at, Time.now) current_version_id_before_edit = pages(:home_page).current_version.id post( :create, :book_url_name => books(:stories).url_name, :page => { :title => "Home Page", :revision_number => "1" }, :version => { :body => "A continuous revision" }, :author_name => "David" ) assert_response :redirect pages(:home_page).reload assert_equal current_version_id_before_edit, pages(:home_page).current_version.id assert_equal 'A continuous revision', pages(:home_page).current_version.body end def test_create_conflicting_with_other_revision pages(:home_page).increment!(:revision_number) post( :create, :book_url_name => books(:stories).url_name, :page => { :title => "Home Page", :revision_number => "1" }, :version => { :body => "A continuous revision" }, :author_name => "David" ) assert_response :redirect assert_redirected_to new_url(:book_url_name => 'stories', :page_title => 'Home Page') assert flash.has_key?(:error) end end