mongo_mapper 0.13.0 → 0.15.1

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 (137) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE +1 -1
  3. data/README.md +61 -0
  4. data/examples/keys.rb +1 -1
  5. data/examples/modifiers/set.rb +1 -1
  6. data/examples/querying.rb +1 -1
  7. data/examples/safe.rb +2 -2
  8. data/examples/scopes.rb +1 -1
  9. data/lib/mongo_mapper.rb +7 -0
  10. data/lib/mongo_mapper/connection.rb +16 -37
  11. data/lib/mongo_mapper/document.rb +4 -0
  12. data/lib/mongo_mapper/extensions/array.rb +14 -6
  13. data/lib/mongo_mapper/extensions/hash.rb +15 -3
  14. data/lib/mongo_mapper/extensions/object.rb +4 -0
  15. data/lib/mongo_mapper/extensions/object_id.rb +5 -1
  16. data/lib/mongo_mapper/extensions/string.rb +13 -5
  17. data/lib/mongo_mapper/extensions/symbol.rb +18 -0
  18. data/lib/mongo_mapper/plugins/accessible.rb +15 -5
  19. data/lib/mongo_mapper/plugins/associations.rb +7 -6
  20. data/lib/mongo_mapper/plugins/associations/base.rb +27 -14
  21. data/lib/mongo_mapper/plugins/associations/belongs_to_association.rb +10 -1
  22. data/lib/mongo_mapper/plugins/associations/belongs_to_polymorphic_proxy.rb +9 -8
  23. data/lib/mongo_mapper/plugins/associations/belongs_to_proxy.rb +12 -11
  24. data/lib/mongo_mapper/plugins/associations/embedded_collection.rb +4 -4
  25. data/lib/mongo_mapper/plugins/associations/in_array_proxy.rb +60 -29
  26. data/lib/mongo_mapper/plugins/associations/in_foreign_array_proxy.rb +136 -0
  27. data/lib/mongo_mapper/plugins/associations/many_association.rb +4 -2
  28. data/lib/mongo_mapper/plugins/associations/many_documents_as_proxy.rb +18 -16
  29. data/lib/mongo_mapper/plugins/associations/many_documents_proxy.rb +55 -48
  30. data/lib/mongo_mapper/plugins/associations/many_embedded_polymorphic_proxy.rb +14 -13
  31. data/lib/mongo_mapper/plugins/associations/many_embedded_proxy.rb +7 -6
  32. data/lib/mongo_mapper/plugins/associations/many_polymorphic_proxy.rb +7 -5
  33. data/lib/mongo_mapper/plugins/associations/one_as_proxy.rb +14 -11
  34. data/lib/mongo_mapper/plugins/associations/one_embedded_polymorphic_proxy.rb +14 -13
  35. data/lib/mongo_mapper/plugins/associations/one_embedded_proxy.rb +9 -9
  36. data/lib/mongo_mapper/plugins/associations/one_proxy.rb +27 -26
  37. data/lib/mongo_mapper/plugins/associations/proxy.rb +36 -29
  38. data/lib/mongo_mapper/plugins/associations/single_association.rb +5 -4
  39. data/lib/mongo_mapper/plugins/callbacks.rb +13 -0
  40. data/lib/mongo_mapper/plugins/counter_cache.rb +97 -0
  41. data/lib/mongo_mapper/plugins/dirty.rb +29 -37
  42. data/lib/mongo_mapper/plugins/document.rb +1 -1
  43. data/lib/mongo_mapper/plugins/dynamic_querying.rb +10 -9
  44. data/lib/mongo_mapper/plugins/dynamic_querying/dynamic_finder.rb +18 -17
  45. data/lib/mongo_mapper/plugins/embedded_callbacks.rb +2 -1
  46. data/lib/mongo_mapper/plugins/embedded_document.rb +1 -1
  47. data/lib/mongo_mapper/plugins/identity_map.rb +4 -2
  48. data/lib/mongo_mapper/plugins/indexes.rb +14 -7
  49. data/lib/mongo_mapper/plugins/keys.rb +170 -151
  50. data/lib/mongo_mapper/plugins/keys/key.rb +27 -16
  51. data/lib/mongo_mapper/plugins/keys/static.rb +45 -0
  52. data/lib/mongo_mapper/plugins/modifiers.rb +64 -38
  53. data/lib/mongo_mapper/plugins/partial_updates.rb +86 -0
  54. data/lib/mongo_mapper/plugins/persistence.rb +13 -8
  55. data/lib/mongo_mapper/plugins/protected.rb +6 -5
  56. data/lib/mongo_mapper/plugins/querying.rb +85 -42
  57. data/lib/mongo_mapper/plugins/querying/decorated_plucky_query.rb +20 -15
  58. data/lib/mongo_mapper/plugins/rails.rb +1 -0
  59. data/lib/mongo_mapper/plugins/safe.rb +10 -4
  60. data/lib/mongo_mapper/plugins/sci.rb +0 -0
  61. data/lib/mongo_mapper/plugins/scopes.rb +78 -7
  62. data/lib/mongo_mapper/plugins/stats.rb +17 -0
  63. data/lib/mongo_mapper/plugins/strong_parameters.rb +26 -0
  64. data/lib/mongo_mapper/plugins/timestamps.rb +1 -0
  65. data/lib/mongo_mapper/plugins/validations.rb +1 -1
  66. data/lib/mongo_mapper/railtie.rb +4 -3
  67. data/lib/mongo_mapper/utils.rb +2 -2
  68. data/lib/mongo_mapper/version.rb +1 -1
  69. data/lib/rails/generators/mongo_mapper/config/config_generator.rb +12 -13
  70. data/lib/rails/generators/mongo_mapper/model/model_generator.rb +9 -9
  71. data/spec/examples.txt +1717 -0
  72. data/spec/functional/accessible_spec.rb +19 -13
  73. data/spec/functional/associations/belongs_to_polymorphic_proxy_spec.rb +13 -13
  74. data/spec/functional/associations/belongs_to_proxy_spec.rb +36 -20
  75. data/spec/functional/associations/in_array_proxy_spec.rb +145 -10
  76. data/spec/functional/associations/in_foreign_array_proxy_spec.rb +321 -0
  77. data/spec/functional/associations/many_documents_as_proxy_spec.rb +6 -6
  78. data/spec/functional/associations/many_documents_proxy_spec.rb +85 -14
  79. data/spec/functional/associations/many_embedded_polymorphic_proxy_spec.rb +13 -13
  80. data/spec/functional/associations/many_embedded_proxy_spec.rb +1 -1
  81. data/spec/functional/associations/many_polymorphic_proxy_spec.rb +4 -4
  82. data/spec/functional/associations/one_as_proxy_spec.rb +10 -10
  83. data/spec/functional/associations/one_embedded_polymorphic_proxy_spec.rb +9 -9
  84. data/spec/functional/associations/one_embedded_proxy_spec.rb +3 -3
  85. data/spec/functional/associations/one_proxy_spec.rb +10 -10
  86. data/spec/functional/associations_spec.rb +3 -3
  87. data/spec/functional/binary_spec.rb +2 -2
  88. data/spec/functional/caching_spec.rb +8 -15
  89. data/spec/functional/callbacks_spec.rb +89 -2
  90. data/spec/functional/counter_cache_spec.rb +235 -0
  91. data/spec/functional/dirty_spec.rb +63 -46
  92. data/spec/functional/document_spec.rb +30 -5
  93. data/spec/functional/dumpable_spec.rb +1 -1
  94. data/spec/functional/embedded_document_spec.rb +17 -17
  95. data/spec/functional/identity_map_spec.rb +29 -16
  96. data/spec/functional/indexes_spec.rb +19 -18
  97. data/spec/functional/keys_spec.rb +86 -28
  98. data/spec/functional/logger_spec.rb +3 -3
  99. data/spec/functional/modifiers_spec.rb +81 -19
  100. data/spec/functional/partial_updates_spec.rb +577 -0
  101. data/spec/functional/protected_spec.rb +14 -14
  102. data/spec/functional/querying_spec.rb +77 -28
  103. data/spec/functional/safe_spec.rb +23 -27
  104. data/spec/functional/sci_spec.rb +9 -9
  105. data/spec/functional/scopes_spec.rb +235 -2
  106. data/spec/functional/static_keys_spec.rb +153 -0
  107. data/spec/functional/stats_spec.rb +86 -0
  108. data/spec/functional/strong_parameters_spec.rb +49 -0
  109. data/spec/functional/touch_spec.rb +1 -1
  110. data/spec/functional/validations_spec.rb +51 -57
  111. data/spec/quality_spec.rb +51 -0
  112. data/spec/spec_helper.rb +37 -9
  113. data/spec/support/matchers.rb +5 -14
  114. data/spec/unit/associations/base_spec.rb +12 -12
  115. data/spec/unit/associations/belongs_to_association_spec.rb +2 -2
  116. data/spec/unit/associations/many_association_spec.rb +2 -2
  117. data/spec/unit/associations/one_association_spec.rb +2 -2
  118. data/spec/unit/associations/proxy_spec.rb +19 -20
  119. data/spec/unit/clone_spec.rb +1 -1
  120. data/spec/unit/document_spec.rb +8 -8
  121. data/spec/unit/dynamic_finder_spec.rb +8 -8
  122. data/spec/unit/embedded_document_spec.rb +18 -19
  123. data/spec/unit/extensions_spec.rb +41 -17
  124. data/spec/unit/identity_map_middleware_spec.rb +65 -96
  125. data/spec/unit/key_spec.rb +28 -26
  126. data/spec/unit/keys_spec.rb +20 -11
  127. data/spec/unit/model_generator_spec.rb +0 -0
  128. data/spec/unit/mongo_mapper_spec.rb +38 -85
  129. data/spec/unit/rails_spec.rb +5 -0
  130. data/spec/unit/serialization_spec.rb +1 -1
  131. data/spec/unit/time_zones_spec.rb +2 -2
  132. data/spec/unit/validations_spec.rb +46 -33
  133. metadata +66 -37
  134. data/README.rdoc +0 -59
  135. data/lib/mongo_mapper/connections/10gen.rb +0 -0
  136. data/lib/mongo_mapper/connections/moped.rb +0 -0
  137. data/lib/mongo_mapper/extensions/ordered_hash.rb +0 -23
@@ -2,10 +2,15 @@ $:.unshift(File.expand_path('../../lib', __FILE__))
2
2
 
3
3
  require 'rubygems'
4
4
  require 'bundler/setup'
5
+ Bundler.require(:default)
5
6
  require 'fileutils'
6
7
  require 'timecop'
7
8
  require "generator_spec/test_case"
8
9
 
10
+ if RUBY_ENGINE == "ruby" && RUBY_VERSION >= '2.3'
11
+ require 'byebug'
12
+ end
13
+
9
14
  if RUBY_PLATFORM != "java"
10
15
  if ENV['TRAVIS']
11
16
  require 'coveralls'
@@ -39,7 +44,7 @@ def Doc(name='Class', &block)
39
44
  end
40
45
 
41
46
  klass.class_eval(&block) if block_given?
42
- klass.collection.remove
47
+ klass.collection.drop
43
48
  klass
44
49
  end
45
50
 
@@ -58,24 +63,47 @@ def EDoc(name='Class', &block)
58
63
  end
59
64
 
60
65
  def drop_indexes(klass)
61
- klass.collection.drop_indexes if klass.database.collection_names.include?(klass.collection.name)
66
+ klass.collection.indexes.drop_all if klass.database.collection_names.include?(klass.collection.name)
62
67
  end
63
68
 
64
69
  log_dir = File.expand_path('../../log', __FILE__)
65
70
  FileUtils.mkdir_p(log_dir) unless File.exist?(log_dir)
66
71
  logger = Logger.new(log_dir + '/test.log')
67
72
 
68
- MongoMapper.connection = Mongo::MongoClient.new('127.0.0.1', 27017, :logger => logger)
69
- MongoMapper.database = "test"
70
- MongoMapper.database.collections.each { |c| c.drop_indexes }
73
+ Mongo::Logger.logger = logger
74
+
75
+ MongoMapper.connection = Mongo::Client.new(['127.0.0.1:27017'], :database => 'test')
76
+ MongoMapper.database.collections.each { |c| c.indexes.drop_all }
71
77
  Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each {|f| require f}
72
78
 
73
- RSpec.configure do |c|
74
- c.treat_symbols_as_metadata_keys_with_true_values = true
75
- c.around(:each, :without_connection) do |example|
79
+ RSpec.configure do |config|
80
+ config.example_status_persistence_file_path = "./spec/examples.txt"
81
+
82
+ config.expect_with :rspec do |c|
83
+ c.syntax = :should
84
+ end
85
+
86
+ config.mock_with :rspec do |mocks|
87
+ mocks.syntax = :should
88
+ end
89
+
90
+ config.around(:each, :without_connection) do |example|
76
91
  old, MongoMapper.connection = MongoMapper.connection, nil
77
92
  example.run
78
93
  MongoMapper.connection = old
79
94
  end
80
- end
81
95
 
96
+ def suppress_stderr
97
+ begin
98
+ original_stderr = $stderr.clone
99
+ $stderr.reopen(File.new('/dev/null', 'w'))
100
+ retval = yield
101
+ rescue Exception => e
102
+ $stderr.reopen(original_stderr)
103
+ raise e
104
+ ensure
105
+ $stderr.reopen(original_stderr)
106
+ end
107
+ retval
108
+ end
109
+ end
@@ -1,24 +1,15 @@
1
1
  RSpec::Matchers.define :have_error_on do |*args|
2
- @message = nil
3
- @attributes = [args]
4
-
5
- chain :or do |*args|
6
- @attributes << args
7
- end
8
-
9
2
  match do |model|
3
+ field = args.dup.shift
4
+ error_messages = args
5
+
10
6
  model.valid?
11
- @has_errors = @attributes.detect {|attribute| model.errors[attribute[0]].present? }
12
- if @message
13
- !!@has_errors && model.errors[@has_errors[0]].include?(@has_errors[1])
14
- else
15
- !!@has_errors
16
- end
7
+ model.errors[field].any?
17
8
  end
18
9
  end
19
10
 
20
11
  RSpec::Matchers.define :have_index do |index_name|
21
12
  match do |model|
22
- model.collection.index_information.detect { |index| index[0] == index_name }.present?
13
+ model.collection.indexes.get(index_name).present?
23
14
  end
24
15
  end
@@ -12,7 +12,7 @@ module AssociationSpec
12
12
 
13
13
  it "should also allow options when initializing" do
14
14
  base = ManyAssociation.new(:foos, :polymorphic => true)
15
- base.options[:polymorphic].should be_true
15
+ base.options[:polymorphic].should be_truthy
16
16
  end
17
17
 
18
18
  context "klass" do
@@ -28,31 +28,31 @@ module AssociationSpec
28
28
 
29
29
  context "polymorphic?" do
30
30
  it "should be true if polymorphic" do
31
- ManyAssociation.new(:foos, :polymorphic => true).polymorphic?.should be_true
31
+ ManyAssociation.new(:foos, :polymorphic => true).polymorphic?.should be_truthy
32
32
  end
33
33
 
34
34
  it "should be false if not polymorphic" do
35
- ManyAssociation.new(:bars).polymorphic?.should be_false
35
+ ManyAssociation.new(:bars).polymorphic?.should be_falsey
36
36
  end
37
37
  end
38
38
 
39
39
  context "as?" do
40
40
  it "should be true if one" do
41
- OneAssociation.new(:foo, :as => :commentable).as?.should be_true
41
+ OneAssociation.new(:foo, :as => :commentable).as?.should be_truthy
42
42
  end
43
43
 
44
44
  it "should be false if not one" do
45
- ManyAssociation.new(:foo).as?.should be_false
45
+ ManyAssociation.new(:foo).as?.should be_falsey
46
46
  end
47
47
  end
48
48
 
49
49
  context "in_array?" do
50
50
  it "should be true if one" do
51
- OneAssociation.new(:foo, :in => :list_ids).in_array?.should be_true
51
+ OneAssociation.new(:foo, :in => :list_ids).in_array?.should be_truthy
52
52
  end
53
53
 
54
54
  it "should be false if not one" do
55
- ManyAssociation.new(:foo).in_array?.should be_false
55
+ ManyAssociation.new(:foo).in_array?.should be_falsey
56
56
  end
57
57
  end
58
58
 
@@ -98,15 +98,15 @@ module AssociationSpec
98
98
  context "embeddable?" do
99
99
  it "should be true if class is embeddable" do
100
100
  base = ManyAssociation.new(:medias)
101
- base.embeddable?.should be_true
101
+ base.embeddable?.should be_truthy
102
102
  end
103
103
 
104
104
  it "should be false if class is not embeddable" do
105
105
  base = ManyAssociation.new(:statuses)
106
- base.embeddable?.should be_false
106
+ base.embeddable?.should be_falsey
107
107
 
108
108
  base = BelongsToAssociation.new(:project)
109
- base.embeddable?.should be_false
109
+ base.embeddable?.should be_falsey
110
110
  end
111
111
  end
112
112
 
@@ -134,11 +134,11 @@ module AssociationSpec
134
134
 
135
135
  context "touch?" do
136
136
  it "should be true if touch" do
137
- BelongsToAssociation.new(:car, :touch => true).touch?.should be_true
137
+ BelongsToAssociation.new(:car, :touch => true).touch?.should be_truthy
138
138
  end
139
139
 
140
140
  it "should be false if not touch" do
141
- BelongsToAssociation.new(:car).touch?.should be_false
141
+ BelongsToAssociation.new(:car).touch?.should be_falsey
142
142
  end
143
143
  end
144
144
 
@@ -18,12 +18,12 @@ module BelongsToAssociation
18
18
  context "embeddable?" do
19
19
  it "should be false even if class is embeddable" do
20
20
  base = BelongsToAssociation.new(:address)
21
- base.embeddable?.should be_false
21
+ base.embeddable?.should be_falsey
22
22
  end
23
23
 
24
24
  it "should be false if class is not embeddable" do
25
25
  base = BelongsToAssociation.new(:project)
26
- base.embeddable?.should be_false
26
+ base.embeddable?.should be_falsey
27
27
  end
28
28
  end
29
29
  end
@@ -25,12 +25,12 @@ module ManyAssociationSpec
25
25
  context "embeddable?" do
26
26
  it "should be true if class is embeddable" do
27
27
  base = ManyAssociation.new(:medias)
28
- base.embeddable?.should be_true
28
+ base.embeddable?.should be_truthy
29
29
  end
30
30
 
31
31
  it "should be false if class is not embeddable" do
32
32
  base = ManyAssociation.new(:statuses)
33
- base.embeddable?.should be_false
33
+ base.embeddable?.should be_falsey
34
34
  end
35
35
  end
36
36
 
@@ -14,12 +14,12 @@ module OneAssociationSpec
14
14
  context "embeddable?" do
15
15
  it "should be true if class is embeddable" do
16
16
  base = OneAssociation.new(:media)
17
- base.embeddable?.should be_true
17
+ base.embeddable?.should be_truthy
18
18
  end
19
19
 
20
20
  it "should be false if class is not embeddable" do
21
21
  base = OneAssociation.new(:project)
22
- base.embeddable?.should be_false
22
+ base.embeddable?.should be_falsey
23
23
  end
24
24
  end
25
25
 
@@ -18,10 +18,8 @@ end
18
18
 
19
19
  describe "Proxy" do
20
20
  before do
21
- @owner = double('owner')
22
- @owner.stub(:new?).and_return(false)
23
- @association = double('association')
24
- @association.stub(:options).and_return({:extend => []})
21
+ @owner = double('owner', :new? => false)
22
+ @association = double('association', :options => {:extend => []})
25
23
 
26
24
  @proxy = FakeProxy.new(@owner, @association)
27
25
  @nil_proxy = FakeNilProxy.new(@owner, @association)
@@ -39,50 +37,46 @@ describe "Proxy" do
39
37
 
40
38
  context "nil?" do
41
39
  it "should be true if nil" do
42
- @nil_proxy.nil?.should be_true
40
+ @nil_proxy.nil?.should be_truthy
43
41
  end
44
42
 
45
43
  it "should be false if not nil" do
46
- @proxy.nil?.should be_false
44
+ @proxy.nil?.should be_falsey
47
45
  end
48
46
  end
49
47
 
50
48
  context "blank?" do
51
49
  it "should be true if blank" do
52
- @blank_proxy.blank?.should be_true
53
- @nil_proxy.blank?.should be_true
50
+ @blank_proxy.blank?.should be_truthy
51
+ @nil_proxy.blank?.should be_truthy
54
52
  end
55
53
 
56
54
  it "should be false if not blank" do
57
- @proxy.blank?.should be_false
55
+ @proxy.blank?.should be_falsey
58
56
  end
59
57
  end
60
58
 
61
59
  context "present?" do
62
60
  it "should be true if present" do
63
- @proxy.present?.should be_true
61
+ @proxy.present?.should be_truthy
64
62
  end
65
63
 
66
64
  it "should be false if not present" do
67
- @blank_proxy.present?.should be_false
68
- @nil_proxy.present?.should be_false
65
+ @blank_proxy.present?.should be_falsey
66
+ @nil_proxy.present?.should be_falsey
69
67
  end
70
68
  end
71
69
 
72
70
  it "should delegate respond_to? to target" do
73
- @proxy.respond_to?(:each).should be_true
74
- @proxy.respond_to?(:size).should be_true
75
- @proxy.respond_to?(:gsub).should be_false
71
+ @proxy.respond_to?(:each).should be_truthy
72
+ @proxy.respond_to?(:size).should be_truthy
73
+ @proxy.respond_to?(:gsub).should be_falsey
76
74
  end
77
75
 
78
76
  it "should alias proxy owner to owner" do
79
77
  @proxy.proxy_owner.should == @owner
80
78
  end
81
79
 
82
- it "should alias proxy target to target" do
83
- @proxy.proxy_target.should == @target
84
- end
85
-
86
80
  context "send" do
87
81
  it "should work if proxy responds to method" do
88
82
  @proxy.send(:reset)
@@ -94,7 +88,12 @@ describe "Proxy" do
94
88
  end
95
89
 
96
90
  it "should not work if neither the proxy or target respond to method" do
97
- lambda { @proxy.send(:gsub) }.should raise_error
91
+ lambda { @proxy.send(:gsub) }.should raise_error(NoMethodError)
92
+ end
93
+
94
+ it "should work if a proc is passed" do
95
+ p = Proc.new {|x| x+1}
96
+ @proxy.send(:collect, &p).should == [2,3]
98
97
  end
99
98
  end
100
99
  end
@@ -45,7 +45,7 @@ describe "Clone" do
45
45
  end
46
46
 
47
47
  it "should clone a cloned document" do
48
- expect { @doc.clone.clone }.to_not raise_error
48
+ lambda { @doc.clone.clone }.should_not raise_error
49
49
  @doc.clone.clone.id.should be_a BSON::ObjectId
50
50
  end
51
51
  end
@@ -8,7 +8,7 @@ describe "Document" do
8
8
  end
9
9
 
10
10
  it "should return false for embeddable" do
11
- Doc().embeddable?.should be_false
11
+ Doc().embeddable?.should be_falsey
12
12
  end
13
13
 
14
14
  it "should have logger method" do
@@ -21,11 +21,11 @@ describe "Document" do
21
21
  end
22
22
 
23
23
  it "should have a connection" do
24
- @document.connection.should be_instance_of(Mongo::MongoClient)
24
+ @document.connection.should be_instance_of(Mongo::Client)
25
25
  end
26
26
 
27
27
  it "should allow setting different connection without affecting the default" do
28
- conn = Mongo::MongoClient.new
28
+ conn = Mongo::Client.new(['127.0.0.1:27001'])
29
29
  @document.connection conn
30
30
  @document.connection.should == conn
31
31
  @document.connection.should_not == MongoMapper.connection
@@ -122,8 +122,8 @@ describe "Document" do
122
122
  it "should use default values if defined for keys" do
123
123
  @document.key :active, Boolean, :default => true
124
124
 
125
- @document.new.active.should be_true
126
- @document.new(:active => false).active.should be_false
125
+ @document.new.active.should be_truthy
126
+ @document.new(:active => false).active.should be_falsey
127
127
  end
128
128
 
129
129
  it "should use default values if defined even when custom data type" do
@@ -147,14 +147,14 @@ describe "Document" do
147
147
 
148
148
  context "new?" do
149
149
  it "should be true if no id" do
150
- @document.new.new?.should be_true
150
+ @document.new.new?.should be_truthy
151
151
  end
152
152
 
153
153
  it "should be true if id but using custom id and not saved yet" do
154
154
  @document.key :_id, String
155
- doc = silence_stderr { @document.new }
155
+ doc = suppress_stderr { @document.new }
156
156
  doc.id = '1234'
157
- doc.new?.should be_true
157
+ doc.new?.should be_truthy
158
158
  end
159
159
  end
160
160
 
@@ -10,28 +10,28 @@ describe "DynamicFinder" do
10
10
 
11
11
  context "found?" do
12
12
  it "should be true for find_by" do
13
- DynamicFinder.new(:find_by_foo).found?.should be_true
13
+ DynamicFinder.new(:find_by_foo).found?.should be_truthy
14
14
  end
15
15
 
16
16
  it "should be true for find_by with !" do
17
- DynamicFinder.new(:find_by_foo!).found?.should be_true
17
+ DynamicFinder.new(:find_by_foo!).found?.should be_truthy
18
18
  end
19
19
 
20
20
  it "should be true for find_all_by" do
21
- DynamicFinder.new(:find_all_by_foo).found?.should be_true
21
+ DynamicFinder.new(:find_all_by_foo).found?.should be_truthy
22
22
  end
23
23
 
24
24
  it "should be true for find_or_initialize_by" do
25
- DynamicFinder.new(:find_or_initialize_by_foo).found?.should be_true
25
+ DynamicFinder.new(:find_or_initialize_by_foo).found?.should be_truthy
26
26
  end
27
27
 
28
28
  it "should be true for find_or_create_by" do
29
- DynamicFinder.new(:find_or_create_by_foo).found?.should be_true
29
+ DynamicFinder.new(:find_or_create_by_foo).found?.should be_truthy
30
30
  end
31
31
 
32
32
  it "should be false for anything else" do
33
33
  [:foobar, :bazwick].each do |method|
34
- DynamicFinder.new(method).found?.should be_false
34
+ DynamicFinder.new(method).found?.should be_falsey
35
35
  end
36
36
  end
37
37
  end
@@ -65,7 +65,7 @@ describe "DynamicFinder" do
65
65
  end
66
66
 
67
67
  it "should set bang to false" do
68
- DynamicFinder.new(:find_by_foo).bang.should be_false
68
+ DynamicFinder.new(:find_by_foo).bang.should be_falsey
69
69
  end
70
70
  end
71
71
 
@@ -83,7 +83,7 @@ describe "DynamicFinder" do
83
83
  end
84
84
 
85
85
  it "should set bang to true" do
86
- DynamicFinder.new(:find_by_foo!).bang.should be_true
86
+ DynamicFinder.new(:find_by_foo!).bang.should be_truthy
87
87
  end
88
88
  end
89
89
 
@@ -66,12 +66,12 @@ describe "EmbeddedDocument" do
66
66
  end
67
67
 
68
68
  it "should know it is using object id" do
69
- @klass.using_object_id?.should be_true
69
+ @klass.using_object_id?.should be_truthy
70
70
  end
71
71
 
72
72
  it "should know it is not using object id if _id type is changed" do
73
73
  @klass.key :_id, String
74
- @klass.using_object_id?.should be_false
74
+ @klass.using_object_id?.should be_falsey
75
75
  end
76
76
  end
77
77
 
@@ -83,7 +83,7 @@ describe "EmbeddedDocument" do
83
83
  end
84
84
 
85
85
  it "should return false for embeddable" do
86
- EDoc().embeddable?.should be_true
86
+ EDoc().embeddable?.should be_truthy
87
87
  end
88
88
 
89
89
  context "#to_mongo" do
@@ -96,7 +96,7 @@ describe "EmbeddedDocument" do
96
96
  it "should convert to_mongo for other values" do
97
97
  doc = @klass.new(:foo => 'bar')
98
98
  to_mongo = @klass.to_mongo(doc)
99
- to_mongo.is_a?(Hash).should be_true
99
+ to_mongo.is_a?(Hash).should be_truthy
100
100
  to_mongo['foo'].should == 'bar'
101
101
  end
102
102
  end
@@ -115,7 +115,7 @@ describe "EmbeddedDocument" do
115
115
 
116
116
  it "should be instance if hash of attributes" do
117
117
  doc = @klass.from_mongo({:foo => 'bar'})
118
- doc.instance_of?(@klass).should be_true
118
+ doc.instance_of?(@klass).should be_truthy
119
119
  doc.foo.should == 'bar'
120
120
  end
121
121
  end
@@ -140,13 +140,13 @@ describe "EmbeddedDocument" do
140
140
  key = @document.key(:name, String, :required => true)
141
141
  key.name.should == 'name'
142
142
  key.type.should == String
143
- key.options[:required].should be_true
143
+ key.options[:required].should be_truthy
144
144
  end
145
145
 
146
146
  it "should work with name and options" do
147
147
  key = @document.key(:name, :required => true)
148
148
  key.name.should == 'name'
149
- key.options[:required].should be_true
149
+ key.options[:required].should be_truthy
150
150
  end
151
151
 
152
152
  it "should be tracked per document" do
@@ -206,11 +206,11 @@ describe "EmbeddedDocument" do
206
206
  end
207
207
 
208
208
  it "should not add anonymous objects to the ancestor tree" do
209
- OtherChild.ancestors.any? { |a| a.name.blank? }.should be_false
209
+ OtherChild.ancestors.any? { |a| a.name.blank? }.should be_falsey
210
210
  end
211
211
 
212
212
  it "should not include descendant keys" do
213
- lambda { Parent.new.other_child }.should raise_error
213
+ lambda { Parent.new.other_child }.should raise_error(NoMethodError)
214
214
  end
215
215
  end
216
216
 
@@ -308,7 +308,7 @@ describe "EmbeddedDocument" do
308
308
  end
309
309
 
310
310
  it "should not throw error if initialized with nil" do
311
- expect { @document.new(nil) }.to_not raise_error
311
+ lambda { @document.new(nil) }.should_not raise_error
312
312
  end
313
313
  end
314
314
 
@@ -422,7 +422,7 @@ describe "EmbeddedDocument" do
422
422
  it "should create key and write value for missing key" do
423
423
  doc = @document.new
424
424
  doc[:foo] = 'string'
425
- doc.class.keys.include?('foo').should be_true
425
+ doc.class.keys.include?('foo').should be_truthy
426
426
  doc[:foo].should == 'string'
427
427
  end
428
428
 
@@ -550,9 +550,9 @@ describe "EmbeddedDocument" do
550
550
  context "checking if a keys value is present" do
551
551
  it "should work for defined keys" do
552
552
  doc = @document.new
553
- doc.name?.should be_false
553
+ doc.name?.should be_falsey
554
554
  doc.name = 'John'
555
- doc.name?.should be_true
555
+ doc.name?.should be_truthy
556
556
  end
557
557
 
558
558
  it "should raise no method error for undefined keys" do
@@ -590,16 +590,16 @@ describe "EmbeddedDocument" do
590
590
  end
591
591
 
592
592
  it "should be equal if id and class are the same" do
593
- (@document.new('_id' => @oid) == @document.new('_id' => @oid)).should be_true
593
+ (@document.new('_id' => @oid) == @document.new('_id' => @oid)).should be_truthy
594
594
  end
595
595
 
596
596
  it "should not be equal if class same but id different" do
597
- (@document.new('_id' => @oid) == @document.new('_id' => BSON::ObjectId.new)).should be_false
597
+ (@document.new('_id' => @oid) == @document.new('_id' => BSON::ObjectId.new)).should be_falsey
598
598
  end
599
599
 
600
600
  it "should not be equal if id same but class different" do
601
601
  another_document = Doc()
602
- (@document.new('_id' => @oid) == another_document.new('_id' => @oid)).should be_false
602
+ (@document.new('_id' => @oid) == another_document.new('_id' => @oid)).should be_falsey
603
603
  end
604
604
  end
605
605
 
@@ -661,16 +661,15 @@ describe "EmbeddedDocument" do
661
661
 
662
662
  it "should should raise errors when invalid" do
663
663
  @doc.name = ''
664
- expect { @doc.save! }.to raise_error(MongoMapper::DocumentNotValid)
664
+ lambda { @doc.save! }.should raise_error(MongoMapper::DocumentNotValid)
665
665
  end
666
666
 
667
667
  it "should should raise errors when root document is invalid" do
668
668
  @root.name = ''
669
669
  @root.save(:validate => false)
670
- expect{ @doc.save! }.to raise_error(MongoMapper::DocumentNotValid)
670
+ lambda { @doc.save! }.should raise_error(MongoMapper::DocumentNotValid)
671
671
  end
672
672
  end
673
673
  end # instance of a embedded document
674
674
  end
675
675
  end
676
-