Sha256: fe80d3bcaed08808e445637b1e646b5e915c1778a97eb62ad7b6f81d2233b6d4

Contents?: true

Size: 1.84 KB

Versions: 66

Compression:

Stored size: 1.84 KB

Contents

require 'test_helper'

class TimestampsTest < Test::Unit::TestCase
  context "timestamping" do
    setup do
      @klass = Doc do
        key :first_name, String
        key :last_name, String
        key :age, Integer
        key :date, Date
      end
      @klass.timestamps!
    end

    should "set created_at and updated_at on create" do
      doc = @klass.new(:first_name => 'John', :age => 27)
      doc.created_at.should be(nil)
      doc.updated_at.should be(nil)
      doc.save
      doc.created_at.should_not be(nil)
      doc.updated_at.should_not be(nil)
    end

    should "not overwrite created_at if it already exists" do
      original_created_at = 1.month.ago
      doc = @klass.new(:first_name => 'John', :age => 27, :created_at => original_created_at)
      doc.created_at.to_i.should == original_created_at.to_i
      doc.updated_at.should be_nil
      doc.save
      doc.created_at.to_i.should == original_created_at.to_i
      doc.updated_at.should_not be_nil
    end

    should "set updated_at on field update but leave created_at alone" do
      doc = @klass.create(:first_name => 'John', :age => 27)
      old_created_at = doc.created_at
      old_updated_at = doc.updated_at
      doc.first_name = 'Johnny'

      Timecop.freeze(Time.now + 5.seconds) do
        doc.save
      end

      doc.created_at.should == old_created_at
      doc.updated_at.should_not == old_updated_at
    end

    should "set updated_at on document update but leave created_at alone" do
      doc = @klass.create(:first_name => 'John', :age => 27)
      old_created_at = doc.created_at
      old_updated_at = doc.updated_at

      Timecop.freeze(Time.now + 5.seconds) do
        @klass.update(doc._id, { :first_name => 'Johnny' })
      end

      doc = doc.reload
      doc.created_at.should == old_created_at
      doc.updated_at.should_not == old_updated_at
    end
  end
end

Version data entries

66 entries across 66 versions & 7 rubygems

Version Path
mongo_mapper-0.11.0 test/functional/test_timestamps.rb
mongo_mapper-0.10.1 test/functional/test_timestamps.rb
mongo_mapper-0.10.0 test/functional/test_timestamps.rb
mongo_mapper-0.9.2 test/functional/test_timestamps.rb
jonbell-mongo_mapper-0.8.6 test/functional/test_timestamps.rb
mongo_mapper-0.9.1 test/functional/test_timestamps.rb
mongo_mapper-0.9.0 test/functional/test_timestamps.rb
ign-mongo_mapper-0.8.6.2 test/functional/test_timestamps.rb
ign-mongo_mapper-0.8.6.1 test/functional/test_timestamps.rb
ssherman-mongo_mapper-0.8.6 test/functional/test_timestamps.rb
mongo_mapper-0.8.6 test/functional/test_timestamps.rb
mongo_mapper-0.8.5 test/functional/test_timestamps.rb
honkster-mongo_mapper-0.8.4 test/functional/test_timestamps.rb
mongo_mapper-0.8.4 test/functional/test_timestamps.rb
mongo_mapper-unstable-2010.08.19 test/functional/test_timestamps.rb
mongo_mapper-unstable-2010.08.18 test/functional/test_timestamps.rb
mongo_mapper-unstable-2010.08.17 test/functional/test_timestamps.rb
mongo_mapper-unstable-2010.08.16 test/functional/test_timestamps.rb
mongo_mapper-unstable-2010.08.15 test/functional/test_timestamps.rb
mongo_mapper-unstable-2010.08.14 test/functional/test_timestamps.rb