mongoid_embedded_helper 0.2.1 → 0.2.2
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/VERSION +1 -1
- data/lib/mongoid/embedded_helper.rb +8 -4
- data/mongoid_embedded_helper.gemspec +3 -1
- data/spec/mongoid/more_embedded_helper_spec.rb +49 -0
- metadata +4 -2
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            0.2. | 
| 1 | 
            +
            0.2.2
         | 
| @@ -4,9 +4,13 @@ module Mongoid | |
| 4 4 | 
             
              module EmbeddedHelper                      
         | 
| 5 5 | 
             
                def in_collection stack = []
         | 
| 6 6 | 
             
                  stack.extend(ArrayExt) if stack.empty?
         | 
| 7 | 
            -
                  if embedded? | 
| 7 | 
            +
                  if embedded? 
         | 
| 8 8 | 
             
                    stack.add_collection_name self
         | 
| 9 | 
            -
                    _parent.in_collection | 
| 9 | 
            +
                    if _parent.respond_to?(:in_collection)
         | 
| 10 | 
            +
                      _parent.in_collection(stack)
         | 
| 11 | 
            +
                    else
         | 
| 12 | 
            +
                      iterate_collection_stack stack, _parent
         | 
| 13 | 
            +
                    end
         | 
| 10 14 | 
             
                  else  
         | 
| 11 15 | 
             
                    return self.class if stack.empty?      
         | 
| 12 16 | 
             
                    iterate_collection_stack stack
         | 
| @@ -15,8 +19,8 @@ module Mongoid | |
| 15 19 |  | 
| 16 20 | 
             
                private 
         | 
| 17 21 |  | 
| 18 | 
            -
                def iterate_collection_stack stack
         | 
| 19 | 
            -
                  collection = self
         | 
| 22 | 
            +
                def iterate_collection_stack stack, subject = nil
         | 
| 23 | 
            +
                  collection = subject || self
         | 
| 20 24 | 
             
                  stack = stack.reverse
         | 
| 21 25 | 
             
                  stack.each do |entry|
         | 
| 22 26 | 
             
                    sub_collection = collection.send entry[:collection_name]    
         | 
| @@ -5,7 +5,7 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = %q{mongoid_embedded_helper}
         | 
| 8 | 
            -
              s.version = "0.2. | 
| 8 | 
            +
              s.version = "0.2.2"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 11 | 
             
              s.authors = ["Kristian Mandrup"]
         | 
| @@ -27,6 +27,7 @@ Gem::Specification.new do |s| | |
| 27 27 | 
             
                 "lib/mongoid_embedded_helper.rb",
         | 
| 28 28 | 
             
                 "mongoid_embedded_helper.gemspec",
         | 
| 29 29 | 
             
                 "spec/mongoid/embedded_helper_spec.rb",
         | 
| 30 | 
            +
                 "spec/mongoid/more_embedded_helper_spec.rb",
         | 
| 30 31 | 
             
                 "spec/rspec.options",
         | 
| 31 32 | 
             
                 "spec/spec_helper.rb"
         | 
| 32 33 | 
             
              ]
         | 
| @@ -37,6 +38,7 @@ Gem::Specification.new do |s| | |
| 37 38 | 
             
              s.summary = %q{Facilitates performing queries on collections in embedded Mongoid documents}
         | 
| 38 39 | 
             
              s.test_files = [
         | 
| 39 40 | 
             
                "spec/mongoid/embedded_helper_spec.rb",
         | 
| 41 | 
            +
                 "spec/mongoid/more_embedded_helper_spec.rb",
         | 
| 40 42 | 
             
                 "spec/spec_helper.rb"
         | 
| 41 43 | 
             
              ]
         | 
| 42 44 |  | 
| @@ -0,0 +1,49 @@ | |
| 1 | 
            +
            require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            Mongoid.configure.master = Mongo::Connection.new.db('acts_as_list-test')
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            class List
         | 
| 6 | 
            +
              include Mongoid::Document
         | 
| 7 | 
            +
              field :pos, :type => Integer  
         | 
| 8 | 
            +
              field :name, :type => String
         | 
| 9 | 
            +
              embeds_many :items     
         | 
| 10 | 
            +
            end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
             | 
| 13 | 
            +
            class Item
         | 
| 14 | 
            +
              include Mongoid::Document      
         | 
| 15 | 
            +
              include Mongoid::EmbeddedHelper
         | 
| 16 | 
            +
              field :pos, :type => Integer  
         | 
| 17 | 
            +
              field :number, :type => Integer  
         | 
| 18 | 
            +
              field :name, :type => String   
         | 
| 19 | 
            +
              field :assoc, :type => Symbol
         | 
| 20 | 
            +
              embedded_in :list, :inverse_of => :items   
         | 
| 21 | 
            +
            end    
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            describe 'Mongoid Embedded Helper' do
         | 
| 24 | 
            +
              before :each do
         | 
| 25 | 
            +
                @list = List.create! :pos => 1, :name => 'My list'
         | 
| 26 | 
            +
                item_names = ('A'..'C').to_a
         | 
| 27 | 
            +
                (1..3).each do |counter|
         | 
| 28 | 
            +
                  item = Item.new :pos => counter, :number => counter, :name => item_names[counter-1]
         | 
| 29 | 
            +
                  @list.items << item  
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
                @list.save!
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
              
         | 
| 34 | 
            +
              after :each do
         | 
| 35 | 
            +
                Mongoid.database.collections.each do |coll|
         | 
| 36 | 
            +
                  coll.remove
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
              end  
         | 
| 39 | 
            +
                 
         | 
| 40 | 
            +
              describe '#in_collection' do    
         | 
| 41 | 
            +
                it "should handle query from mid level node without List including Embedded::Helper" do
         | 
| 42 | 
            +
                  result = @list.items[0].in_collection.where(:pos => 2).to_a.first  
         | 
| 43 | 
            +
                  result.pos.should == 2
         | 
| 44 | 
            +
                  result.number.should == 2
         | 
| 45 | 
            +
                  result.name.should == 'B'      
         | 
| 46 | 
            +
                end
         | 
| 47 | 
            +
              end  
         | 
| 48 | 
            +
            end
         | 
| 49 | 
            +
             | 
    
        metadata
    CHANGED
    
    | @@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version | |
| 5 5 | 
             
              segments: 
         | 
| 6 6 | 
             
              - 0
         | 
| 7 7 | 
             
              - 2
         | 
| 8 | 
            -
              -  | 
| 9 | 
            -
              version: 0.2. | 
| 8 | 
            +
              - 2
         | 
| 9 | 
            +
              version: 0.2.2
         | 
| 10 10 | 
             
            platform: ruby
         | 
| 11 11 | 
             
            authors: 
         | 
| 12 12 | 
             
            - Kristian Mandrup
         | 
| @@ -84,6 +84,7 @@ files: | |
| 84 84 | 
             
            - lib/mongoid_embedded_helper.rb
         | 
| 85 85 | 
             
            - mongoid_embedded_helper.gemspec
         | 
| 86 86 | 
             
            - spec/mongoid/embedded_helper_spec.rb
         | 
| 87 | 
            +
            - spec/mongoid/more_embedded_helper_spec.rb
         | 
| 87 88 | 
             
            - spec/rspec.options
         | 
| 88 89 | 
             
            - spec/spec_helper.rb
         | 
| 89 90 | 
             
            has_rdoc: true
         | 
| @@ -120,4 +121,5 @@ specification_version: 3 | |
| 120 121 | 
             
            summary: Facilitates performing queries on collections in embedded Mongoid documents
         | 
| 121 122 | 
             
            test_files: 
         | 
| 122 123 | 
             
            - spec/mongoid/embedded_helper_spec.rb
         | 
| 124 | 
            +
            - spec/mongoid/more_embedded_helper_spec.rb
         | 
| 123 125 | 
             
            - spec/spec_helper.rb
         |