Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 7466

Show
Ignore:
Timestamp:
09/11/07 21:33:06 (10 months ago)
Author:
bitsweat
Message:

Tests needn't run within an app. Closes #9534 [lifofifo]

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • plugins/acts_as_tree/test/abstract_unit.rb

    r7458 r7466  
    1 $:.unshift(File.dirname(__FILE__) + '/../../../rails/activesupport/lib') 
    2 $:.unshift(File.dirname(__FILE__) + '/../../../rails/activerecord/lib') 
    3  
    4 require 'test/unit' 
    5 require 'active_support' 
    6 require 'active_record' 
    7 require 'active_record/fixtures' 
    8  
    9 $:.unshift(File.dirname(__FILE__) + '/../lib') 
    10 require "#{File.dirname(__FILE__)}/../init" 
    11  
    12 config = YAML::load(IO.read(File.dirname(__FILE__) + '/database.yml')) 
    13 ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/debug.log") 
    14 ActiveRecord::Base.configurations = {'test' => config[ENV['DB'] || 'sqlite3']} 
    15 ActiveRecord::Base.establish_connection(ActiveRecord::Base.configurations['test']) 
    16  
    17 load(File.dirname(__FILE__) + "/schema.rb") if File.exist?(File.dirname(__FILE__) + "/schema.rb") 
    18  
    19 class Test::Unit::TestCase #:nodoc: 
    20   self.fixture_path = File.dirname(__FILE__) + "/fixtures/"  
    21   self.use_transactional_fixtures = true 
    22   self.use_instantiated_fixtures  = false 
    23    
    24   def create_fixtures(*table_names, &block) 
    25     Fixtures.create_fixtures(File.dirname(__FILE__) + "/fixtures/", table_names, {}, &block) 
    26   end 
    27    
    28   def assert_queries(num = 1) 
    29     $query_count = 0 
    30     yield 
    31   ensure 
    32     assert_equal num, $query_count, "#{$query_count} instead of #{num} queries were executed." 
    33   end 
    34    
    35   def assert_no_queries(&block) 
    36     assert_queries(0, &block) 
    37   end 
    38    
    39 end 
  • plugins/acts_as_tree/test/acts_as_tree_test.rb

    r7451 r7466  
    1 require File.join(File.dirname(__FILE__), 'abstract_unit') 
    2 require File.join(File.dirname(__FILE__), 'fixtures/mixin') 
     1require 'test/unit' 
     2 
     3require 'rubygems' 
     4require 'active_record' 
     5 
     6$:.unshift File.dirname(__FILE__) + '/../lib' 
     7require File.dirname(__FILE__) + '/../init' 
     8 
     9class Test::Unit::TestCase 
     10  def assert_queries(num = 1) 
     11    $query_count = 0 
     12    yield 
     13  ensure 
     14    assert_equal num, $query_count, "#{$query_count} instead of #{num} queries were executed." 
     15  end 
     16 
     17  def assert_no_queries(&block) 
     18    assert_queries(0, &block) 
     19  end 
     20end 
     21 
     22ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :dbfile => ":memory:") 
     23 
     24# AR keeps printing annoying schema statements 
     25$stdout = StringIO.new 
     26 
     27def setup_db 
     28  ActiveRecord::Base.logger 
     29  ActiveRecord::Schema.define(:version => 1) do 
     30    create_table :mixins do |t| 
     31      t.column :type, :string 
     32      t.column :parent_id, :integer 
     33    end 
     34  end 
     35end 
     36 
     37def teardown_db 
     38  ActiveRecord::Base.connection.tables.each do |table| 
     39    ActiveRecord::Base.connection.drop_table(table) 
     40  end 
     41end 
     42 
     43class Mixin < ActiveRecord::Base 
     44end 
     45 
     46class TreeMixin < Mixin  
     47  acts_as_tree :foreign_key => "parent_id", :order => "id" 
     48end 
     49 
     50class TreeMixinWithoutOrder < Mixin 
     51  acts_as_tree :foreign_key => "parent_id" 
     52end 
     53 
     54class RecursivelyCascadedTreeMixin < Mixin 
     55  acts_as_tree :foreign_key => "parent_id" 
     56  has_one :first_child, :class_name => 'RecursivelyCascadedTreeMixin', :foreign_key => :parent_id 
     57end 
    358 
    459class TreeTest < Test::Unit::TestCase 
    5   fixtures :mixins 
     60   
     61  def setup 
     62    setup_db 
     63    @root1 = TreeMixin.create! 
     64    @root_child1 = TreeMixin.create! :parent_id => @root1.id 
     65    @child1_child = TreeMixin.create! :parent_id => @root_child1.id 
     66    @root_child2 = TreeMixin.create! :parent_id => @root1.id 
     67    @root2 = TreeMixin.create! 
     68    @root3 = TreeMixin.create! 
     69  end 
     70 
     71  def teardown 
     72    teardown_db 
     73  end 
    674 
    775  def test_children 
    8     assert_equal mixins(:tree_1).children, mixins(:tree_2, :tree_4) 
    9     assert_equal mixins(:tree_2).children, [mixins(:tree_3)
    10     assert_equal mixins(:tree_3).children, [] 
    11     assert_equal mixins(:tree_4).children, [] 
     76    assert_equal @root1.children, [@root_child1, @root_child2] 
     77    assert_equal @root_child1.children, [@child1_child
     78    assert_equal @child1_child.children, [] 
     79    assert_equal @root_child2.children, [] 
    1280  end 
    1381 
    1482  def test_parent 
    15     assert_equal mixins(:tree_2).parent, mixins(:tree_1) 
    16     assert_equal mixins(:tree_2).parent, mixins(:tree_4).parent 
    17     assert_nil mixins(:tree_1).parent 
     83    assert_equal @root_child1.parent, @root1 
     84    assert_equal @root_child1.parent, @root_child2.parent 
     85    assert_nil @root1.parent 
    1886  end 
    1987 
    2088  def test_delete 
    2189    assert_equal 6, TreeMixin.count 
    22     mixins(:tree_1).destroy 
     90    @root1.destroy 
    2391    assert_equal 2, TreeMixin.count 
    24     mixins(:tree2_1).destroy 
    25     mixins(:tree3_1).destroy 
     92    @root2.destroy 
     93    @root3.destroy 
    2694    assert_equal 0, TreeMixin.count 
    2795  end 
    2896 
    2997  def test_insert 
    30     @extra = mixins(:tree_1).children.create 
     98    @extra = @root1.children.create 
    3199 
    32100    assert @extra 
    33101 
    34     assert_equal @extra.parent, mixins(:tree_1) 
    35  
    36     assert_equal 3, mixins(:tree_1).children.size 
    37     assert mixins(:tree_1).children.include?(@extra) 
    38     assert mixins(:tree_1).children.include?(mixins(:tree_2)
    39     assert mixins(:tree_1).children.include?(mixins(:tree_4)
     102    assert_equal @extra.parent, @root1 
     103 
     104    assert_equal 3, @root1.children.size 
     105    assert @root1.children.include?(@extra) 
     106    assert @root1.children.include?(@root_child1
     107    assert @root1.children.include?(@root_child2
    40108  end 
    41109 
    42110  def test_ancestors 
    43     assert_equal [], mixins(:tree_1).ancestors 
    44     assert_equal [mixins(:tree_1)], mixins(:tree_2).ancestors 
    45     assert_equal mixins(:tree_2, :tree_1), mixins(:tree_3).ancestors 
    46     assert_equal [mixins(:tree_1)], mixins(:tree_4).ancestors 
    47     assert_equal [], mixins(:tree2_1).ancestors 
    48     assert_equal [], mixins(:tree3_1).ancestors 
     111    assert_equal [], @root1.ancestors 
     112    assert_equal [@root1], @root_child1.ancestors 
     113    assert_equal [@root_child1, @root1], @child1_child.ancestors 
     114    assert_equal [@root1], @root_child2.ancestors 
     115    assert_equal [], @root2.ancestors 
     116    assert_equal [], @root3.ancestors 
    49117  end 
    50118 
    51119  def test_root 
    52     assert_equal mixins(:tree_1), TreeMixin.root 
    53     assert_equal mixins(:tree_1), mixins(:tree_1).root 
    54     assert_equal mixins(:tree_1), mixins(:tree_2).root 
    55     assert_equal mixins(:tree_1), mixins(:tree_3).root 
    56     assert_equal mixins(:tree_1), mixins(:tree_4).root 
    57     assert_equal mixins(:tree2_1), mixins(:tree2_1).root 
    58     assert_equal mixins(:tree3_1), mixins(:tree3_1).root 
     120    assert_equal @root1, TreeMixin.root 
     121    assert_equal @root1, @root1.root 
     122    assert_equal @root1, @root_child1.root 
     123    assert_equal @root1, @child1_child.root 
     124    assert_equal @root1, @root_child2.root 
     125    assert_equal @root2, @root2.root 
     126    assert_equal @root3, @root3.root 
    59127  end 
    60128 
    61129  def test_roots 
    62     assert_equal mixins(:tree_1, :tree2_1, :tree3_1), TreeMixin.roots 
     130    assert_equal [@root1, @root2, @root3], TreeMixin.roots 
    63131  end 
    64132 
    65133  def test_siblings 
    66     assert_equal mixins(:tree2_1, :tree3_1), mixins(:tree_1).siblings 
    67     assert_equal [mixins(:tree_4)], mixins(:tree_2).siblings 
    68     assert_equal [], mixins(:tree_3).siblings 
    69     assert_equal [mixins(:tree_2)], mixins(:tree_4).siblings 
    70     assert_equal mixins(:tree_1, :tree3_1), mixins(:tree2_1).siblings 
    71     assert_equal mixins(:tree_1, :tree2_1), mixins(:tree3_1).siblings 
     134    assert_equal [@root2, @root3], @root1.siblings 
     135    assert_equal [@root_child2], @root_child1.siblings 
     136    assert_equal [], @child1_child.siblings 
     137    assert_equal [@root_child1], @root_child2.siblings 
     138    assert_equal [@root1, @root3], @root2.siblings 
     139    assert_equal [@root1, @root2], @root3.siblings 
    72140  end 
    73141 
    74142  def test_self_and_siblings 
    75     assert_equal mixins(:tree_1, :tree2_1, :tree3_1), mixins(:tree_1).self_and_siblings 
    76     assert_equal mixins(:tree_2, :tree_4), mixins(:tree_2).self_and_siblings 
    77     assert_equal [mixins(:tree_3)], mixins(:tree_3).self_and_siblings 
    78     assert_equal mixins(:tree_2, :tree_4), mixins(:tree_4).self_and_siblings 
    79     assert_equal mixins(:tree_1, :tree2_1, :tree3_1), mixins(:tree2_1).self_and_siblings 
    80     assert_equal mixins(:tree_1, :tree2_1, :tree3_1), mixins(:tree3_1).self_and_siblings 
     143    assert_equal [@root1, @root2, @root3], @root1.self_and_siblings 
     144    assert_equal [@root_child1, @root_child2], @root_child1.self_and_siblings 
     145    assert_equal [@child1_child], @child1_child.self_and_siblings 
     146    assert_equal [@root_child1, @root_child2], @root_child2.self_and_siblings 
     147    assert_equal [@root1, @root2, @root3], @root2.self_and_siblings 
     148    assert_equal [@root1, @root2, @root3], @root3.self_and_siblings 
    81149  end            
    82150end 
    83151 
    84152class TreeTestWithEagerLoading < Test::Unit::TestCase 
    85   fixtures :mixins 
     153   
     154  def setup  
     155    teardown_db 
     156    setup_db 
     157    @root1 = TreeMixin.create! 
     158    @root_child1 = TreeMixin.create! :parent_id => @root1.id 
     159    @child1_child = TreeMixin.create! :parent_id => @root_child1.id 
     160    @root_child2 = TreeMixin.create! :parent_id => @root1.id 
     161    @root2 = TreeMixin.create! 
     162    @root3 = TreeMixin.create! 
     163     
     164    @rc1 = RecursivelyCascadedTreeMixin.create! 
     165    @rc2 = RecursivelyCascadedTreeMixin.create! :parent_id => @rc1.id  
     166    @rc3 = RecursivelyCascadedTreeMixin.create! :parent_id => @rc2.id 
     167    @rc4 = RecursivelyCascadedTreeMixin.create! :parent_id => @rc3.id 
     168  end 
     169 
     170  def teardown 
     171    teardown_db 
     172  end 
    86173     
    87174  def test_eager_association_loading 
    88     roots = TreeMixin.find(:all, :include=>"children", :conditions=>"mixins.parent_id IS NULL", :order=>"mixins.id") 
    89     assert_equal mixins(:tree_1, :tree2_1, :tree3_1), roots 
     175    roots = TreeMixin.find(:all, :include => :children, :conditions => "mixins.parent_id IS NULL", :order => "mixins.id") 
     176    assert_equal [@root1, @root2, @root3], roots                      
    90177    assert_no_queries do 
    91178      assert_equal 2, roots[0].children.size 
    92179      assert_equal 0, roots[1].children.size 
    93180      assert_equal 0, roots[2].children.size 
    94     end 
     181    end    
    95182  end 
    96183   
    97184  def test_eager_association_loading_with_recursive_cascading_three_levels_has_many 
    98     root_node = RecursivelyCascadedTreeMixin.find(:first, :include=>{:children=>{:children=>:children}}, :order => 'mixins.id') 
    99     assert_equal mixins(:recursively_cascaded_tree_4), assert_no_queries { root_node.children.first.children.first.children.first } 
    100   end 
    101  
     185    root_node = RecursivelyCascadedTreeMixin.find(:first, :include => { :children => { :children => :children } }, :order => 'mixins.id') 
     186    assert_equal @rc4, assert_no_queries { root_node.children.first.children.first.children.first } 
     187  end 
     188   
    102189  def test_eager_association_loading_with_recursive_cascading_three_levels_has_one 
    103     root_node = RecursivelyCascadedTreeMixin.find(:first, :include=>{:first_child=>{:first_child=>:first_child}}, :order => 'mixins.id') 
    104     assert_equal mixins(:recursively_cascaded_tree_4), assert_no_queries { root_node.first_child.first_child.first_child } 
    105   end 
    106  
     190    root_node = RecursivelyCascadedTreeMixin.find(:first, :include => { :first_child => { :first_child => :first_child } }, :order => 'mixins.id') 
     191    assert_equal @rc4, assert_no_queries { root_node.first_child.first_child.first_child } 
     192  end 
     193   
    107194  def test_eager_association_loading_with_recursive_cascading_three_levels_belongs_to 
    108     leaf_node = RecursivelyCascadedTreeMixin.find(:first, :include=>{:parent=>{:parent=>:parent}}, :order => 'mixins.id DESC') 
    109     assert_equal mixins(:recursively_cascaded_tree_1), assert_no_queries { leaf_node.parent.parent.parent } 
    110   end 
     195    leaf_node = RecursivelyCascadedTreeMixin.find(:first, :include => { :parent => { :parent => :parent } }, :order => 'mixins.id DESC') 
     196    assert_equal @rc1, assert_no_queries { leaf_node.parent.parent.parent } 
     197  end  
    111198end 
    112199 
    113200class TreeTestWithoutOrder < Test::Unit::TestCase 
    114   fixtures :mixins 
     201   
     202  def setup                                
     203    setup_db 
     204    @root1 = TreeMixinWithoutOrder.create! 
     205    @root2 = TreeMixinWithoutOrder.create! 
     206  end 
     207 
     208  def teardown 
     209    teardown_db 
     210  end 
    115211 
    116212  def test_root 
    117     assert mixins(:tree_without_order_1, :tree_without_order_2).include?(TreeMixinWithoutOrder.root) 
    118   end 
    119  
     213    assert [@root1, @root2].include?(TreeMixinWithoutOrder.root) 
     214  end 
     215   
    120216  def test_roots 
    121     assert_equal [], mixins(:tree_without_order_1, :tree_without_order_2) - TreeMixinWithoutOrder.roots 
    122   end 
    123 end 
     217    assert_equal [], [@root1, @root2] - TreeMixinWithoutOrder.roots 
     218  end 
     219end  
  • plugins/acts_as_tree/test/database.yml

    r7451 r7466  
    1 sqlite: 
    2   :adapter: sqlite 
    3   :dbfile: acts_as_tree_plugin.sqlite.db 
    4 sqlite3: 
    5   :adapter: sqlite3 
    6   :dbfile: acts_as_tree_plugin.sqlite3.db 
    7 postgresql: 
    8   :adapter: postgresql 
    9   :username: postgres 
    10   :password: postgres 
    11   :database: acts_as_tree_plugin_test 
    12   :min_messages: ERROR 
    13 mysql: 
    14   :adapter: mysql 
    15   :host: localhost 
    16   :username: rails 
    17   :password: 
    18   :database: acts_as_tree_plugin_test 
  • plugins/acts_as_tree/test/fixtures/mixin.rb

    r7451 r7466  
    1 class Mixin < ActiveRecord::Base 
    2 end 
    3  
    4 class TreeMixin < Mixin  
    5   acts_as_tree :foreign_key => "parent_id", :order => "id" 
    6 end 
    7  
    8 class TreeMixinWithoutOrder < Mixin 
    9   acts_as_tree :foreign_key => "parent_id" 
    10 end 
    11  
    12 class RecursivelyCascadedTreeMixin < Mixin 
    13   acts_as_tree :foreign_key => "parent_id" 
    14   has_one :first_child, :class_name => 'RecursivelyCascadedTreeMixin', :foreign_key => :parent_id 
    15 end 
  • plugins/acts_as_tree/test/fixtures/mixins.yml

    r7451 r7466  
    1 tree_1: 
    2   id: 1001 
    3   type: TreeMixin 
    4   parent_id: 
    5    
    6 tree_2: 
    7   id: 1002 
    8   type: TreeMixin 
    9   parent_id: 1001 
    10  
    11 tree_3: 
    12   id: 1003 
    13   type: TreeMixin   
    14   parent_id: 1002 
    15  
    16 tree_4: 
    17   id: 1004 
    18   type: TreeMixin   
    19   parent_id: 1001 
    20  
    21 tree2_1: 
    22   id: 1005 
    23   type: TreeMixin 
    24   parent_id: 
    25  
    26 tree3_1: 
    27   id: 1006 
    28   type: TreeMixin 
    29   parent_id: 
    30  
    31 tree_without_order_1: 
    32   id: 1101 
    33   type: TreeMixinWithoutOrder 
    34   parent_id: 
    35  
    36 tree_without_order_2: 
    37   id: 1100 
    38   type: TreeMixinWithoutOrder 
    39   parent_id: 
    40  
    41 recursively_cascaded_tree_1: 
    42   id: 5005 
    43   type: RecursivelyCascadedTreeMixin 
    44   parent_id: 
    45  
    46 recursively_cascaded_tree_2: 
    47   id: 5006 
    48   type: RecursivelyCascadedTreeMixin 
    49   parent_id: 5005 
    50  
    51 recursively_cascaded_tree_3: 
    52   id: 5007 
    53   type: RecursivelyCascadedTreeMixin 
    54   parent_id: 5006 
    55  
    56 recursively_cascaded_tree_4: 
    57   id: 5008 
    58   type: RecursivelyCascadedTreeMixin 
    59   parent_id: 5007 
  • plugins/acts_as_tree/test/schema.rb

    r7451 r7466  
    1 ActiveRecord::Schema.define(:version => 1) do 
    2   create_table :mixins, :force => true do |t| 
    3     t.column :parent_id, :integer 
    4     t.column :pos, :integer         
    5     t.column :lft, :integer 
    6     t.column :rgt, :integer 
    7     t.column :root_id, :integer 
    8     t.column :type, :string 
    9     t.column :created_at, :datetime 
    10     t.column :updated_at, :datetime     
    11   end 
    12 end