mongoid-tree 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile.lock +56 -0
 - data/README.rdoc +1 -1
 - data/lib/mongoid/tree.rb +9 -1
 - data/spec/mongoid/tree_spec.rb +12 -3
 - metadata +9 -7
 
    
        data/Gemfile.lock
    ADDED
    
    | 
         @@ -0,0 +1,56 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            PATH
         
     | 
| 
      
 2 
     | 
    
         
            +
              remote: .
         
     | 
| 
      
 3 
     | 
    
         
            +
              specs:
         
     | 
| 
      
 4 
     | 
    
         
            +
                mongoid-tree (0.2.1)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  mongoid (>= 2.0.0.beta.14)
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            GEM
         
     | 
| 
      
 8 
     | 
    
         
            +
              remote: http://rubygems.org/
         
     | 
| 
      
 9 
     | 
    
         
            +
              specs:
         
     | 
| 
      
 10 
     | 
    
         
            +
                activemodel (3.0.0.rc)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  activesupport (= 3.0.0.rc)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  builder (~> 2.1.2)
         
     | 
| 
      
 13 
     | 
    
         
            +
                  i18n (~> 0.4.1)
         
     | 
| 
      
 14 
     | 
    
         
            +
                activesupport (3.0.0.rc)
         
     | 
| 
      
 15 
     | 
    
         
            +
                autotest (4.3.2)
         
     | 
| 
      
 16 
     | 
    
         
            +
                bson (1.0.4)
         
     | 
| 
      
 17 
     | 
    
         
            +
                bson_ext (1.0.4)
         
     | 
| 
      
 18 
     | 
    
         
            +
                builder (2.1.2)
         
     | 
| 
      
 19 
     | 
    
         
            +
                diff-lcs (1.1.2)
         
     | 
| 
      
 20 
     | 
    
         
            +
                haml (2.2.24)
         
     | 
| 
      
 21 
     | 
    
         
            +
                hanna (0.1.12)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  haml (~> 2.2.8)
         
     | 
| 
      
 23 
     | 
    
         
            +
                  rake (~> 0.8.2)
         
     | 
| 
      
 24 
     | 
    
         
            +
                  rdoc (~> 2.3.0)
         
     | 
| 
      
 25 
     | 
    
         
            +
                i18n (0.4.1)
         
     | 
| 
      
 26 
     | 
    
         
            +
                mongo (1.0.6)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  bson (>= 1.0.4)
         
     | 
| 
      
 28 
     | 
    
         
            +
                mongoid (2.0.0.beta.14)
         
     | 
| 
      
 29 
     | 
    
         
            +
                  activemodel (= 3.0.0.rc)
         
     | 
| 
      
 30 
     | 
    
         
            +
                  bson (= 1.0.4)
         
     | 
| 
      
 31 
     | 
    
         
            +
                  mongo (= 1.0.6)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  tzinfo (= 0.3.22)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  will_paginate (~> 3.0.pre)
         
     | 
| 
      
 34 
     | 
    
         
            +
                rake (0.8.7)
         
     | 
| 
      
 35 
     | 
    
         
            +
                rdoc (2.3.0)
         
     | 
| 
      
 36 
     | 
    
         
            +
                rspec (2.0.0.beta.19)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  rspec-core (= 2.0.0.beta.19)
         
     | 
| 
      
 38 
     | 
    
         
            +
                  rspec-expectations (= 2.0.0.beta.19)
         
     | 
| 
      
 39 
     | 
    
         
            +
                  rspec-mocks (= 2.0.0.beta.19)
         
     | 
| 
      
 40 
     | 
    
         
            +
                rspec-core (2.0.0.beta.19)
         
     | 
| 
      
 41 
     | 
    
         
            +
                rspec-expectations (2.0.0.beta.19)
         
     | 
| 
      
 42 
     | 
    
         
            +
                  diff-lcs (>= 1.1.2)
         
     | 
| 
      
 43 
     | 
    
         
            +
                rspec-mocks (2.0.0.beta.19)
         
     | 
| 
      
 44 
     | 
    
         
            +
                tzinfo (0.3.22)
         
     | 
| 
      
 45 
     | 
    
         
            +
                will_paginate (3.0.pre2)
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
            PLATFORMS
         
     | 
| 
      
 48 
     | 
    
         
            +
              ruby
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            DEPENDENCIES
         
     | 
| 
      
 51 
     | 
    
         
            +
              autotest (>= 4.3.2)
         
     | 
| 
      
 52 
     | 
    
         
            +
              bson_ext (>= 1.0.4)
         
     | 
| 
      
 53 
     | 
    
         
            +
              hanna (>= 0.1.12)
         
     | 
| 
      
 54 
     | 
    
         
            +
              mongoid (>= 2.0.0.beta.14)
         
     | 
| 
      
 55 
     | 
    
         
            +
              mongoid-tree!
         
     | 
| 
      
 56 
     | 
    
         
            +
              rspec (>= 2.0.0.beta.18)
         
     | 
    
        data/README.rdoc
    CHANGED
    
    
    
        data/lib/mongoid/tree.rb
    CHANGED
    
    | 
         @@ -63,15 +63,18 @@ module Mongoid # :nodoc: 
     | 
|
| 
       63 
63 
     | 
    
         | 
| 
       64 
64 
     | 
    
         
             
                included do
         
     | 
| 
       65 
65 
     | 
    
         
             
                  references_many :children, :class_name => self.name, :foreign_key => :parent_id, :inverse_of => :parent
         
     | 
| 
       66 
     | 
    
         
            -
                  referenced_in :parent, :class_name => self.name, :inverse_of => :children
         
     | 
| 
      
 66 
     | 
    
         
            +
                  referenced_in :parent, :class_name => self.name, :inverse_of => :children, :index => true
         
     | 
| 
       67 
67 
     | 
    
         | 
| 
       68 
68 
     | 
    
         
             
                  field :parent_ids, :type => Array, :default => []
         
     | 
| 
      
 69 
     | 
    
         
            +
                  index :parent_ids
         
     | 
| 
       69 
70 
     | 
    
         | 
| 
       70 
71 
     | 
    
         
             
                  set_callback :save, :after, :rearrange_children, :if => :rearrange_children?
         
     | 
| 
       71 
72 
     | 
    
         
             
                  set_callback :validation, :before do
         
     | 
| 
       72 
73 
     | 
    
         
             
                    run_callbacks(:rearrange) { rearrange }
         
     | 
| 
       73 
74 
     | 
    
         
             
                  end
         
     | 
| 
       74 
75 
     | 
    
         | 
| 
      
 76 
     | 
    
         
            +
                  validate :position_in_tree
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
       75 
78 
     | 
    
         
             
                  define_model_callbacks :rearrange, :only => [:before, :after]
         
     | 
| 
       76 
79 
     | 
    
         
             
                end
         
     | 
| 
       77 
80 
     | 
    
         | 
| 
         @@ -242,5 +245,10 @@ module Mongoid # :nodoc: 
     | 
|
| 
       242 
245 
     | 
    
         
             
                  @rearrange_children = false
         
     | 
| 
       243 
246 
     | 
    
         
             
                  self.children.find(:all).each { |c| c.save }
         
     | 
| 
       244 
247 
     | 
    
         
             
                end
         
     | 
| 
      
 248 
     | 
    
         
            +
             
     | 
| 
      
 249 
     | 
    
         
            +
                def position_in_tree
         
     | 
| 
      
 250 
     | 
    
         
            +
                  errors.add(:parent_id, :invalid) if self.parent_ids.include?(self.id)
         
     | 
| 
      
 251 
     | 
    
         
            +
                end
         
     | 
| 
      
 252 
     | 
    
         
            +
             
     | 
| 
       245 
253 
     | 
    
         
             
              end
         
     | 
| 
       246 
254 
     | 
    
         
             
            end
         
     | 
    
        data/spec/mongoid/tree_spec.rb
    CHANGED
    
    | 
         @@ -2,13 +2,13 @@ require 'spec_helper' 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            describe Mongoid::Tree do
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
              it "should reference many children as inverse of parent" do
         
     | 
| 
      
 5 
     | 
    
         
            +
              it "should reference many children as inverse of parent with index" do
         
     | 
| 
       6 
6 
     | 
    
         
             
                a = Node.associations['children']
         
     | 
| 
       7 
7 
     | 
    
         
             
                a.should_not be_nil
         
     | 
| 
       8 
8 
     | 
    
         
             
                a.association.should == Mongoid::Associations::ReferencesMany
         
     | 
| 
       9 
9 
     | 
    
         
             
                a.options.class_name.should == 'Node'
         
     | 
| 
       10 
10 
     | 
    
         
             
                a.options.foreign_key.should == 'parent_id'
         
     | 
| 
       11 
     | 
    
         
            -
                 
     | 
| 
      
 11 
     | 
    
         
            +
                Node.index_options.should have_key('parent_id')
         
     | 
| 
       12 
12 
     | 
    
         
             
              end
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
              it "should be referenced in one parent as inverse of children" do
         
     | 
| 
         @@ -17,13 +17,15 @@ describe Mongoid::Tree do 
     | 
|
| 
       17 
17 
     | 
    
         
             
                a.association.should == Mongoid::Associations::ReferencedIn
         
     | 
| 
       18 
18 
     | 
    
         
             
                a.options.class_name.should == 'Node'
         
     | 
| 
       19 
19 
     | 
    
         
             
                a.options.inverse_of.should == :children
         
     | 
| 
      
 20 
     | 
    
         
            +
                a.options.index.should be_true
         
     | 
| 
       20 
21 
     | 
    
         
             
              end
         
     | 
| 
       21 
22 
     | 
    
         | 
| 
       22 
     | 
    
         
            -
              it "should store parent_ids as Array with [] as default" do
         
     | 
| 
      
 23 
     | 
    
         
            +
              it "should store parent_ids as Array with [] as default with index" do
         
     | 
| 
       23 
24 
     | 
    
         
             
                f = Node.fields['parent_ids']
         
     | 
| 
       24 
25 
     | 
    
         
             
                f.should_not be_nil
         
     | 
| 
       25 
26 
     | 
    
         
             
                f.options[:type].should == Array
         
     | 
| 
       26 
27 
     | 
    
         
             
                f.options[:default].should == []
         
     | 
| 
      
 28 
     | 
    
         
            +
                Node.index_options.should have_key(:parent_ids)
         
     | 
| 
       27 
29 
     | 
    
         
             
              end
         
     | 
| 
       28 
30 
     | 
    
         | 
| 
       29 
31 
     | 
    
         
             
              describe 'when saved' do
         
     | 
| 
         @@ -79,6 +81,13 @@ describe Mongoid::Tree do 
     | 
|
| 
       79 
81 
     | 
    
         
             
                  root.save
         
     | 
| 
       80 
82 
     | 
    
         
             
                end
         
     | 
| 
       81 
83 
     | 
    
         | 
| 
      
 84 
     | 
    
         
            +
                it "should prevent cycles" do
         
     | 
| 
      
 85 
     | 
    
         
            +
                  child = node(:child)
         
     | 
| 
      
 86 
     | 
    
         
            +
                  child.parent = node(:subchild)
         
     | 
| 
      
 87 
     | 
    
         
            +
                  child.should_not be_valid
         
     | 
| 
      
 88 
     | 
    
         
            +
                  child.errors[:parent_id].should_not be_nil
         
     | 
| 
      
 89 
     | 
    
         
            +
                end
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
       82 
91 
     | 
    
         
             
              end
         
     | 
| 
       83 
92 
     | 
    
         | 
| 
       84 
93 
     | 
    
         
             
              describe 'utility methods' do
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,13 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: mongoid-tree
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              hash:  
     | 
| 
      
 4 
     | 
    
         
            +
              hash: 21
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       6 
6 
     | 
    
         
             
              segments: 
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 0
         
     | 
| 
       8 
8 
     | 
    
         
             
              - 2
         
     | 
| 
       9 
     | 
    
         
            -
              -  
     | 
| 
       10 
     | 
    
         
            -
              version: 0.2. 
     | 
| 
      
 9 
     | 
    
         
            +
              - 1
         
     | 
| 
      
 10 
     | 
    
         
            +
              version: 0.2.1
         
     | 
| 
       11 
11 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       12 
12 
     | 
    
         
             
            authors: 
         
     | 
| 
       13 
13 
     | 
    
         
             
            - Benedikt Deicke
         
     | 
| 
         @@ -15,7 +15,7 @@ autorequire: 
     | 
|
| 
       15 
15 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       16 
16 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
            date: 2010-07- 
     | 
| 
      
 18 
     | 
    
         
            +
            date: 2010-07-29 00:00:00 +02:00
         
     | 
| 
       19 
19 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       20 
20 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       21 
21 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
         @@ -26,13 +26,14 @@ dependencies: 
     | 
|
| 
       26 
26 
     | 
    
         
             
                requirements: 
         
     | 
| 
       27 
27 
     | 
    
         
             
                - - ">="
         
     | 
| 
       28 
28 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       29 
     | 
    
         
            -
                    hash:  
     | 
| 
      
 29 
     | 
    
         
            +
                    hash: 62196479
         
     | 
| 
       30 
30 
     | 
    
         
             
                    segments: 
         
     | 
| 
       31 
31 
     | 
    
         
             
                    - 2
         
     | 
| 
       32 
32 
     | 
    
         
             
                    - 0
         
     | 
| 
       33 
33 
     | 
    
         
             
                    - 0
         
     | 
| 
       34 
     | 
    
         
            -
                    -  
     | 
| 
       35 
     | 
    
         
            -
                     
     | 
| 
      
 34 
     | 
    
         
            +
                    - beta
         
     | 
| 
      
 35 
     | 
    
         
            +
                    - 14
         
     | 
| 
      
 36 
     | 
    
         
            +
                    version: 2.0.0.beta.14
         
     | 
| 
       36 
37 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       37 
38 
     | 
    
         
             
              version_requirements: *id001
         
     | 
| 
       38 
39 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
         @@ -107,6 +108,7 @@ files: 
     | 
|
| 
       107 
108 
     | 
    
         
             
            - README.rdoc
         
     | 
| 
       108 
109 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       109 
110 
     | 
    
         
             
            - Gemfile
         
     | 
| 
      
 111 
     | 
    
         
            +
            - Gemfile.lock
         
     | 
| 
       110 
112 
     | 
    
         
             
            - .rspec
         
     | 
| 
       111 
113 
     | 
    
         
             
            has_rdoc: true
         
     | 
| 
       112 
114 
     | 
    
         
             
            homepage: http://github.com/benedikt/mongoid-tree
         
     |