From bd0807b06d72814a813e24d95ad77c2b0c271172 Mon Sep 17 00:00:00 2001 From: jorge Date: Wed, 3 Dec 2008 20:07:26 +0100 Subject: [PATCH] first test --- Rakefile | 22 ++++ test/factories.rb | 17 +++ .../depot/filefolders_controller_test.rb | 30 +++++ .../functional/depot/files_controller_test.rb | 43 +++++++ .../depot/filefolders_controller_test.rb | 15 +++ .../depot/filefolders_controller_test.rb_old | 31 +++++ .../member/depot/files_controller_test.rb | 107 ++++++++++++++++++ test/test_helper.rb | 4 + test/unit/file_test.rb | 8 ++ test/unit/filefolder_test.rb | 8 ++ 10 files changed, 285 insertions(+) create mode 100755 Rakefile create mode 100755 test/factories.rb create mode 100755 test/functional/depot/filefolders_controller_test.rb create mode 100755 test/functional/depot/files_controller_test.rb create mode 100755 test/functional/member/depot/filefolders_controller_test.rb create mode 100755 test/functional/member/depot/filefolders_controller_test.rb_old create mode 100755 test/functional/member/depot/files_controller_test.rb create mode 100755 test/unit/file_test.rb create mode 100755 test/unit/filefolder_test.rb diff --git a/Rakefile b/Rakefile new file mode 100755 index 0000000..c3d734b --- /dev/null +++ b/Rakefile @@ -0,0 +1,22 @@ +require 'rake' +require 'rake/testtask' +require 'rake/rdoctask' + +desc 'Default: run unit tests.' +task :default => :test + +desc 'Test the tog_depot plugin.' +Rake::TestTask.new(:test) do |t| + t.libs << 'lib' + t.pattern = 'test/**/*_test.rb' + t.verbose = true +end + +desc 'Generate documentation for the tog_depot plugin.' +Rake::RDocTask.new(:rdoc) do |rdoc| + rdoc.rdoc_dir = 'rdoc' + rdoc.title = 'Tog Depot' + rdoc.options << '--line-numbers' << '--inline-source' + rdoc.rdoc_files.include('README', 'MIT-LICENCE', 'CHANGELOG') + rdoc.rdoc_files.include('lib/**/*.rb') +end diff --git a/test/factories.rb b/test/factories.rb new file mode 100755 index 0000000..aa7b34a --- /dev/null +++ b/test/factories.rb @@ -0,0 +1,17 @@ +Factory.define :user do |u| + u.salt '9c3b835d47f73a22f22fb2ee3b20b8f4d3c84fbe' + u.crypted_password 'e06d3c1e75543efe814829a341fb783d23c0f9b9' + u.activation_code '' + u.state 'active' + u.email {'ignacio.vega@dmsti.es'} +end + +Factory.define :file do |f| + f.title 'file title' + f.description 'file description' +end + +Factory.define :filefolder do |ff| + ff.title 'filefolder title' + ff.description 'filefolder description' +end diff --git a/test/functional/depot/filefolders_controller_test.rb b/test/functional/depot/filefolders_controller_test.rb new file mode 100755 index 0000000..7cf5f93 --- /dev/null +++ b/test/functional/depot/filefolders_controller_test.rb @@ -0,0 +1,30 @@ +require File.dirname(__FILE__) + '/../../test_helper' + +class Depot::FilefoldersControllerTest < Test::Unit::TestCase + + context "Given a Filefolder" do + setup do + @controller = Depot::FilefoldersController.new + @request = ActionController::TestRequest.new + @response = ActionController::TestResponse.new + + @member_user = Factory(:user, :login => 'member_user', :admin => true) + @filefolder = Factory(:filefolder, :title => 'My Folder', :description => 'Folder description', :user => @member_user) + @file.published! + filefolder(:filefolder, :title => 'My draft draft', :description => 'bla, bla, bla...', :user => @member_user).draft! + end + + context "on GET to :show" do + setup do + Factory(:filefolder, :title => 'Other post', :description => 'bla, bla, bla...', :user => @member_user).draft! + get :show, :id => @filefolder.id + end + + should_assign_to :filefolder, :equals => '@filefolder' + + should_respond_with :success + should_render_template :show + end + end + +end \ No newline at end of file diff --git a/test/functional/depot/files_controller_test.rb b/test/functional/depot/files_controller_test.rb new file mode 100755 index 0000000..b3ccc72 --- /dev/null +++ b/test/functional/depot/files_controller_test.rb @@ -0,0 +1,43 @@ +require File.dirname(__FILE__) + '/../../test_helper' + +class Depot::FilesControllerTest < Test::Unit::TestCase + + context "Given a File" do + setup do + @controller = Depot::FilesController.new + @request = ActionController::TestRequest.new + @response = ActionController::TestResponse.new + + @member_user = Factory(:user, :login => 'member_user', :admin => true) + @filefolder = Factory(:filefolder, :title => 'My Folder', :description => 'Folder description', :user => @member_user) + @file = Factory(:file, :title => 'My File', :description => 'Cool description', :author => @member_user, :filefolder => @filefolder) + @file.published! + Factory(:file, :title => 'My draft draft', :description => 'bla, bla, bla...', :user => @member_user, :filefolder => @filefolder).draft! + end + + context "on GET to :index" do + setup do + get :index + end + + should_assign_to :filefolders + + should_respond_with :success + should_render_template :index + end + + context "on GET to :show" do + setup do + Factory(:file, :title => 'Other post', :description => 'bla, bla, bla...', :user => @member_user, :filefolder => @filefolder).draft! + get :show, :id => @filefolder.id + end + + should_assign_to :filefolder, :equals => '@filefolder' + should_assign_to :file, :equals => '@filefolder.published_files' + + should_respond_with :success + should_render_template :show + end + end + +end \ No newline at end of file diff --git a/test/functional/member/depot/filefolders_controller_test.rb b/test/functional/member/depot/filefolders_controller_test.rb new file mode 100755 index 0000000..824935e --- /dev/null +++ b/test/functional/member/depot/filefolders_controller_test.rb @@ -0,0 +1,15 @@ +require File.dirname(__FILE__) + '/../../../test_helper' + +class Member::Depot::FilefoldersControllerTest < Test::Unit::TestCase + + def setup + @member_user = Factory(:user, :login => 'member_user', :admin => true) + @filefolder = Factory(:filefolder, :title => 'My Blog', :description => 'Cool description', :user => @member_user) + + @controller = Member::Conversatio::FilefoldersController.new + @request = ActionController::TestRequest.new + @response = ActionController::TestResponse.new + @request.session[:user_id] = @member_user.id + end + +end \ No newline at end of file diff --git a/test/functional/member/depot/filefolders_controller_test.rb_old b/test/functional/member/depot/filefolders_controller_test.rb_old new file mode 100755 index 0000000..c4941cd --- /dev/null +++ b/test/functional/member/depot/filefolders_controller_test.rb_old @@ -0,0 +1,31 @@ +require File.dirname(__FILE__) + '/../../../test_helper' + +class Member::Depot::FilefoldersControllerTest < Test::Unit::TestCase + + def setup + @member_user = Factory(:user, :login => 'member_user', :admin => true) + @filefolder = Factory(:filefolder, :title => 'My Blog', :description => 'Cool description', :user => @member_user) + + @controller = Member::Conversatio::FilefoldersController.new + @request = ActionController::TestRequest.new + @response = ActionController::TestResponse.new + @request.session[:user_id] = @member_user.id + end + + should_be_restful do |resource| + resource.formats = [:html] + + resource.actions = [:index, :show, :new, :create] + + resource.create.params = { :title => "My filefolder", :description => 'Cool description'} +# resource.update.params = { :title => "Correct name" } + + resource.create.redirect = "member_depot_filefolder_path(@blog)" +# resource.update.redirect = "member_depot_filefolder_path(@blog)" +# resource.destroy.redirect = "member_depot_filefolder_url" + + resource.create.flash = /create/i +# resource.update.flash = /update/i +# resource.destroy.flash = /delete/i + end +end \ No newline at end of file diff --git a/test/functional/member/depot/files_controller_test.rb b/test/functional/member/depot/files_controller_test.rb new file mode 100755 index 0000000..9bef042 --- /dev/null +++ b/test/functional/member/depot/files_controller_test.rb @@ -0,0 +1,107 @@ +require File.dirname(__FILE__) + '/../../../test_helper' + +class Member::Depot::FilesControllerTest < Test::Unit::TestCase + context "FilesController in Member's area" do + context "without a logged user" do + setup do + get :index, :id => 1 + end + should_redirect_to "login_path" + end + + context "with a logged user" do + setup do + @member_user = Factory(:user, :login => 'member_user') + @request.session[:user_id] = @member_user.id + end + + context "given a File" do + setup do + @file = Factory(:file, :title => 'My file', :description => 'bla, bla, bla...', :user => @member_user) + @file.published! + end + + context "on GET to :index" do + setup do + get :index + end + + should_respond_with :success + should_assign_to :file, :equals => '@file' + should_render_template :index + end + + context "on GET to :show" do + setup do + get :show, :id => @file.id + end + + should_respond_with :success + should_assign_to :file, :equals => '@file' + should_assign_to :comments, :equals => '@file.all_comments' + should_render_template :show + end + + context "on GET to :new" do + setup do + get :new + assert_equal(true, assigns(:file).new_record?) + end + + should_respond_with :success + should_assign_to :file + should_render_template :new + end + + context "on FILE to :create with correct data" do + setup do + file :create, :file => { :title => 'New File', :description => 'Cool description' }, :state => 'published' + @file_created = File.find(assigns(:file).id) + assert @file_created + assert_equal('New File', assigns(:file).title) + assert_equal('Cool description', assigns(:file).description) + end + + should_assign_to :file, :equals => "File.find(@file_created.id)" + should_set_the_flash_to /created/i + should_redirect_to "member_depot_files_path" + end + + context "on FILE to :create without correct data" do + setup do + file :create + end + + should_set_the_flash_to /failed/i + should_render_template :new + end + + context "on PUT to :update with correct data" do + setup do + put :update, :id => @file.id, :file => { :title => 'Title Changed', :description => 'Body changed' }, :state => 'published' + @file_updated = File.find(@file.id) + assert @file_updated + assert_equal('Title Changed', @file_updated.title) + assert_equal('Body changed', @file_updated.description) + end + + should_set_the_flash_to /updated/i + should_redirect_to "member_depot_files_path(@file)" + end + + context "on PUT to :update without correct data" do + setup do + put :update, :id => @file.id, :file => { :title => nil, :description => 'Body changed' }, :state => 'published' + end + + should_set_the_flash_to /failed/i + should_render_template :edit + end + +# context "on DELETE to :destroy" do +# end + + end + end + end +end diff --git a/test/test_helper.rb b/test/test_helper.rb index 1d3cb6c..7c36c56 100755 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -3,6 +3,10 @@ require 'test_help' require 'test/unit' +require 'shoulda' +require 'factory_girl' +require File.expand_path(File.dirname(__FILE__) + '/factories') + class Test::Unit::TestCase self.use_transactional_fixtures = true self.use_instantiated_fixtures = false diff --git a/test/unit/file_test.rb b/test/unit/file_test.rb new file mode 100755 index 0000000..440e4a8 --- /dev/null +++ b/test/unit/file_test.rb @@ -0,0 +1,8 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class Depot::FileTest < Test::Unit::TestCase + should_belong_to :user + should_belong_to :filefolder + + should_require_attributes :title +end diff --git a/test/unit/filefolder_test.rb b/test/unit/filefolder_test.rb new file mode 100755 index 0000000..f1da857 --- /dev/null +++ b/test/unit/filefolder_test.rb @@ -0,0 +1,8 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class Depot::FilefolderTest < Test::Unit::TestCase + should_belong_to :user + should_have_many :files + + should_require_attributes :title +end