Organizando plugins e gems.
This commit is contained in:
9
vendor/plugins/acts_as_paranoid/test/fixtures/taggings.yml
vendored
Normal file
9
vendor/plugins/acts_as_paranoid/test/fixtures/taggings.yml
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
tagging_1:
|
||||
id: 1
|
||||
tag_id: 1
|
||||
widget_id: 1
|
||||
deleted_at: '2005-01-01 00:00:00'
|
||||
tagging_2:
|
||||
id: 2
|
||||
tag_id: 2
|
||||
widget_id: 1
|
||||
6
vendor/plugins/acts_as_paranoid/test/fixtures/tags.yml
vendored
Normal file
6
vendor/plugins/acts_as_paranoid/test/fixtures/tags.yml
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
tag_1:
|
||||
id: 1
|
||||
name: 'tag 1'
|
||||
tag_2:
|
||||
id: 2
|
||||
name: 'tag 1'
|
||||
@@ -6,6 +6,9 @@ class Widget < ActiveRecord::Base
|
||||
has_and_belongs_to_many :habtm_categories, :class_name => 'Category'
|
||||
has_one :category
|
||||
belongs_to :parent_category, :class_name => 'Category'
|
||||
has_many :taggings
|
||||
has_many :tags, :through => :taggings
|
||||
has_many :any_tags, :through => :taggings, :class_name => 'Tag', :source => :tag, :with_deleted => true
|
||||
end
|
||||
|
||||
class Category < ActiveRecord::Base
|
||||
@@ -22,15 +25,47 @@ class Category < ActiveRecord::Base
|
||||
end
|
||||
end
|
||||
|
||||
class Tag < ActiveRecord::Base
|
||||
has_many :taggings
|
||||
has_many :widgets, :through => :taggings
|
||||
end
|
||||
|
||||
class Tagging < ActiveRecord::Base
|
||||
belongs_to :tag
|
||||
belongs_to :widget
|
||||
acts_as_paranoid
|
||||
end
|
||||
|
||||
class NonParanoidAndroid < ActiveRecord::Base
|
||||
end
|
||||
|
||||
class ParanoidTest < Test::Unit::TestCase
|
||||
fixtures :widgets, :categories, :categories_widgets
|
||||
fixtures :widgets, :categories, :categories_widgets, :tags, :taggings
|
||||
|
||||
def test_should_recognize_with_deleted_option
|
||||
assert_equal [1, 2], Widget.find(:all, :with_deleted => true).collect { |w| w.id }
|
||||
assert_equal [1], Widget.find(:all, :with_deleted => false).collect { |w| w.id }
|
||||
end
|
||||
|
||||
def test_should_recognize_only_deleted_option
|
||||
assert_equal [2], Widget.find(:all, :only_deleted => true).collect { |w| w.id }
|
||||
assert_equal [1], Widget.find(:all, :only_deleted => false).collect { |w| w.id }
|
||||
end
|
||||
|
||||
def test_should_exists_with_deleted
|
||||
assert Widget.exists_with_deleted?(2)
|
||||
assert !Widget.exists?(2)
|
||||
end
|
||||
|
||||
def test_should_exists_only_deleted
|
||||
assert Widget.exists_only_deleted?(2)
|
||||
assert !Widget.exists_only_deleted?(1)
|
||||
end
|
||||
|
||||
def test_should_count_with_deleted
|
||||
assert_equal 1, Widget.count
|
||||
assert_equal 2, Widget.count_with_deleted
|
||||
assert_equal 1, Widget.count_only_deleted
|
||||
assert_equal 2, Widget.calculate_with_deleted(:count, :all)
|
||||
end
|
||||
|
||||
@@ -50,6 +85,7 @@ class ParanoidTest < Test::Unit::TestCase
|
||||
widgets(:widget_1).destroy!
|
||||
assert_equal 0, Widget.count
|
||||
assert_equal 0, Category.count
|
||||
assert_equal 1, Widget.count_only_deleted
|
||||
assert_equal 1, Widget.calculate_with_deleted(:count, :all)
|
||||
# Category doesn't get destroyed because the dependent before_destroy callback uses #destroy
|
||||
assert_equal 4, Category.calculate_with_deleted(:count, :all)
|
||||
@@ -94,6 +130,12 @@ class ParanoidTest < Test::Unit::TestCase
|
||||
assert_equal 1, Widget.count
|
||||
assert_equal 1, Widget.count(:all, :conditions => ['title=?', 'widget 1'])
|
||||
assert_equal 2, Widget.calculate_with_deleted(:count, :all)
|
||||
assert_equal 1, Widget.count_only_deleted
|
||||
end
|
||||
|
||||
def test_should_find_only_deleted
|
||||
assert_equal [2], Widget.find_only_deleted(:all).collect { |w| w.id }
|
||||
assert_equal [1, 2], Widget.find_with_deleted(:all, :order => 'id').collect { |w| w.id }
|
||||
end
|
||||
|
||||
def test_should_not_find_deleted
|
||||
@@ -111,6 +153,16 @@ class ParanoidTest < Test::Unit::TestCase
|
||||
assert_equal [categories(:category_1)], widgets(:widget_1).habtm_categories
|
||||
end
|
||||
|
||||
def test_should_not_find_deleted_has_many_through_associations
|
||||
assert_equal 1, widgets(:widget_1).tags.size
|
||||
assert_equal [tags(:tag_2)], widgets(:widget_1).tags
|
||||
end
|
||||
|
||||
def test_should_find_has_many_through_associations_with_deleted
|
||||
assert_equal 2, widgets(:widget_1).any_tags.size
|
||||
assert_equal Tag.find(:all), widgets(:widget_1).any_tags
|
||||
end
|
||||
|
||||
def test_should_not_find_deleted_belongs_to_associations
|
||||
assert_nil Category.find_with_deleted(3).widget
|
||||
end
|
||||
@@ -208,6 +260,24 @@ class ParanoidTest < Test::Unit::TestCase
|
||||
assert_equal [], w[2].categories.search('c').ids
|
||||
assert_equal [3,4], w[2].categories.search_with_deleted('c').ids
|
||||
end
|
||||
|
||||
def test_should_recover_record
|
||||
Widget.find(1).destroy
|
||||
assert_equal true, Widget.find_with_deleted(1).deleted?
|
||||
|
||||
Widget.find_with_deleted(1).recover!
|
||||
assert_equal false, Widget.find(1).deleted?
|
||||
end
|
||||
|
||||
def test_should_recover_record_and_has_many_associations
|
||||
Widget.find(1).destroy
|
||||
assert_equal true, Widget.find_with_deleted(1).deleted?
|
||||
assert_equal true, Category.find_with_deleted(1).deleted?
|
||||
|
||||
Widget.find_with_deleted(1).recover_with_associations!(:categories)
|
||||
assert_equal false, Widget.find(1).deleted?
|
||||
assert_equal false, Category.find(1).deleted?
|
||||
end
|
||||
end
|
||||
|
||||
class Array
|
||||
|
||||
10
vendor/plugins/acts_as_paranoid/test/schema.rb
vendored
10
vendor/plugins/acts_as_paranoid/test/schema.rb
vendored
@@ -16,5 +16,15 @@ ActiveRecord::Schema.define(:version => 1) do
|
||||
t.column :category_id, :integer
|
||||
t.column :widget_id, :integer
|
||||
end
|
||||
|
||||
create_table :tags, :force => true do |t|
|
||||
t.column :name, :string, :limit => 50
|
||||
end
|
||||
|
||||
create_table :taggings, :force => true do |t|
|
||||
t.column :tag_id, :integer
|
||||
t.column :widget_id, :integer
|
||||
t.column :deleted_at, :timestamp
|
||||
end
|
||||
|
||||
end
|
||||
@@ -1,13 +1,27 @@
|
||||
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
||||
|
||||
require 'test/unit'
|
||||
require File.expand_path(File.join(File.dirname(__FILE__), '../../../../config/environment.rb'))
|
||||
require 'rubygems'
|
||||
if ENV['RAILS'].nil?
|
||||
require File.expand_path(File.join(File.dirname(__FILE__), '../../../../config/environment.rb'))
|
||||
else
|
||||
# specific rails version targeted
|
||||
# load activerecord and plugin manually
|
||||
gem 'activerecord', "=#{ENV['RAILS']}"
|
||||
require 'active_record'
|
||||
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
||||
Dir["#{$LOAD_PATH.last}/**/*.rb"].each do |path|
|
||||
require path[$LOAD_PATH.last.size + 1..-1]
|
||||
end
|
||||
require File.join(File.dirname(__FILE__), '..', 'init.rb')
|
||||
end
|
||||
require 'active_record/fixtures'
|
||||
|
||||
config = YAML::load(IO.read(File.dirname(__FILE__) + '/database.yml'))
|
||||
# do this so fixtures will load
|
||||
ActiveRecord::Base.configurations.update config
|
||||
ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/debug.log")
|
||||
ActiveRecord::Base.establish_connection(config[ENV['DB'] || 'sqlite'])
|
||||
ActiveRecord::Base.establish_connection(config[ENV['DB'] || 'sqlite3'])
|
||||
|
||||
load(File.dirname(__FILE__) + "/schema.rb")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user