mongo_mapper-unstable 2010.2.28 → 2010.3.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.
@@ -1069,89 +1069,6 @@ class DocumentTest < Test::Unit::TestCase
1069
1069
  end
1070
1070
  end
1071
1071
 
1072
- context "timestamping" do
1073
- setup do
1074
- @klass = Doc do
1075
- set_collection_name 'users'
1076
-
1077
- key :first_name, String
1078
- key :last_name, String
1079
- key :age, Integer
1080
- key :date, Date
1081
- end
1082
- @klass.timestamps!
1083
- end
1084
-
1085
- should "set created_at and updated_at on create" do
1086
- doc = @klass.new(:first_name => 'John', :age => 27)
1087
- doc.created_at.should be(nil)
1088
- doc.updated_at.should be(nil)
1089
- doc.save
1090
- doc.created_at.should_not be(nil)
1091
- doc.updated_at.should_not be(nil)
1092
- end
1093
-
1094
- should "not overwrite created_at if it already exists" do
1095
- original_created_at = 1.month.ago
1096
- doc = @klass.new(:first_name => 'John', :age => 27, :created_at => original_created_at)
1097
- doc.created_at.to_i.should == original_created_at.to_i
1098
- doc.updated_at.should be_nil
1099
- doc.save
1100
- doc.created_at.to_i.should == original_created_at.to_i
1101
- doc.updated_at.should_not be_nil
1102
- end
1103
-
1104
- should "set updated_at on field update but leave created_at alone" do
1105
- doc = @klass.create(:first_name => 'John', :age => 27)
1106
- old_created_at = doc.created_at
1107
- old_updated_at = doc.updated_at
1108
- doc.first_name = 'Johnny'
1109
-
1110
- Timecop.freeze(Time.now + 5.seconds) do
1111
- doc.save
1112
- end
1113
-
1114
- doc.created_at.should == old_created_at
1115
- doc.updated_at.should_not == old_updated_at
1116
- end
1117
-
1118
- should "set updated_at on document update but leave created_at alone" do
1119
- doc = @klass.create(:first_name => 'John', :age => 27)
1120
- old_created_at = doc.created_at
1121
- old_updated_at = doc.updated_at
1122
-
1123
- Timecop.freeze(Time.now + 5.seconds) do
1124
- @klass.update(doc._id, { :first_name => 'Johnny' })
1125
- end
1126
-
1127
- doc = doc.reload
1128
- doc.created_at.should == old_created_at
1129
- doc.updated_at.should_not == old_updated_at
1130
- end
1131
- end
1132
-
1133
- context "userstamping" do
1134
- setup do
1135
- @document.userstamps!
1136
- end
1137
-
1138
- should "add creator_id key" do
1139
- @document.keys.keys.should include('creator_id')
1140
- end
1141
-
1142
- should "add updater_id key" do
1143
- @document.keys.keys.should include('updater_id')
1144
- end
1145
-
1146
- should "add belongs_to creator" do
1147
- @document.associations.keys.should include('creator')
1148
- end
1149
-
1150
- should "add belongs_to updater" do
1151
- @document.associations.keys.should include('updater')
1152
- end
1153
- end
1154
-
1155
1072
  context "#exists?" do
1156
1073
  setup do
1157
1074
  @doc = @document.create(:first_name => "James", :age => 27)
@@ -1245,37 +1162,4 @@ class DocumentTest < Test::Unit::TestCase
1245
1162
  doc.skills.should == ['ruby', 'rails', 'javascript', 'xhtml', 'css']
1246
1163
  end
1247
1164
  end
1248
-
1249
- context "Indexing" do
1250
- setup do
1251
- drop_indexes(@document)
1252
- end
1253
-
1254
- should "allow creating index for a key" do
1255
- @document.ensure_index :first_name
1256
- @document.should have_index('first_name_1')
1257
- end
1258
-
1259
- should "allow creating unique index for a key" do
1260
- @document.ensure_index :first_name, :unique => true
1261
- @document.should have_index('first_name_1')
1262
- end
1263
-
1264
- should "allow creating index on multiple keys" do
1265
- @document.ensure_index [[:first_name, 1], [:last_name, -1]]
1266
-
1267
- # order is different for different versions of ruby so instead of
1268
- # just checking have_index('first_name_1_last_name_-1') I'm checking
1269
- # the values of the indexes to make sure the index creation was successful
1270
- @document.collection.index_information.detect do |index|
1271
- keys = index[1]
1272
- keys.include?(['first_name', 1]) && keys.include?(['last_name', -1])
1273
- end.should_not be_nil
1274
- end
1275
-
1276
- should "work with :index shortcut when defining key" do
1277
- @document.key :father, String, :index => true
1278
- @document.should have_index('father_1')
1279
- end
1280
- end
1281
1165
  end
@@ -3,18 +3,17 @@ require 'models'
3
3
 
4
4
  class EmbeddedDocumentTest < Test::Unit::TestCase
5
5
  def setup
6
- @klass = Doc do
7
- key :first_name, String
8
- key :last_name, String
6
+ @klass = Doc('Person') do
7
+ key :name, String
9
8
  end
10
9
 
11
- @pet_klass = EDoc do
10
+ @pet_klass = EDoc('Pet') do
12
11
  key :name, String
13
12
  end
14
13
 
15
14
  @klass.many :pets, :class => @pet_klass
16
15
 
17
- @address_class = EDoc do
16
+ @address_class = EDoc('Address') do
18
17
  key :city, String
19
18
  key :state, String
20
19
  end
@@ -23,20 +22,26 @@ class EmbeddedDocumentTest < Test::Unit::TestCase
23
22
  context "Saving a document with a key that is an embedded document" do
24
23
  setup do
25
24
  @klass.key :foo, @address_class
26
-
27
- @address = @address_class.new(:city => 'South Bend', :state => 'IN')
28
- @doc = @klass.new(:foo => @address)
29
25
  end
30
26
 
31
27
  should "embed embedded document" do
32
- @doc.save
33
- @doc.foo.city.should == 'South Bend'
34
- @doc.foo.state.should == 'IN'
28
+ address = @address_class.new(:city => 'South Bend', :state => 'IN')
29
+ doc = @klass.create(:foo => address)
30
+ doc.foo.city.should == 'South Bend'
31
+ doc.foo.state.should == 'IN'
35
32
 
36
- doc = @doc.reload
33
+ doc = doc.reload
37
34
  doc.foo.city.should == 'South Bend'
38
35
  doc.foo.state.should == 'IN'
39
36
  end
37
+
38
+ should "assign _parent_document and _root_document" do
39
+ address = @address_class.new(:city => 'South Bend', :state => 'IN')
40
+ address._parent_document.should be_nil
41
+ doc = @klass.create(:foo => address)
42
+ address._parent_document.should be(doc)
43
+ address._root_document.should be(doc)
44
+ end
40
45
  end
41
46
 
42
47
  should "correctly instantiate single collection inherited embedded documents" do
@@ -0,0 +1,44 @@
1
+ require 'test_helper'
2
+
3
+ class IndexingTest < Test::Unit::TestCase
4
+ context "Indexing" do
5
+ setup do
6
+ @document = Doc do
7
+ set_collection_name 'users'
8
+
9
+ key :first_name, String
10
+ key :last_name, String
11
+ key :age, Integer
12
+ key :date, Date
13
+ end
14
+ drop_indexes(@document)
15
+ end
16
+
17
+ should "allow creating index for a key" do
18
+ @document.ensure_index :first_name
19
+ @document.should have_index('first_name_1')
20
+ end
21
+
22
+ should "allow creating unique index for a key" do
23
+ @document.ensure_index :first_name, :unique => true
24
+ @document.should have_index('first_name_1')
25
+ end
26
+
27
+ should "allow creating index on multiple keys" do
28
+ @document.ensure_index [[:first_name, 1], [:last_name, -1]]
29
+
30
+ # order is different for different versions of ruby so instead of
31
+ # just checking have_index('first_name_1_last_name_-1') I'm checking
32
+ # the values of the indexes to make sure the index creation was successful
33
+ @document.collection.index_information.detect do |index|
34
+ keys = index[1]
35
+ keys.include?(['first_name', 1]) && keys.include?(['last_name', -1])
36
+ end.should_not be_nil
37
+ end
38
+
39
+ should "work with :index shortcut when defining key" do
40
+ @document.key :father, String, :index => true
41
+ @document.should have_index('father_1')
42
+ end
43
+ end
44
+ end