mongo_mapper 0.7.2 → 0.7.3
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/Rakefile +1 -17
- data/lib/mongo_mapper.rb +6 -27
- data/lib/mongo_mapper/document.rb +3 -53
- data/lib/mongo_mapper/embedded_document.rb +1 -0
- data/lib/mongo_mapper/plugins.rb +1 -0
- data/lib/mongo_mapper/plugins/keys.rb +4 -2
- data/lib/mongo_mapper/plugins/persistence.rb +68 -0
- data/lib/mongo_mapper/support.rb +3 -2
- data/lib/mongo_mapper/version.rb +1 -1
- data/mongo_mapper.gemspec +6 -5
- data/test/functional/test_document.rb +9 -1
- data/test/functional/test_embedded_document.rb +11 -1
- data/test/functional/test_identity_map.rb +0 -1
- data/test/functional/test_indexing.rb +2 -2
- data/test/functional/test_protected.rb +0 -2
- data/test/models.rb +0 -5
- data/test/unit/test_embedded_document.rb +9 -9
- data/test/unit/test_mongo_mapper.rb +0 -37
- data/test/unit/test_rails_compatibility.rb +3 -3
- metadata +6 -5
    
        data/Rakefile
    CHANGED
    
    | @@ -13,7 +13,7 @@ Jeweler::Tasks.new do |gem| | |
| 13 13 | 
             
              gem.version     = MongoMapper::Version
         | 
| 14 14 |  | 
| 15 15 | 
             
              gem.add_dependency('activesupport', '>= 2.3.4')
         | 
| 16 | 
            -
              gem.add_dependency('mongo', '0.19. | 
| 16 | 
            +
              gem.add_dependency('mongo', '0.19.3')
         | 
| 17 17 | 
             
              gem.add_dependency('jnunemaker-validatable', '1.8.3')
         | 
| 18 18 |  | 
| 19 19 | 
             
              gem.add_development_dependency('jnunemaker-matchy', '0.4.0')
         | 
| @@ -32,21 +32,5 @@ Rake::TestTask.new(:test) do |test| | |
| 32 32 | 
             
              test.verbose = true
         | 
| 33 33 | 
             
            end
         | 
| 34 34 |  | 
| 35 | 
            -
            namespace :test do
         | 
| 36 | 
            -
              Rake::TestTask.new(:units) do |test|
         | 
| 37 | 
            -
                test.libs << 'test'
         | 
| 38 | 
            -
                test.ruby_opts << '-rubygems'
         | 
| 39 | 
            -
                test.pattern = 'test/unit/**/test_*.rb'
         | 
| 40 | 
            -
                test.verbose = true
         | 
| 41 | 
            -
              end
         | 
| 42 | 
            -
             | 
| 43 | 
            -
              Rake::TestTask.new(:functionals) do |test|
         | 
| 44 | 
            -
                test.libs << 'test'
         | 
| 45 | 
            -
                test.ruby_opts << '-rubygems'
         | 
| 46 | 
            -
                test.pattern = 'test/functional/**/test_*.rb'
         | 
| 47 | 
            -
                test.verbose = true
         | 
| 48 | 
            -
              end
         | 
| 49 | 
            -
            end
         | 
| 50 | 
            -
             | 
| 51 35 | 
             
            task :default  => :test
         | 
| 52 36 | 
             
            task :test     => :check_dependencies
         | 
    
        data/lib/mongo_mapper.rb
    CHANGED
    
    | @@ -1,19 +1,13 @@ | |
| 1 | 
            +
            # Make sure you have the following libs in your load path or you could have issues:
         | 
| 2 | 
            +
            #   gem 'activesupport', '>= 2.3.4'
         | 
| 3 | 
            +
            #   gem 'mongo', '0.19.3'
         | 
| 4 | 
            +
            #   gem 'jnunemaker-validatable', '1.8.3'
         | 
| 5 | 
            +
            # gem 'activesupport', '= 2.3.4'
         | 
| 1 6 | 
             
            require 'set'
         | 
| 2 7 | 
             
            require 'uri'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            # if Gem is defined i'll assume you are using rubygems and lock specific versions
         | 
| 5 | 
            -
            # call me crazy but a plain old require will just get the latest version you have installed
         | 
| 6 | 
            -
            # so i want to make sure that if you are using gems you do in fact have the correct versions
         | 
| 7 | 
            -
            # if there is a better way to do this, please enlighten me!
         | 
| 8 | 
            -
            if self.class.const_defined?(:Gem)
         | 
| 9 | 
            -
              gem 'activesupport', '>= 2.3.4'
         | 
| 10 | 
            -
              gem 'mongo', '0.19.1'
         | 
| 11 | 
            -
              gem 'jnunemaker-validatable', '1.8.3'
         | 
| 12 | 
            -
            end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
            require 'active_support/all'
         | 
| 15 8 | 
             
            require 'mongo'
         | 
| 16 9 | 
             
            require 'validatable'
         | 
| 10 | 
            +
            require 'active_support/all'
         | 
| 17 11 |  | 
| 18 12 | 
             
            module MongoMapper
         | 
| 19 13 | 
             
              # generic MM error
         | 
| @@ -113,21 +107,6 @@ module MongoMapper | |
| 113 107 | 
             
                end
         | 
| 114 108 | 
             
              end
         | 
| 115 109 |  | 
| 116 | 
            -
              # @api private
         | 
| 117 | 
            -
              def self.use_time_zone?
         | 
| 118 | 
            -
                Time.respond_to?(:zone) && Time.zone ? true : false
         | 
| 119 | 
            -
              end
         | 
| 120 | 
            -
             | 
| 121 | 
            -
              # @api private
         | 
| 122 | 
            -
              def self.time_class
         | 
| 123 | 
            -
                use_time_zone? ? Time.zone : Time
         | 
| 124 | 
            -
              end
         | 
| 125 | 
            -
             | 
| 126 | 
            -
              # @api private
         | 
| 127 | 
            -
              def self.normalize_object_id(value)
         | 
| 128 | 
            -
                value.is_a?(String) ? Mongo::ObjectID.from_string(value) : value
         | 
| 129 | 
            -
              end
         | 
| 130 | 
            -
             | 
| 131 110 | 
             
              autoload :Query,            'mongo_mapper/query'
         | 
| 132 111 | 
             
              autoload :Document,         'mongo_mapper/document'
         | 
| 133 112 | 
             
              autoload :EmbeddedDocument, 'mongo_mapper/embedded_document'
         | 
| @@ -19,6 +19,7 @@ module MongoMapper | |
| 19 19 | 
             
                    plugin Plugins::Logger
         | 
| 20 20 | 
             
                    plugin Plugins::Modifiers
         | 
| 21 21 | 
             
                    plugin Plugins::Pagination
         | 
| 22 | 
            +
                    plugin Plugins::Persistence
         | 
| 22 23 | 
             
                    plugin Plugins::Protected
         | 
| 23 24 | 
             
                    plugin Plugins::Rails
         | 
| 24 25 | 
             
                    plugin Plugins::Serialization
         | 
| @@ -39,14 +40,8 @@ module MongoMapper | |
| 39 40 | 
             
                    super
         | 
| 40 41 | 
             
                  end
         | 
| 41 42 |  | 
| 42 | 
            -
                  def ensure_index( | 
| 43 | 
            -
                     | 
| 44 | 
            -
                      name_or_array.map { |pair| [pair[0], pair[1]] }
         | 
| 45 | 
            -
                    else
         | 
| 46 | 
            -
                      name_or_array
         | 
| 47 | 
            -
                    end
         | 
| 48 | 
            -
             | 
| 49 | 
            -
                    collection.create_index(keys_to_index, options[:unique])
         | 
| 43 | 
            +
                  def ensure_index(spec, options={})
         | 
| 44 | 
            +
                    collection.create_index(spec, options)
         | 
| 50 45 | 
             
                  end
         | 
| 51 46 |  | 
| 52 47 | 
             
                  def find(*args)
         | 
| @@ -150,43 +145,6 @@ module MongoMapper | |
| 150 145 | 
             
                    false
         | 
| 151 146 | 
             
                  end
         | 
| 152 147 |  | 
| 153 | 
            -
                  def connection(mongo_connection=nil)
         | 
| 154 | 
            -
                    if mongo_connection.nil?
         | 
| 155 | 
            -
                      @connection ||= MongoMapper.connection
         | 
| 156 | 
            -
                    else
         | 
| 157 | 
            -
                      @connection = mongo_connection
         | 
| 158 | 
            -
                    end
         | 
| 159 | 
            -
                    @connection
         | 
| 160 | 
            -
                  end
         | 
| 161 | 
            -
             | 
| 162 | 
            -
                  def set_database_name(name)
         | 
| 163 | 
            -
                    @database_name = name
         | 
| 164 | 
            -
                  end
         | 
| 165 | 
            -
             | 
| 166 | 
            -
                  def database_name
         | 
| 167 | 
            -
                    @database_name
         | 
| 168 | 
            -
                  end
         | 
| 169 | 
            -
             | 
| 170 | 
            -
                  def database
         | 
| 171 | 
            -
                    if database_name.nil?
         | 
| 172 | 
            -
                      MongoMapper.database
         | 
| 173 | 
            -
                    else
         | 
| 174 | 
            -
                      connection.db(database_name)
         | 
| 175 | 
            -
                    end
         | 
| 176 | 
            -
                  end
         | 
| 177 | 
            -
             | 
| 178 | 
            -
                  def set_collection_name(name)
         | 
| 179 | 
            -
                    @collection_name = name
         | 
| 180 | 
            -
                  end
         | 
| 181 | 
            -
             | 
| 182 | 
            -
                  def collection_name
         | 
| 183 | 
            -
                    @collection_name ||= self.to_s.tableize.gsub(/\//, '.')
         | 
| 184 | 
            -
                  end
         | 
| 185 | 
            -
             | 
| 186 | 
            -
                  def collection
         | 
| 187 | 
            -
                    database.collection(collection_name)
         | 
| 188 | 
            -
                  end
         | 
| 189 | 
            -
             | 
| 190 148 | 
             
                  def single_collection_inherited?
         | 
| 191 149 | 
             
                    keys.key?(:_type) && single_collection_inherited_superclass?
         | 
| 192 150 | 
             
                  end
         | 
| @@ -287,14 +245,6 @@ module MongoMapper | |
| 287 245 | 
             
                end
         | 
| 288 246 |  | 
| 289 247 | 
             
                module InstanceMethods
         | 
| 290 | 
            -
                  def collection
         | 
| 291 | 
            -
                    self.class.collection
         | 
| 292 | 
            -
                  end
         | 
| 293 | 
            -
             | 
| 294 | 
            -
                  def database
         | 
| 295 | 
            -
                    self.class.database
         | 
| 296 | 
            -
                  end
         | 
| 297 | 
            -
             | 
| 298 248 | 
             
                  def save(options={})
         | 
| 299 249 | 
             
                    options.assert_valid_keys(:validate, :safe)
         | 
| 300 250 | 
             
                    options.reverse_merge!(:validate => true)
         | 
    
        data/lib/mongo_mapper/plugins.rb
    CHANGED
    
    | @@ -21,6 +21,7 @@ module MongoMapper | |
| 21 21 | 
             
                autoload :Keys,           'mongo_mapper/plugins/keys'
         | 
| 22 22 | 
             
                autoload :Logger,         'mongo_mapper/plugins/logger'
         | 
| 23 23 | 
             
                autoload :Modifiers,      'mongo_mapper/plugins/modifiers'
         | 
| 24 | 
            +
                autoload :Persistence,    'mongo_mapper/plugins/persistence'
         | 
| 24 25 | 
             
                autoload :Protected,      'mongo_mapper/plugins/protected'
         | 
| 25 26 | 
             
                autoload :Rails,          'mongo_mapper/plugins/rails'
         | 
| 26 27 | 
             
                autoload :Serialization,  'mongo_mapper/plugins/serialization'
         | 
| @@ -7,6 +7,7 @@ module MongoMapper | |
| 7 7 |  | 
| 8 8 | 
             
                  module ClassMethods
         | 
| 9 9 | 
             
                    def inherited(descendant)
         | 
| 10 | 
            +
                      key :_type, String unless keys.keys.include?(:_type)
         | 
| 10 11 | 
             
                      descendant.instance_variable_set(:@keys, keys.dup)
         | 
| 11 12 | 
             
                      super
         | 
| 12 13 | 
             
                    end
         | 
| @@ -147,7 +148,6 @@ module MongoMapper | |
| 147 148 | 
             
                  module InstanceMethods
         | 
| 148 149 | 
             
                    def initialize(attrs={}, from_database=false)
         | 
| 149 150 | 
             
                      default_id_value(attrs)
         | 
| 150 | 
            -
                      assign_type
         | 
| 151 151 |  | 
| 152 152 | 
             
                      if from_database
         | 
| 153 153 | 
             
                        @new = false
         | 
| @@ -156,6 +156,8 @@ module MongoMapper | |
| 156 156 | 
             
                        @new = true
         | 
| 157 157 | 
             
                        assign(attrs)
         | 
| 158 158 | 
             
                      end
         | 
| 159 | 
            +
                      
         | 
| 160 | 
            +
                      assign_type
         | 
| 159 161 | 
             
                    end
         | 
| 160 162 |  | 
| 161 163 | 
             
                    def persisted?
         | 
| @@ -214,7 +216,7 @@ module MongoMapper | |
| 214 216 |  | 
| 215 217 | 
             
                    def id=(value)
         | 
| 216 218 | 
             
                      if self.class.using_object_id?
         | 
| 217 | 
            -
                        value =  | 
| 219 | 
            +
                        value = ObjectId.to_mongo(value)
         | 
| 218 220 | 
             
                      end
         | 
| 219 221 |  | 
| 220 222 | 
             
                      self[:_id] = value
         | 
| @@ -0,0 +1,68 @@ | |
| 1 | 
            +
            module MongoMapper
         | 
| 2 | 
            +
              module Plugins
         | 
| 3 | 
            +
                module Persistence
         | 
| 4 | 
            +
                  module ClassMethods
         | 
| 5 | 
            +
                    class Unsupported < MongoMapperError; end
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                    def connection(mongo_connection=nil)
         | 
| 8 | 
            +
                      not_supported_by_embedded
         | 
| 9 | 
            +
                      if mongo_connection.nil?
         | 
| 10 | 
            +
                        @connection ||= MongoMapper.connection
         | 
| 11 | 
            +
                      else
         | 
| 12 | 
            +
                        @connection = mongo_connection
         | 
| 13 | 
            +
                      end
         | 
| 14 | 
            +
                      @connection
         | 
| 15 | 
            +
                    end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                    def set_database_name(name)
         | 
| 18 | 
            +
                      not_supported_by_embedded
         | 
| 19 | 
            +
                      @database_name = name
         | 
| 20 | 
            +
                    end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                    def database_name
         | 
| 23 | 
            +
                      not_supported_by_embedded
         | 
| 24 | 
            +
                      @database_name
         | 
| 25 | 
            +
                    end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                    def database
         | 
| 28 | 
            +
                      not_supported_by_embedded
         | 
| 29 | 
            +
                      if database_name.nil?
         | 
| 30 | 
            +
                        MongoMapper.database
         | 
| 31 | 
            +
                      else
         | 
| 32 | 
            +
                        connection.db(database_name)
         | 
| 33 | 
            +
                      end
         | 
| 34 | 
            +
                    end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                    def set_collection_name(name)
         | 
| 37 | 
            +
                      not_supported_by_embedded
         | 
| 38 | 
            +
                      @collection_name = name
         | 
| 39 | 
            +
                    end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                    def collection_name
         | 
| 42 | 
            +
                      not_supported_by_embedded
         | 
| 43 | 
            +
                      @collection_name ||= self.to_s.tableize.gsub(/\//, '.')
         | 
| 44 | 
            +
                    end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                    def collection
         | 
| 47 | 
            +
                      not_supported_by_embedded
         | 
| 48 | 
            +
                      database.collection(collection_name)
         | 
| 49 | 
            +
                    end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                    private
         | 
| 52 | 
            +
                      def not_supported_by_embedded
         | 
| 53 | 
            +
                        raise Unsupported.new('This is not supported for embeddable documents at this time.') if embeddable?
         | 
| 54 | 
            +
                      end
         | 
| 55 | 
            +
                  end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                  module InstanceMethods
         | 
| 58 | 
            +
                    def collection
         | 
| 59 | 
            +
                      _root_document.class.collection
         | 
| 60 | 
            +
                    end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                    def database
         | 
| 63 | 
            +
                      _root_document.class.database
         | 
| 64 | 
            +
                    end
         | 
| 65 | 
            +
                  end
         | 
| 66 | 
            +
                end
         | 
| 67 | 
            +
              end
         | 
| 68 | 
            +
            end
         | 
    
        data/lib/mongo_mapper/support.rb
    CHANGED
    
    | @@ -182,14 +182,15 @@ class Time | |
| 182 182 | 
             
                if value.nil? || value == ''
         | 
| 183 183 | 
             
                  nil
         | 
| 184 184 | 
             
                else
         | 
| 185 | 
            -
                   | 
| 185 | 
            +
                  time_class = Time.try(:zone).present? ? Time.zone : Time
         | 
| 186 | 
            +
                  time = value.is_a?(Time) ? value : time_class.parse(value.to_s)
         | 
| 186 187 | 
             
                  # Convert time to milliseconds since BSON stores dates with that accurracy, but Ruby uses microseconds
         | 
| 187 188 | 
             
                  Time.at((time.to_f * 1000).round / 1000.0).utc if time
         | 
| 188 189 | 
             
                end
         | 
| 189 190 | 
             
              end
         | 
| 190 191 |  | 
| 191 192 | 
             
              def self.from_mongo(value)
         | 
| 192 | 
            -
                if  | 
| 193 | 
            +
                if Time.try(:zone).present? && value.present?
         | 
| 193 194 | 
             
                  value.in_time_zone(Time.zone)
         | 
| 194 195 | 
             
                else
         | 
| 195 196 | 
             
                  value
         | 
    
        data/lib/mongo_mapper/version.rb
    CHANGED
    
    
    
        data/mongo_mapper.gemspec
    CHANGED
    
    | @@ -5,11 +5,11 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = %q{mongo_mapper}
         | 
| 8 | 
            -
              s.version = "0.7. | 
| 8 | 
            +
              s.version = "0.7.3"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 11 | 
             
              s.authors = ["John Nunemaker"]
         | 
| 12 | 
            -
              s.date = %q{2010- | 
| 12 | 
            +
              s.date = %q{2010-04-05}
         | 
| 13 13 | 
             
              s.default_executable = %q{mmconsole}
         | 
| 14 14 | 
             
              s.email = %q{nunemaker@gmail.com}
         | 
| 15 15 | 
             
              s.executables = ["mmconsole"]
         | 
| @@ -53,6 +53,7 @@ Gem::Specification.new do |s| | |
| 53 53 | 
             
                 "lib/mongo_mapper/plugins/modifiers.rb",
         | 
| 54 54 | 
             
                 "lib/mongo_mapper/plugins/pagination.rb",
         | 
| 55 55 | 
             
                 "lib/mongo_mapper/plugins/pagination/proxy.rb",
         | 
| 56 | 
            +
                 "lib/mongo_mapper/plugins/persistence.rb",
         | 
| 56 57 | 
             
                 "lib/mongo_mapper/plugins/protected.rb",
         | 
| 57 58 | 
             
                 "lib/mongo_mapper/plugins/rails.rb",
         | 
| 58 59 | 
             
                 "lib/mongo_mapper/plugins/serialization.rb",
         | 
| @@ -179,7 +180,7 @@ Gem::Specification.new do |s| | |
| 179 180 |  | 
| 180 181 | 
             
                if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
         | 
| 181 182 | 
             
                  s.add_runtime_dependency(%q<activesupport>, [">= 2.3.4"])
         | 
| 182 | 
            -
                  s.add_runtime_dependency(%q<mongo>, ["= 0.19. | 
| 183 | 
            +
                  s.add_runtime_dependency(%q<mongo>, ["= 0.19.3"])
         | 
| 183 184 | 
             
                  s.add_runtime_dependency(%q<jnunemaker-validatable>, ["= 1.8.3"])
         | 
| 184 185 | 
             
                  s.add_development_dependency(%q<jnunemaker-matchy>, ["= 0.4.0"])
         | 
| 185 186 | 
             
                  s.add_development_dependency(%q<shoulda>, ["= 2.10.2"])
         | 
| @@ -187,7 +188,7 @@ Gem::Specification.new do |s| | |
| 187 188 | 
             
                  s.add_development_dependency(%q<mocha>, ["= 0.9.8"])
         | 
| 188 189 | 
             
                else
         | 
| 189 190 | 
             
                  s.add_dependency(%q<activesupport>, [">= 2.3.4"])
         | 
| 190 | 
            -
                  s.add_dependency(%q<mongo>, ["= 0.19. | 
| 191 | 
            +
                  s.add_dependency(%q<mongo>, ["= 0.19.3"])
         | 
| 191 192 | 
             
                  s.add_dependency(%q<jnunemaker-validatable>, ["= 1.8.3"])
         | 
| 192 193 | 
             
                  s.add_dependency(%q<jnunemaker-matchy>, ["= 0.4.0"])
         | 
| 193 194 | 
             
                  s.add_dependency(%q<shoulda>, ["= 2.10.2"])
         | 
| @@ -196,7 +197,7 @@ Gem::Specification.new do |s| | |
| 196 197 | 
             
                end
         | 
| 197 198 | 
             
              else
         | 
| 198 199 | 
             
                s.add_dependency(%q<activesupport>, [">= 2.3.4"])
         | 
| 199 | 
            -
                s.add_dependency(%q<mongo>, ["= 0.19. | 
| 200 | 
            +
                s.add_dependency(%q<mongo>, ["= 0.19.3"])
         | 
| 200 201 | 
             
                s.add_dependency(%q<jnunemaker-validatable>, ["= 1.8.3"])
         | 
| 201 202 | 
             
                s.add_dependency(%q<jnunemaker-matchy>, ["= 0.4.0"])
         | 
| 202 203 | 
             
                s.add_dependency(%q<shoulda>, ["= 2.10.2"])
         | 
| @@ -942,7 +942,6 @@ class DocumentTest < Test::Unit::TestCase | |
| 942 942 | 
             
                setup do
         | 
| 943 943 | 
             
                  class ::DocParent
         | 
| 944 944 | 
             
                    include MongoMapper::Document
         | 
| 945 | 
            -
                    key :_type, String
         | 
| 946 945 | 
             
                    key :name, String
         | 
| 947 946 | 
             
                  end
         | 
| 948 947 | 
             
                  DocParent.collection.remove
         | 
| @@ -964,6 +963,10 @@ class DocumentTest < Test::Unit::TestCase | |
| 964 963 | 
             
                  Object.send :remove_const, 'DocGrandSon' if defined?(::DocGrandSon)
         | 
| 965 964 | 
             
                end
         | 
| 966 965 |  | 
| 966 | 
            +
                should "automatically add _type key to store class" do
         | 
| 967 | 
            +
                  DocParent.keys.should include(:_type)
         | 
| 968 | 
            +
                end
         | 
| 969 | 
            +
             | 
| 967 970 | 
             
                should "use the same collection in the subclass" do
         | 
| 968 971 | 
             
                  DocDaughter.collection.name.should == DocParent.collection.name
         | 
| 969 972 | 
             
                end
         | 
| @@ -1091,6 +1094,11 @@ class DocumentTest < Test::Unit::TestCase | |
| 1091 1094 | 
             
                  }.should change { DocParent.count }.by(-2)
         | 
| 1092 1095 | 
             
                end
         | 
| 1093 1096 |  | 
| 1097 | 
            +
                should "set type from class and ignore _type in attributes" do
         | 
| 1098 | 
            +
                  doc = DocSon.create(:_type => 'DocDaughter', :name => 'John')
         | 
| 1099 | 
            +
                  DocParent.first.should be_instance_of(DocSon)
         | 
| 1100 | 
            +
                end
         | 
| 1101 | 
            +
             | 
| 1094 1102 | 
             
                should "be able to reload parent inherited class" do
         | 
| 1095 1103 | 
             
                  brian = DocParent.create(:name => 'Brian')
         | 
| 1096 1104 | 
             
                  brian.name = 'B-Dawg'
         | 
| @@ -126,7 +126,7 @@ class EmbeddedDocumentTest < Test::Unit::TestCase | |
| 126 126 | 
             
                  @doc = @klass.new(:name => 'persisted doc', :pets => [@pet_klass.new(:name => 'persisted pet')])
         | 
| 127 127 | 
             
                end
         | 
| 128 128 |  | 
| 129 | 
            -
                 | 
| 129 | 
            +
                should "be false if new" do
         | 
| 130 130 | 
             
                  @doc.pets.first.should_not be_persisted
         | 
| 131 131 | 
             
                end
         | 
| 132 132 |  | 
| @@ -189,4 +189,14 @@ class EmbeddedDocumentTest < Test::Unit::TestCase | |
| 189 189 | 
             
                pet.expects(:save!)
         | 
| 190 190 | 
             
                pet.update_attributes!(attributes)
         | 
| 191 191 | 
             
              end
         | 
| 192 | 
            +
              
         | 
| 193 | 
            +
              should "have database instance method that is equal to root document" do
         | 
| 194 | 
            +
                person = @klass.create(:pets => [@pet_klass.new(:name => 'sparky')])
         | 
| 195 | 
            +
                person.pets.first.database.should == person.database
         | 
| 196 | 
            +
              end
         | 
| 197 | 
            +
              
         | 
| 198 | 
            +
              should "have collection instance method that is equal to root document" do
         | 
| 199 | 
            +
                person = @klass.create(:pets => [@pet_klass.new(:name => 'sparky')])
         | 
| 200 | 
            +
                person.pets.first.collection.name.should == person.collection.name
         | 
| 201 | 
            +
              end
         | 
| 192 202 | 
             
            end
         | 
| @@ -31,8 +31,8 @@ class IndexingTest < Test::Unit::TestCase | |
| 31 31 | 
             
                  # just checking have_index('first_name_1_last_name_-1') I'm checking
         | 
| 32 32 | 
             
                  # the values of the indexes to make sure the index creation was successful
         | 
| 33 33 | 
             
                  @document.collection.index_information.detect do |index|
         | 
| 34 | 
            -
                    keys = index[ | 
| 35 | 
            -
                    keys.include?( | 
| 34 | 
            +
                    keys = index[0]
         | 
| 35 | 
            +
                    keys.include?('first_name_1') && keys.include?('last_name_-1')
         | 
| 36 36 | 
             
                  end.should_not be_nil
         | 
| 37 37 | 
             
                end
         | 
| 38 38 |  | 
    
        data/test/models.rb
    CHANGED
    
    | @@ -67,7 +67,6 @@ class Message | |
| 67 67 |  | 
| 68 68 | 
             
              key :body, String
         | 
| 69 69 | 
             
              key :position, Integer
         | 
| 70 | 
            -
              key :_type, String
         | 
| 71 70 | 
             
              key :room_id, ObjectId
         | 
| 72 71 |  | 
| 73 72 | 
             
              belongs_to :room
         | 
| @@ -94,7 +93,6 @@ end | |
| 94 93 | 
             
            class Account
         | 
| 95 94 | 
             
              include MongoMapper::Document
         | 
| 96 95 |  | 
| 97 | 
            -
              key :_type, String
         | 
| 98 96 | 
             
              key :room_id, ObjectId
         | 
| 99 97 | 
             
              key :last_logged_in, Time
         | 
| 100 98 |  | 
| @@ -158,9 +156,7 @@ end | |
| 158 156 | 
             
            class Media
         | 
| 159 157 | 
             
              include MongoMapper::EmbeddedDocument
         | 
| 160 158 |  | 
| 161 | 
            -
              key :_type, String
         | 
| 162 159 | 
             
              key :file, String
         | 
| 163 | 
            -
              
         | 
| 164 160 | 
             
              key :visible, Boolean
         | 
| 165 161 | 
             
            end
         | 
| 166 162 |  | 
| @@ -192,7 +188,6 @@ module TrModels | |
| 192 188 | 
             
              class Transport
         | 
| 193 189 | 
             
                include MongoMapper::EmbeddedDocument
         | 
| 194 190 |  | 
| 195 | 
            -
                key :_type, String
         | 
| 196 191 | 
             
                key :license_plate, String
         | 
| 197 192 | 
             
                key :purchased_on, Date
         | 
| 198 193 | 
             
              end
         | 
| @@ -179,17 +179,17 @@ class EmbeddedDocumentTest < Test::Unit::TestCase | |
| 179 179 |  | 
| 180 180 | 
             
                  context "keys" do
         | 
| 181 181 | 
             
                    should "be inherited" do
         | 
| 182 | 
            -
                      Grandparent.keys.keys.sort.should == ['_id', 'grandparent']
         | 
| 183 | 
            -
                      Parent.keys.keys.sort.should == ['_id', 'grandparent', 'parent']
         | 
| 184 | 
            -
                      Child.keys.keys.sort.should  == ['_id', 'child', 'grandparent', 'parent']
         | 
| 182 | 
            +
                      Grandparent.keys.keys.sort.should == ['_id', '_type', 'grandparent']
         | 
| 183 | 
            +
                      Parent.keys.keys.sort.should == ['_id', '_type', 'grandparent', 'parent']
         | 
| 184 | 
            +
                      Child.keys.keys.sort.should  == ['_id', '_type', 'child', 'grandparent', 'parent']
         | 
| 185 185 | 
             
                    end
         | 
| 186 186 |  | 
| 187 187 | 
             
                    should "propogate to descendants if key added after class definition" do
         | 
| 188 | 
            -
                      Grandparent.key : | 
| 188 | 
            +
                      Grandparent.key :foo, String
         | 
| 189 189 |  | 
| 190 | 
            -
                      Grandparent.keys.keys.sort.should == ['_id', '_type', 'grandparent']
         | 
| 191 | 
            -
                      Parent.keys.keys.sort.should      == ['_id', '_type', 'grandparent', 'parent']
         | 
| 192 | 
            -
                      Child.keys.keys.sort.should       == ['_id', '_type', 'child', 'grandparent', 'parent']
         | 
| 190 | 
            +
                      Grandparent.keys.keys.sort.should == ['_id', '_type', 'foo', 'grandparent']
         | 
| 191 | 
            +
                      Parent.keys.keys.sort.should      == ['_id', '_type', 'foo', 'grandparent', 'parent']
         | 
| 192 | 
            +
                      Child.keys.keys.sort.should       == ['_id', '_type', 'child', 'foo', 'grandparent', 'parent']
         | 
| 193 193 | 
             
                    end
         | 
| 194 194 |  | 
| 195 195 | 
             
                    should "not add anonymous objects to the ancestor tree" do
         | 
| @@ -302,8 +302,8 @@ class EmbeddedDocumentTest < Test::Unit::TestCase | |
| 302 302 | 
             
                      @klass.new._type.should == 'FooBar'
         | 
| 303 303 | 
             
                    end
         | 
| 304 304 |  | 
| 305 | 
            -
                    should " | 
| 306 | 
            -
                      @klass.new(:_type => 'Foo')._type.should == ' | 
| 305 | 
            +
                    should "ignore _type attribute and always use class" do
         | 
| 306 | 
            +
                      @klass.new(:_type => 'Foo')._type.should == 'FooBar'
         | 
| 307 307 | 
             
                    end
         | 
| 308 308 | 
             
                  end
         | 
| 309 309 |  | 
| @@ -115,41 +115,4 @@ class MongoMapperTest < Test::Unit::TestCase | |
| 115 115 | 
             
                  MongoMapper.setup(config, 'development', :logger => logger, :passenger => true)
         | 
| 116 116 | 
             
                end
         | 
| 117 117 | 
             
              end
         | 
| 118 | 
            -
              
         | 
| 119 | 
            -
             | 
| 120 | 
            -
              context "use_time_zone?" do
         | 
| 121 | 
            -
                should "be true if Time.zone set" do
         | 
| 122 | 
            -
                  Time.zone = 'Hawaii'
         | 
| 123 | 
            -
                  MongoMapper.use_time_zone?.should be_true
         | 
| 124 | 
            -
                  Time.zone = nil
         | 
| 125 | 
            -
                end
         | 
| 126 | 
            -
             | 
| 127 | 
            -
                should "be false if Time.zone not set" do
         | 
| 128 | 
            -
                  MongoMapper.use_time_zone?.should be_false
         | 
| 129 | 
            -
                end
         | 
| 130 | 
            -
              end
         | 
| 131 | 
            -
             | 
| 132 | 
            -
              context "time_class" do
         | 
| 133 | 
            -
                should "be Time.zone if using time zones" do
         | 
| 134 | 
            -
                  Time.zone = 'Hawaii'
         | 
| 135 | 
            -
                  MongoMapper.time_class.should == Time.zone
         | 
| 136 | 
            -
                  Time.zone = nil
         | 
| 137 | 
            -
                end
         | 
| 138 | 
            -
             | 
| 139 | 
            -
                should "be Time if not using time zones" do
         | 
| 140 | 
            -
                  MongoMapper.time_class.should == Time
         | 
| 141 | 
            -
                end
         | 
| 142 | 
            -
              end
         | 
| 143 | 
            -
             | 
| 144 | 
            -
              context "normalize_object_id" do
         | 
| 145 | 
            -
                should "turn string into object id" do
         | 
| 146 | 
            -
                  id = Mongo::ObjectID.new
         | 
| 147 | 
            -
                  MongoMapper.normalize_object_id(id.to_s).should == id
         | 
| 148 | 
            -
                end
         | 
| 149 | 
            -
             | 
| 150 | 
            -
                should "leave object id alone" do
         | 
| 151 | 
            -
                  id = Mongo::ObjectID.new
         | 
| 152 | 
            -
                  MongoMapper.normalize_object_id(id).should == id
         | 
| 153 | 
            -
                end
         | 
| 154 | 
            -
              end
         | 
| 155 118 | 
             
            end
         | 
| @@ -29,9 +29,9 @@ class TestRailsCompatibility < Test::Unit::TestCase | |
| 29 29 | 
             
                end
         | 
| 30 30 |  | 
| 31 31 | 
             
                should "have column names" do
         | 
| 32 | 
            -
                  Item.column_names.sort.should == ['_id', 'for_all']
         | 
| 33 | 
            -
                  FirstItem.column_names.sort.should == ['_id', 'first_only', 'for_all']
         | 
| 34 | 
            -
                  SecondItem.column_names.sort.should == ['_id', 'for_all', 'second_only']
         | 
| 32 | 
            +
                  Item.column_names.sort.should == ['_id', '_type', 'for_all']
         | 
| 33 | 
            +
                  FirstItem.column_names.sort.should == ['_id', '_type', 'first_only', 'for_all']
         | 
| 34 | 
            +
                  SecondItem.column_names.sort.should == ['_id', '_type', 'for_all', 'second_only']
         | 
| 35 35 | 
             
                end
         | 
| 36 36 |  | 
| 37 37 | 
             
                should "alias new to new_record?" do
         | 
    
        metadata
    CHANGED
    
    | @@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version | |
| 5 5 | 
             
              segments: 
         | 
| 6 6 | 
             
              - 0
         | 
| 7 7 | 
             
              - 7
         | 
| 8 | 
            -
              -  | 
| 9 | 
            -
              version: 0.7. | 
| 8 | 
            +
              - 3
         | 
| 9 | 
            +
              version: 0.7.3
         | 
| 10 10 | 
             
            platform: ruby
         | 
| 11 11 | 
             
            authors: 
         | 
| 12 12 | 
             
            - John Nunemaker
         | 
| @@ -14,7 +14,7 @@ autorequire: | |
| 14 14 | 
             
            bindir: bin
         | 
| 15 15 | 
             
            cert_chain: []
         | 
| 16 16 |  | 
| 17 | 
            -
            date: 2010- | 
| 17 | 
            +
            date: 2010-04-05 00:00:00 -04:00
         | 
| 18 18 | 
             
            default_executable: mmconsole
         | 
| 19 19 | 
             
            dependencies: 
         | 
| 20 20 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -41,8 +41,8 @@ dependencies: | |
| 41 41 | 
             
                    segments: 
         | 
| 42 42 | 
             
                    - 0
         | 
| 43 43 | 
             
                    - 19
         | 
| 44 | 
            -
                    -  | 
| 45 | 
            -
                    version: 0.19. | 
| 44 | 
            +
                    - 3
         | 
| 45 | 
            +
                    version: 0.19.3
         | 
| 46 46 | 
             
              type: :runtime
         | 
| 47 47 | 
             
              version_requirements: *id002
         | 
| 48 48 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -160,6 +160,7 @@ files: | |
| 160 160 | 
             
            - lib/mongo_mapper/plugins/modifiers.rb
         | 
| 161 161 | 
             
            - lib/mongo_mapper/plugins/pagination.rb
         | 
| 162 162 | 
             
            - lib/mongo_mapper/plugins/pagination/proxy.rb
         | 
| 163 | 
            +
            - lib/mongo_mapper/plugins/persistence.rb
         | 
| 163 164 | 
             
            - lib/mongo_mapper/plugins/protected.rb
         | 
| 164 165 | 
             
            - lib/mongo_mapper/plugins/rails.rb
         | 
| 165 166 | 
             
            - lib/mongo_mapper/plugins/serialization.rb
         |