mongo_mapper-rails3 0.7.0.1 → 0.7.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.
Files changed (94) hide show
  1. data/README.rdoc +8 -37
  2. metadata +16 -284
  3. data/.gitignore +0 -10
  4. data/Gemfile +0 -15
  5. data/LICENSE +0 -20
  6. data/Rakefile +0 -58
  7. data/VERSION +0 -1
  8. data/bin/mmconsole +0 -60
  9. data/lib/mongo_mapper.rb +0 -131
  10. data/lib/mongo_mapper/document.rb +0 -439
  11. data/lib/mongo_mapper/embedded_document.rb +0 -68
  12. data/lib/mongo_mapper/plugins.rb +0 -30
  13. data/lib/mongo_mapper/plugins/associations.rb +0 -106
  14. data/lib/mongo_mapper/plugins/associations/base.rb +0 -123
  15. data/lib/mongo_mapper/plugins/associations/belongs_to_polymorphic_proxy.rb +0 -30
  16. data/lib/mongo_mapper/plugins/associations/belongs_to_proxy.rb +0 -25
  17. data/lib/mongo_mapper/plugins/associations/collection.rb +0 -21
  18. data/lib/mongo_mapper/plugins/associations/embedded_collection.rb +0 -50
  19. data/lib/mongo_mapper/plugins/associations/in_array_proxy.rb +0 -141
  20. data/lib/mongo_mapper/plugins/associations/many_documents_as_proxy.rb +0 -28
  21. data/lib/mongo_mapper/plugins/associations/many_documents_proxy.rb +0 -120
  22. data/lib/mongo_mapper/plugins/associations/many_embedded_polymorphic_proxy.rb +0 -31
  23. data/lib/mongo_mapper/plugins/associations/many_embedded_proxy.rb +0 -23
  24. data/lib/mongo_mapper/plugins/associations/many_polymorphic_proxy.rb +0 -13
  25. data/lib/mongo_mapper/plugins/associations/one_proxy.rb +0 -68
  26. data/lib/mongo_mapper/plugins/associations/proxy.rb +0 -119
  27. data/lib/mongo_mapper/plugins/callbacks.rb +0 -87
  28. data/lib/mongo_mapper/plugins/clone.rb +0 -14
  29. data/lib/mongo_mapper/plugins/descendants.rb +0 -17
  30. data/lib/mongo_mapper/plugins/dirty.rb +0 -120
  31. data/lib/mongo_mapper/plugins/equality.rb +0 -24
  32. data/lib/mongo_mapper/plugins/identity_map.rb +0 -124
  33. data/lib/mongo_mapper/plugins/inspect.rb +0 -15
  34. data/lib/mongo_mapper/plugins/keys.rb +0 -310
  35. data/lib/mongo_mapper/plugins/logger.rb +0 -19
  36. data/lib/mongo_mapper/plugins/pagination.rb +0 -26
  37. data/lib/mongo_mapper/plugins/pagination/proxy.rb +0 -72
  38. data/lib/mongo_mapper/plugins/protected.rb +0 -46
  39. data/lib/mongo_mapper/plugins/rails.rb +0 -46
  40. data/lib/mongo_mapper/plugins/serialization.rb +0 -50
  41. data/lib/mongo_mapper/plugins/validations.rb +0 -88
  42. data/lib/mongo_mapper/query.rb +0 -130
  43. data/lib/mongo_mapper/support.rb +0 -217
  44. data/lib/mongo_mapper/support/descendant_appends.rb +0 -46
  45. data/lib/mongo_mapper/support/find.rb +0 -77
  46. data/mongo_mapper-rails3.gemspec +0 -208
  47. data/performance/read_write.rb +0 -52
  48. data/specs.watchr +0 -51
  49. data/test/NOTE_ON_TESTING +0 -1
  50. data/test/functional/associations/test_belongs_to_polymorphic_proxy.rb +0 -63
  51. data/test/functional/associations/test_belongs_to_proxy.rb +0 -101
  52. data/test/functional/associations/test_in_array_proxy.rb +0 -321
  53. data/test/functional/associations/test_many_documents_as_proxy.rb +0 -229
  54. data/test/functional/associations/test_many_documents_proxy.rb +0 -453
  55. data/test/functional/associations/test_many_embedded_polymorphic_proxy.rb +0 -176
  56. data/test/functional/associations/test_many_embedded_proxy.rb +0 -256
  57. data/test/functional/associations/test_many_polymorphic_proxy.rb +0 -302
  58. data/test/functional/associations/test_one_proxy.rb +0 -161
  59. data/test/functional/test_associations.rb +0 -44
  60. data/test/functional/test_binary.rb +0 -27
  61. data/test/functional/test_callbacks.rb +0 -81
  62. data/test/functional/test_dirty.rb +0 -163
  63. data/test/functional/test_document.rb +0 -1244
  64. data/test/functional/test_embedded_document.rb +0 -125
  65. data/test/functional/test_identity_map.rb +0 -508
  66. data/test/functional/test_logger.rb +0 -20
  67. data/test/functional/test_modifiers.rb +0 -252
  68. data/test/functional/test_pagination.rb +0 -93
  69. data/test/functional/test_protected.rb +0 -161
  70. data/test/functional/test_string_id_compatibility.rb +0 -67
  71. data/test/functional/test_validations.rb +0 -329
  72. data/test/models.rb +0 -232
  73. data/test/support/custom_matchers.rb +0 -55
  74. data/test/support/timing.rb +0 -16
  75. data/test/test_helper.rb +0 -59
  76. data/test/unit/associations/test_base.rb +0 -207
  77. data/test/unit/associations/test_proxy.rb +0 -105
  78. data/test/unit/serializers/test_json_serializer.rb +0 -189
  79. data/test/unit/test_descendant_appends.rb +0 -71
  80. data/test/unit/test_document.rb +0 -231
  81. data/test/unit/test_dynamic_finder.rb +0 -123
  82. data/test/unit/test_embedded_document.rb +0 -663
  83. data/test/unit/test_keys.rb +0 -169
  84. data/test/unit/test_lint.rb +0 -8
  85. data/test/unit/test_mongo_mapper.rb +0 -125
  86. data/test/unit/test_pagination.rb +0 -160
  87. data/test/unit/test_plugins.rb +0 -51
  88. data/test/unit/test_query.rb +0 -334
  89. data/test/unit/test_rails.rb +0 -123
  90. data/test/unit/test_rails_compatibility.rb +0 -57
  91. data/test/unit/test_serialization.rb +0 -51
  92. data/test/unit/test_support.rb +0 -362
  93. data/test/unit/test_time_zones.rb +0 -39
  94. data/test/unit/test_validations.rb +0 -557
@@ -1,169 +0,0 @@
1
- require 'test_helper'
2
-
3
- class Address
4
- include MongoMapper::EmbeddedDocument
5
-
6
- key :address, String
7
- key :city, String
8
- key :state, String
9
- key :zip, Integer
10
- end
11
-
12
- class FooType < Struct.new(:bar)
13
- def self.to_mongo(value)
14
- 'to_mongo'
15
- end
16
-
17
- def self.from_mongo(value)
18
- 'from_mongo'
19
- end
20
- end
21
-
22
- class KeyTest < Test::Unit::TestCase
23
- include MongoMapper::Plugins::Keys
24
-
25
- context "Initializing a new key" do
26
- should "allow setting the name" do
27
- Key.new(:foo, String).name.should == 'foo'
28
- end
29
-
30
- should "allow setting the type" do
31
- Key.new(:foo, Integer).type.should be(Integer)
32
- end
33
-
34
- should "allow setting options" do
35
- Key.new(:foo, Integer, :required => true).options[:required].should be(true)
36
- end
37
-
38
- should "default options to {}" do
39
- Key.new(:foo, Integer, nil).options.should == {}
40
- end
41
-
42
- should "symbolize option keys" do
43
- Key.new(:foo, Integer, 'required' => true).options[:required].should be(true)
44
- end
45
-
46
- should "work with just name" do
47
- key = Key.new(:foo)
48
- key.name.should == 'foo'
49
- end
50
-
51
- should "work with name and type" do
52
- key = Key.new(:foo, String)
53
- key.name.should == 'foo'
54
- key.type.should == String
55
- end
56
-
57
- should "work with name, type, and options" do
58
- key = Key.new(:foo, String, :required => true)
59
- key.name.should == 'foo'
60
- key.type.should == String
61
- key.options[:required].should be_true
62
- end
63
-
64
- should "work with name and options" do
65
- key = Key.new(:foo, :required => true)
66
- key.name.should == 'foo'
67
- key.options[:required].should be_true
68
- end
69
- end
70
-
71
- context "A key" do
72
- should "be equal to another key with same name and type" do
73
- Key.new(:name, String).should == Key.new(:name, String)
74
- end
75
-
76
- should "not be equal to another key with different name" do
77
- Key.new(:name, String).should_not == Key.new(:foo, String)
78
- end
79
-
80
- should "not be equal to another key with different type" do
81
- Key.new(:name, String).should_not == Key.new(:name, Integer)
82
- end
83
-
84
- should "know if it is a embedded_document" do
85
- Key.new(:name, EDoc()).embeddable?.should be_true
86
- end
87
-
88
- should "know if it is not a embedded_document" do
89
- Key.new(:name, String).embeddable?.should be_false
90
- end
91
-
92
- should "know if it is a number" do
93
- Key.new(:age, Integer).number?.should be_true
94
- Key.new(:age, Float).number?.should be_true
95
- end
96
-
97
- should "know if it is not a number" do
98
- Key.new(:age, String).number?.should be_false
99
- end
100
- end
101
-
102
- context "setting a value with a custom type" do
103
- should "correctly typecast" do
104
- key = Key.new(:foo, FooType)
105
- key.set("something").should == 'to_mongo'
106
- end
107
-
108
- should "correctly typecast if object of that type is given" do
109
- key = Key.new(:foo, FooType)
110
- key.set(FooType.new('something')).should == 'to_mongo'
111
- end
112
- end
113
-
114
- context "getting a value with a custom type" do
115
- should "use #from_mongo to convert back to custom type" do
116
- key = Key.new(:foo, FooType)
117
- key.get('something').should == 'from_mongo'
118
- end
119
- end
120
-
121
- context "getting a value" do
122
- should "work with a type" do
123
- key = Key.new(:foo, String)
124
- key.get('bar').should == 'bar'
125
- end
126
-
127
- should "work without type" do
128
- key = Key.new(:foo)
129
- key.get([1, '2']).should == [1, '2']
130
- key.get(false).should == false
131
- key.get({}).should == {}
132
- end
133
-
134
- context "for a embedded_document" do
135
- should "default to nil" do
136
- key = Key.new(:foo, Address)
137
- key.get(nil).should be_nil
138
- end
139
-
140
- should "return instance if instance" do
141
- address = Address.new(:city => 'South Bend', :state => 'IN', :zip => 46544)
142
- key = Key.new(:foo, Address)
143
- key.get(address).should == address
144
- end
145
- end
146
- end
147
-
148
- context "getting a value with a default set" do
149
- setup do
150
- @key = Key.new(:foo, String, :default => 'baz')
151
- end
152
-
153
- should "return default value if value nil" do
154
- @key.get(nil).should == 'baz'
155
- end
156
-
157
- should "return value if not blank" do
158
- @key.get('foobar').should == 'foobar'
159
- end
160
-
161
- should "work with Boolean type and false value" do
162
- Key.new(:active, Boolean, :default => false).get(nil).should be_false
163
- end
164
-
165
- should "work with Boolean type and true value" do
166
- Key.new(:active, Boolean, :default => true).get(nil).should be_true
167
- end
168
- end
169
- end # KeyTest
@@ -1,8 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TestLint < Test::Unit::TestCase
4
- def model
5
- Doc().new.to_model
6
- end
7
- include ActiveModel::Lint::Tests
8
- end
@@ -1,125 +0,0 @@
1
- require 'test_helper'
2
-
3
- class Address; end
4
-
5
- class MongoMapperTest < Test::Unit::TestCase
6
- should "be able to write and read connection" do
7
- conn = Mongo::Connection.new
8
- MongoMapper.connection = conn
9
- MongoMapper.connection.should == conn
10
- end
11
-
12
- should "default connection to new mongo ruby driver" do
13
- MongoMapper.connection = nil
14
- MongoMapper.connection.should be_instance_of(Mongo::Connection)
15
- end
16
-
17
- should "be able to write and read default database" do
18
- MongoMapper.database = 'test'
19
- MongoMapper.database.should be_instance_of(Mongo::DB)
20
- MongoMapper.database.name.should == 'test'
21
- end
22
-
23
- should "have document not found error" do
24
- lambda {
25
- MongoMapper::DocumentNotFound
26
- }.should_not raise_error
27
- end
28
-
29
- should "be able to read/write config" do
30
- config = {
31
- 'development' => {'host' => '127.0.0.1', 'port' => 27017, 'database' => 'test'},
32
- 'production' => {'host' => '127.0.0.1', 'port' => 27017, 'database' => 'test-prod'}
33
- }
34
-
35
- MongoMapper.config = config
36
- MongoMapper.config.should == config
37
- end
38
-
39
- context "connecting to environment from config" do
40
- should "work without authentication" do
41
- MongoMapper.config = {
42
- 'development' => {'host' => '127.0.0.1', 'port' => 27017, 'database' => 'test'}
43
- }
44
-
45
- Mongo::Connection.expects(:new).with('127.0.0.1', 27017, {})
46
- MongoMapper.expects(:database=).with('test')
47
- Mongo::DB.any_instance.expects(:authenticate).never
48
- MongoMapper.connect('development')
49
- end
50
-
51
- should "work with options" do
52
- MongoMapper.config = {
53
- 'development' => {'host' => '127.0.0.1', 'port' => 27017, 'database' => 'test'}
54
- }
55
-
56
- connection, logger = mock('connection'), mock('logger')
57
- Mongo::Connection.expects(:new).with('127.0.0.1', 27017, :logger => logger)
58
- MongoMapper.connect('development', :logger => logger)
59
- end
60
-
61
- should "work with authentication" do
62
- MongoMapper.config = {
63
- 'development' => {'host' => '127.0.0.1', 'port' => 27017, 'database' => 'test', 'username' => 'john', 'password' => 'secret'}
64
- }
65
-
66
- Mongo::DB.any_instance.expects(:authenticate).with('john', 'secret')
67
- MongoMapper.connect('development')
68
- end
69
- end
70
-
71
- context "setup" do
72
- should "work as shortcut for setting config, environment and options" do
73
- config, logger = mock('config'), mock('logger')
74
- MongoMapper.expects(:config=).with(config)
75
- MongoMapper.expects(:connect).with('development', :logger => logger)
76
- MongoMapper.expects(:handle_passenger_forking).never
77
- MongoMapper.setup(config, 'development', :logger => logger)
78
- end
79
-
80
- should "handle passenger if option present" do
81
- config, logger = mock('config'), mock('logger')
82
- MongoMapper.expects(:config=).with(config)
83
- MongoMapper.expects(:connect).with('development', :logger => logger)
84
- MongoMapper.expects(:handle_passenger_forking)
85
- MongoMapper.setup(config, 'development', :logger => logger, :passenger => true)
86
- end
87
- end
88
-
89
-
90
- context "use_time_zone?" do
91
- should "be true if Time.zone set" do
92
- Time.zone = 'Hawaii'
93
- MongoMapper.use_time_zone?.should be_true
94
- Time.zone = nil
95
- end
96
-
97
- should "be false if Time.zone not set" do
98
- MongoMapper.use_time_zone?.should be_false
99
- end
100
- end
101
-
102
- context "time_class" do
103
- should "be Time.zone if using time zones" do
104
- Time.zone = 'Hawaii'
105
- MongoMapper.time_class.should == Time.zone
106
- Time.zone = nil
107
- end
108
-
109
- should "be Time if not using time zones" do
110
- MongoMapper.time_class.should == Time
111
- end
112
- end
113
-
114
- context "normalize_object_id" do
115
- should "turn string into object id" do
116
- id = Mongo::ObjectID.new
117
- MongoMapper.normalize_object_id(id.to_s).should == id
118
- end
119
-
120
- should "leave object id alone" do
121
- id = Mongo::ObjectID.new
122
- MongoMapper.normalize_object_id(id).should == id
123
- end
124
- end
125
- end
@@ -1,160 +0,0 @@
1
- require 'test_helper'
2
-
3
- class PaginationTest < Test::Unit::TestCase
4
- should "default per_page to 25" do
5
- Doc().per_page.should == 25
6
- end
7
-
8
- should "allow overriding per_page" do
9
- Doc() { def self.per_page; 1 end }.per_page.should == 1
10
- end
11
-
12
- context "Pagination proxy" do
13
- include MongoMapper::Plugins::Pagination
14
-
15
- should "respond_to? correctly on proxy readers" do
16
- proxy = Proxy.new(25, 10, 4)
17
- proxy.respond_to?(:subject).should be_true
18
- proxy.respond_to?(:total_entries).should be_true
19
- proxy.respond_to?(:per_page).should be_true
20
- proxy.respond_to?(:current_page).should be_true
21
- proxy.respond_to?(:limit).should be_true
22
- proxy.respond_to?(:total_pages).should be_true
23
- proxy.respond_to?(:out_of_bounds?).should be_true
24
- proxy.respond_to?(:previous_page).should be_true
25
- proxy.respond_to?(:next_page).should be_true
26
- proxy.respond_to?(:skip).should be_true
27
- proxy.respond_to?(:offset).should be_true
28
-
29
- # make sure it doesnt respond true to everything
30
- proxy.respond_to?(:blahblahblah).should be_false
31
- end
32
-
33
- should "respond_to? correctly on proxy writers" do
34
- proxy = Proxy.new(25, 10, 4)
35
- proxy.respond_to?(:subject=).should be_true
36
- end
37
-
38
- should "should have accessors for subject" do
39
- subject = [1,2,3,4,5]
40
- collection = Proxy.new(25, 2)
41
- collection.subject = subject
42
- collection.subject.should == subject
43
- end
44
-
45
- should "delegate any methods not defined to the subject" do
46
- subject = [1,2,3,4,5]
47
- collection = Proxy.new(25, 2, 10)
48
- collection.subject = subject
49
- collection.size.should == 5
50
- collection.each_with_index do |value, i|
51
- value.should == subject[i]
52
- end
53
- collection[0..2].should == [1,2,3]
54
- collection.class.should == Array
55
- end
56
-
57
- should "should respond_to? correctly for methods defined on the subject" do
58
- subject = [1,2,3,4,5]
59
- def subject.blahblah
60
- "BLAHBLAH"
61
- end
62
- collection = Proxy.new(25, 2, 10)
63
- collection.subject = subject
64
- collection.respond_to?(:blahblah).should be_true
65
- end
66
-
67
- should "return correct value for total_entries" do
68
- Proxy.new(25, 2, 10).total_entries.should == 25
69
- Proxy.new('25', 2, 10).total_entries.should == 25
70
- end
71
-
72
- should "return correct value for per_page" do
73
- Proxy.new(25, 2, 10).per_page.should == 10
74
- Proxy.new(25, 2, '10').per_page.should == 10
75
- end
76
-
77
- should "alias limit to per_page" do
78
- Proxy.new(100, 1, 300).limit.should == 300
79
- end
80
-
81
- should "set per_page to 25 if nil or blank" do
82
- Proxy.new(25, 2).per_page.should == 25
83
- Proxy.new(25, 2, '').per_page.should == 25
84
- end
85
-
86
- should "return correct value for current_page" do
87
- Proxy.new(25, 2, 10).current_page.should == 2
88
- Proxy.new(25, '2', 10).current_page.should == 2
89
- end
90
-
91
- should "not allow value less than 1 for current page" do
92
- Proxy.new(25, -1).current_page.should == 1
93
- end
94
-
95
- should "automatically calculate total_pages from total_entries and per page" do
96
- Proxy.new(25, 2, 10).total_pages.should == 3
97
- end
98
-
99
- should "know how many records to skip" do
100
- Proxy.new(25, 2, 10).skip.should == 10
101
- end
102
-
103
- should "alias offset to skip" do
104
- Proxy.new(25, 2, 10).offset.should == 10
105
- end
106
-
107
- should "return true for === Array" do
108
- collection = Proxy.new(25, 2, 10)
109
- collection.subject = [1, 2]
110
- collection.should === Array
111
- end
112
-
113
- context "previous_page" do
114
- should "be nil if current page 1" do
115
- Proxy.new(25, 1, 10).previous_page.should be_nil
116
- end
117
-
118
- should "be one less than current page if current is > 1" do
119
- Proxy.new(25, 2, 10).previous_page.should == 1
120
- end
121
- end
122
-
123
- context "next_page" do
124
- should "be nil if current page is last page" do
125
- Proxy.new(25, 3, 10).next_page.should be_nil
126
- end
127
-
128
- should "work for any page that is not last" do
129
- Proxy.new(25, 1, 10).next_page.should == 2
130
- Proxy.new(25, 2, 10).next_page.should == 3
131
- end
132
- end
133
-
134
- context "previous_page" do
135
- should "be nil if current page is first page" do
136
- Proxy.new(25, 1, 10).previous_page.should be_nil
137
- end
138
-
139
- should "work for any page other than first" do
140
- Proxy.new(25, 2, 10).previous_page.should == 1
141
- Proxy.new(25, 3, 10).previous_page.should == 2
142
- end
143
- end
144
-
145
- context "out_of_bounds?" do
146
- should "be true if current_page is greater than total_pages" do
147
- Proxy.new(25, 10, 4).out_of_bounds?.should be_true
148
- end
149
-
150
- should "be false if current_page is less than total_pages" do
151
- Proxy.new(25, 10, 1).out_of_bounds?.should be_false
152
- Proxy.new(25, 2, 10).out_of_bounds?.should be_false
153
- end
154
-
155
- should "be false if current_page is equal to total_pages" do
156
- Proxy.new(25, 3, 10).out_of_bounds?.should be_false
157
- end
158
- end
159
- end
160
- end