mongoid 0.2.5 → 0.2.6

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/.gitignore CHANGED
@@ -2,4 +2,5 @@
2
2
  coverage/*
3
3
  pkg/*
4
4
  scratch_directory/*
5
- tmp/*
5
+ tmp/*
6
+ *.gem
@@ -1,2 +1,7 @@
1
+ 0.2.6:
2
+ - Adding destroy_all to document
3
+ - Adding before and after create callbacks
4
+ - Document#paginate now only takes a single hash as an argument
5
+
1
6
  0.2.5:
2
7
  - Switching pagination over to will_paginate
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.5
1
+ 0.2.6
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2009 Durran Jordan
2
- #
2
+ #
3
3
  # Permission is hereby granted, free of charge, to any person obtaining
4
4
  # a copy of this software and associated documentation files (the
5
5
  # "Software"), to deal in the Software without restriction, including
@@ -7,10 +7,10 @@
7
7
  # distribute, sublicense, and/or sell copies of the Software, and to
8
8
  # permit persons to whom the Software is furnished to do so, subject to
9
9
  # the following conditions:
10
- #
10
+ #
11
11
  # The above copyright notice and this permission notice shall be
12
12
  # included in all copies or substantial portions of the Software.
13
- #
13
+ #
14
14
  # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
15
  # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
16
  # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -38,8 +38,8 @@ require "mongoid/associations/has_one_association"
38
38
  require "mongoid/extensions/array/conversions"
39
39
  require "mongoid/extensions/object/conversions"
40
40
  require "mongoid/extensions"
41
+ require "mongoid/finders"
41
42
  require "mongoid/document"
42
- require "mongoid/paginator"
43
43
 
44
44
  module Mongoid
45
45
 
@@ -2,9 +2,7 @@ module Mongoid #:nodoc:
2
2
  class Document #:nodoc:
3
3
  include ActiveSupport::Callbacks
4
4
  include Validatable
5
-
6
- AGGREGATE_REDUCE = "function(obj, prev) { prev.count++; }"
7
- GROUP_BY_REDUCE = "function(obj, prev) { prev.group.push(obj); }"
5
+ extend Finders
8
6
 
9
7
  attr_reader :attributes, :parent
10
8
 
@@ -16,12 +14,6 @@ module Mongoid #:nodoc:
16
14
 
17
15
  class << self
18
16
 
19
- # Get an aggregate count for the supplied group of fields and the
20
- # selector that is provided.
21
- def aggregate(fields, selector)
22
- collection.group(fields, selector, { :count => 0 }, AGGREGATE_REDUCE)
23
- end
24
-
25
17
  # Create an association to a parent Document.
26
18
  def belongs_to(association_name)
27
19
  add_association(:belongs_to, association_name.to_s.classify, association_name)
@@ -35,7 +27,13 @@ module Mongoid #:nodoc:
35
27
 
36
28
  # Create a new Document with the supplied attribtues, and insert it into the database.
37
29
  def create(attributes = {})
38
- new(attributes).save
30
+ new(attributes).save(true)
31
+ end
32
+
33
+ # Deletes all records from the collection. Will actually call drop on the
34
+ # Mongo::Collection for efficiency.
35
+ def destroy_all
36
+ collection.drop
39
37
  end
40
38
 
41
39
  # Defines all the fields that are accessable on the Document
@@ -50,38 +48,6 @@ module Mongoid #:nodoc:
50
48
  end
51
49
  end
52
50
 
53
- # Find all Documents in several ways.
54
- # Model.find(:first, :attribute => "value")
55
- # Model.find(:all, :attribute => "value")
56
- def find(*args)
57
- type, selector = args[0], args[1]
58
- case type
59
- when :all then find_all(selector[:conditions])
60
- when :first then find_first(selector[:conditions])
61
- else find_first(Mongo::ObjectID.from_string(type.to_s))
62
- end
63
- end
64
-
65
- # Find a single Document given the passed selector, which is a Hash of attributes that
66
- # must match the Document in the database exactly.
67
- def find_first(selector = nil)
68
- new(collection.find_one(selector))
69
- end
70
-
71
- # Find all Documents given the passed selector, which is a Hash of attributes that
72
- # must match the Document in the database exactly.
73
- def find_all(selector = nil)
74
- collection.find(selector).collect { |doc| new(doc) }
75
- end
76
-
77
- # Find all Documents given the supplied criteria, grouped by the fields
78
- # provided.
79
- def group_by(fields, selector)
80
- collection.group(fields, selector, { :group => [] }, GROUP_BY_REDUCE).collect do |docs|
81
- group!(docs)
82
- end
83
- end
84
-
85
51
  # Create a one-to-many association between Documents.
86
52
  def has_many(association_name)
87
53
  add_association(:has_many, association_name.to_s.classify, association_name)
@@ -98,19 +64,6 @@ module Mongoid #:nodoc:
98
64
  collection.create_index(name, options)
99
65
  end
100
66
 
101
- # Find all documents in paginated fashion given the supplied arguments.
102
- # If no parameters are passed just default to offset 0 and limit 20.
103
- def paginate(selector = {}, params = {})
104
- WillPaginate::Collection.create(
105
- params[:page] || 1,
106
- params[:per_page] || 20,
107
- 0) do |pager|
108
- results = collection.find(selector[:conditions], { :limit => pager.per_page, :offset => pager.offset })
109
- pager.total_entries = results.count
110
- pager.replace(results.collect { |doc| new(doc) })
111
- end
112
- end
113
-
114
67
  end
115
68
 
116
69
  # Get the Mongo::Collection associated with this Document.
@@ -150,12 +103,14 @@ module Mongoid #:nodoc:
150
103
  # in the object graph, it will save itself, and return self. If the
151
104
  # document is embedded within another document, or is multiple levels down
152
105
  # the tree, the root object will get saved, and return itself.
153
- def save
106
+ def save(creating = false)
154
107
  if @parent
155
108
  @parent.save
156
109
  else
110
+ run_callbacks(:before_create) if creating
157
111
  run_callbacks(:before_save)
158
112
  collection.save(@attributes)
113
+ run_callbacks(:after_create) if creating
159
114
  run_callbacks(:after_save)
160
115
  return self
161
116
  end
@@ -186,12 +141,6 @@ module Mongoid #:nodoc:
186
141
  end
187
142
  end
188
143
 
189
- # Takes the supplied raw grouping of documents and alters it to a
190
- # grouping of actual document objects.
191
- def group!(docs)
192
- docs["group"] = docs["group"].collect { |attrs| new(attrs) }; docs
193
- end
194
-
195
144
  end
196
145
 
197
146
  # Read from the attributes hash.
@@ -0,0 +1,60 @@
1
+ module Mongoid #:nodoc:
2
+ module Finders #:nodoc:
3
+
4
+ AGGREGATE_REDUCE = "function(obj, prev) { prev.count++; }"
5
+ GROUP_BY_REDUCE = "function(obj, prev) { prev.group.push(obj); }"
6
+
7
+ # Get an aggregate count for the supplied group of fields and the
8
+ # selector that is provided.
9
+ def aggregate(fields, selector)
10
+ collection.group(fields, selector, { :count => 0 }, AGGREGATE_REDUCE)
11
+ end
12
+
13
+ # Find all Documents in several ways.
14
+ # Model.find(:first, :attribute => "value")
15
+ # Model.find(:all, :attribute => "value")
16
+ def find(*args)
17
+ type, selector = args[0], args[1]
18
+ conditions = selector[:conditions] if selector
19
+ case type
20
+ when :all then find_all(conditions)
21
+ when :first then find_first(conditions)
22
+ else find_first(Mongo::ObjectID.from_string(type.to_s))
23
+ end
24
+ end
25
+
26
+ # Find a single Document given the passed selector, which is a Hash of attributes that
27
+ # must match the Document in the database exactly.
28
+ def find_first(selector = nil)
29
+ new(collection.find_one(selector))
30
+ end
31
+
32
+ # Find all Documents given the passed selector, which is a Hash of attributes that
33
+ # must match the Document in the database exactly.
34
+ def find_all(selector = nil)
35
+ collection.find(selector).collect { |doc| new(doc) }
36
+ end
37
+
38
+ # Find all Documents given the supplied criteria, grouped by the fields
39
+ # provided.
40
+ def group_by(fields, selector)
41
+ collection.group(fields, selector, { :group => [] }, GROUP_BY_REDUCE).collect do |docs|
42
+ docs["group"] = docs["group"].collect { |attrs| new(attrs) }; docs
43
+ end
44
+ end
45
+
46
+ # Find all documents in paginated fashion given the supplied arguments.
47
+ # If no parameters are passed just default to offset 0 and limit 20.
48
+ def paginate(params = {})
49
+ WillPaginate::Collection.create(
50
+ params[:page] || 1,
51
+ params[:per_page] || 20,
52
+ 0) do |pager|
53
+ results = collection.find(params[:conditions], { :limit => pager.per_page, :offset => pager.offset })
54
+ pager.total_entries = results.count
55
+ pager.replace(results.collect { |doc| new(doc) })
56
+ end
57
+ end
58
+
59
+ end
60
+ end
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{mongoid}
8
- s.version = "0.2.5"
8
+ s.version = "0.2.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Durran Jordan"]
@@ -30,7 +30,7 @@ Gem::Specification.new do |s|
30
30
  "lib/mongoid/extensions.rb",
31
31
  "lib/mongoid/extensions/array/conversions.rb",
32
32
  "lib/mongoid/extensions/object/conversions.rb",
33
- "lib/mongoid/paginator.rb",
33
+ "lib/mongoid/finders.rb",
34
34
  "mongoid.gemspec",
35
35
  "spec/integration/mongoid/document_spec.rb",
36
36
  "spec/spec.opts",
@@ -42,7 +42,7 @@ Gem::Specification.new do |s|
42
42
  "spec/unit/mongoid/document_spec.rb",
43
43
  "spec/unit/mongoid/extensions/array/conversions_spec.rb",
44
44
  "spec/unit/mongoid/extensions/object/conversions_spec.rb",
45
- "spec/unit/mongoid/paginator_spec.rb"
45
+ "spec/unit/mongoid/finders_spec.rb"
46
46
  ]
47
47
  s.homepage = %q{http://github.com/durran/mongoid}
48
48
  s.rdoc_options = ["--charset=UTF-8"]
@@ -59,7 +59,7 @@ Gem::Specification.new do |s|
59
59
  "spec/unit/mongoid/document_spec.rb",
60
60
  "spec/unit/mongoid/extensions/array/conversions_spec.rb",
61
61
  "spec/unit/mongoid/extensions/object/conversions_spec.rb",
62
- "spec/unit/mongoid/paginator_spec.rb"
62
+ "spec/unit/mongoid/finders_spec.rb"
63
63
  ]
64
64
 
65
65
  if s.respond_to? :specification_version then
@@ -87,7 +87,7 @@ describe Mongoid::Document do
87
87
  end
88
88
 
89
89
  it "returns paginated documents" do
90
- Person.paginate({}, { :per_page => 20, :page => 2 }).length.should == 10
90
+ Person.paginate(:per_page => 20, :page => 2).length.should == 10
91
91
  end
92
92
 
93
93
  end
@@ -79,6 +79,15 @@ describe Mongoid::Document do
79
79
 
80
80
  end
81
81
 
82
+ describe "#destroy_all" do
83
+
84
+ it "deletes all documents from the collection" do
85
+ @collection.expects(:drop)
86
+ Person.destroy_all
87
+ end
88
+
89
+ end
90
+
82
91
  describe "#fields" do
83
92
 
84
93
  before do
@@ -98,122 +107,6 @@ describe Mongoid::Document do
98
107
 
99
108
  end
100
109
 
101
- describe "#find" do
102
-
103
- before do
104
- @attributes = { :document_class => "Person" }
105
- end
106
-
107
- context "when an id is passed in" do
108
-
109
- before do
110
- @id = Mongo::ObjectID.new
111
- end
112
-
113
- it "delegates to find_first" do
114
- @collection.expects(:find_one).with(Mongo::ObjectID.from_string(@id.to_s)).returns(@attributes)
115
- Person.find(@id.to_s)
116
- end
117
-
118
- end
119
-
120
- context "when finding first" do
121
-
122
- it "delegates to find_first" do
123
- @collection.expects(:find_one).with(:test => "Test" ).returns(@attributes)
124
- Person.find(:first, :conditions => { :test => "Test" })
125
- end
126
-
127
- end
128
-
129
- context "when finding all" do
130
-
131
- before do
132
- @cursor = mock
133
- @people = []
134
- end
135
-
136
- it "delegates to find_all" do
137
- @collection.expects(:find).with(:test => "Test").returns(@cursor)
138
- @cursor.expects(:collect).returns(@people)
139
- Person.find(:all, :conditions => { :test => "Test" })
140
- end
141
-
142
- end
143
-
144
- end
145
-
146
- describe "#find_first" do
147
-
148
- before do
149
- @attributes = { :document_class => "Person" }
150
- end
151
-
152
- context "when a selector is provided" do
153
-
154
- it "finds the first document from the collection and instantiates it" do
155
- @collection.expects(:find_one).with(:test => "Test").returns(@attributes)
156
- Person.find_first(:test => "Test").attributes.should == @attributes
157
- end
158
-
159
- end
160
-
161
- context "when a selector is not provided" do
162
-
163
- it "finds the first document from the collection and instantiates it" do
164
- @collection.expects(:find_one).with(nil).returns(@attributes)
165
- Person.find_first.attributes.should == @attributes
166
- end
167
-
168
- end
169
-
170
- end
171
-
172
- describe "#find_all" do
173
-
174
- before do
175
- @cursor = mock
176
- @people = []
177
- end
178
-
179
- context "when a selector is provided" do
180
-
181
- it "finds from the collection and instantiate objects for each returned" do
182
- @collection.expects(:find).with(:test => "Test").returns(@cursor)
183
- @cursor.expects(:collect).returns(@people)
184
- Person.find_all(:test => "Test")
185
- end
186
-
187
- end
188
-
189
- context "when a selector is not provided" do
190
-
191
- it "finds from the collection and instantiate objects for each returned" do
192
- @collection.expects(:find).with(nil).returns(@cursor)
193
- @cursor.expects(:collect).returns(@people)
194
- Person.find_all
195
- end
196
-
197
- end
198
-
199
- end
200
-
201
- describe "#group_by" do
202
-
203
- before do
204
- @reduce = "function(obj, prev) { prev.group.push(obj); }"
205
- end
206
-
207
- it "returns documents grouped by the supplied fields" do
208
- results = [{ "title" => "Sir", "group" => [{ "title" => "Sir", "age" => 30 }] }]
209
- @collection.expects(:group).with([:title], {}, { :group => [] }, @reduce).returns(results)
210
- grouped = Person.group_by([:title], {})
211
- people = grouped.first["group"]
212
- people.first.should be_a_kind_of(Person)
213
- end
214
-
215
- end
216
-
217
110
  describe "#has_many" do
218
111
 
219
112
  it "adds a new Association to the collection" do
@@ -362,32 +255,6 @@ describe Mongoid::Document do
362
255
 
363
256
  end
364
257
 
365
- describe "#paginate" do
366
-
367
- before do
368
- @cursor = stub(:count => 100, :collect => [])
369
- end
370
-
371
- context "when pagination parameters are passed" do
372
-
373
- it "delegates to will paginate with the results" do
374
- @collection.expects(:find).with({ :test => "Test" }, {:limit => 20, :offset => 20}).returns(@cursor)
375
- Person.paginate({ :conditions => { :test => "Test" } }, { :page => 2, :per_page => 20 })
376
- end
377
-
378
- end
379
-
380
- context "when pagination parameters are not passed" do
381
-
382
- it "delegates to will paginate with default values" do
383
- @collection.expects(:find).with({ :test => "Test" }, {:limit => 20, :offset => 0}).returns(@cursor)
384
- Person.paginate(:conditions => { :test => "Test" })
385
- end
386
-
387
- end
388
-
389
- end
390
-
391
258
  describe "#parent" do
392
259
 
393
260
  before do
@@ -676,5 +543,4 @@ describe Mongoid::Document do
676
543
 
677
544
  end
678
545
 
679
-
680
546
  end
@@ -0,0 +1,157 @@
1
+ require File.join(File.dirname(__FILE__), "/../../spec_helper.rb")
2
+
3
+ describe Mongoid::Finders do
4
+
5
+ before do
6
+ @collection = mock
7
+ @database = stub(:collection => @collection)
8
+ Mongoid.stubs(:database).returns(@database)
9
+ end
10
+
11
+ after do
12
+ Person.instance_variable_set(:@collection, nil)
13
+ end
14
+
15
+ describe "#find" do
16
+
17
+ before do
18
+ @attributes = { :document_class => "Person" }
19
+ end
20
+
21
+ context "when an id is passed in" do
22
+
23
+ before do
24
+ @id = Mongo::ObjectID.new
25
+ end
26
+
27
+ it "delegates to find_first" do
28
+ @collection.expects(:find_one).with(Mongo::ObjectID.from_string(@id.to_s)).returns(@attributes)
29
+ Person.find(@id.to_s)
30
+ end
31
+
32
+ end
33
+
34
+ context "when finding first" do
35
+
36
+ it "delegates to find_first" do
37
+ @collection.expects(:find_one).with(:test => "Test" ).returns(@attributes)
38
+ Person.find(:first, :conditions => { :test => "Test" })
39
+ end
40
+
41
+ end
42
+
43
+ context "when finding all" do
44
+
45
+ before do
46
+ @cursor = mock
47
+ @people = []
48
+ end
49
+
50
+ it "delegates to find_all" do
51
+ @collection.expects(:find).with(:test => "Test").returns(@cursor)
52
+ @cursor.expects(:collect).returns(@people)
53
+ Person.find(:all, :conditions => { :test => "Test" })
54
+ end
55
+
56
+ end
57
+
58
+ end
59
+
60
+ describe "#find_first" do
61
+
62
+ before do
63
+ @attributes = { :document_class => "Person" }
64
+ end
65
+
66
+ context "when a selector is provided" do
67
+
68
+ it "finds the first document from the collection and instantiates it" do
69
+ @collection.expects(:find_one).with(:test => "Test").returns(@attributes)
70
+ Person.find_first(:test => "Test").attributes.should == @attributes
71
+ end
72
+
73
+ end
74
+
75
+ context "when a selector is not provided" do
76
+
77
+ it "finds the first document from the collection and instantiates it" do
78
+ @collection.expects(:find_one).with(nil).returns(@attributes)
79
+ Person.find_first.attributes.should == @attributes
80
+ end
81
+
82
+ end
83
+
84
+ end
85
+
86
+ describe "#find_all" do
87
+
88
+ before do
89
+ @cursor = mock
90
+ @people = []
91
+ end
92
+
93
+ context "when a selector is provided" do
94
+
95
+ it "finds from the collection and instantiate objects for each returned" do
96
+ @collection.expects(:find).with(:test => "Test").returns(@cursor)
97
+ @cursor.expects(:collect).returns(@people)
98
+ Person.find_all(:test => "Test")
99
+ end
100
+
101
+ end
102
+
103
+ context "when a selector is not provided" do
104
+
105
+ it "finds from the collection and instantiate objects for each returned" do
106
+ @collection.expects(:find).with(nil).returns(@cursor)
107
+ @cursor.expects(:collect).returns(@people)
108
+ Person.find_all
109
+ end
110
+
111
+ end
112
+
113
+ end
114
+
115
+ describe "#group_by" do
116
+
117
+ before do
118
+ @reduce = "function(obj, prev) { prev.group.push(obj); }"
119
+ end
120
+
121
+ it "returns documents grouped by the supplied fields" do
122
+ results = [{ "title" => "Sir", "group" => [{ "title" => "Sir", "age" => 30 }] }]
123
+ @collection.expects(:group).with([:title], {}, { :group => [] }, @reduce).returns(results)
124
+ grouped = Person.group_by([:title], {})
125
+ people = grouped.first["group"]
126
+ people.first.should be_a_kind_of(Person)
127
+ end
128
+
129
+ end
130
+
131
+ describe "#paginate" do
132
+
133
+ before do
134
+ @cursor = stub(:count => 100, :collect => [])
135
+ end
136
+
137
+ context "when pagination parameters are passed" do
138
+
139
+ it "delegates to will paginate with the results" do
140
+ @collection.expects(:find).with({ :test => "Test" }, {:limit => 20, :offset => 20}).returns(@cursor)
141
+ Person.paginate(:conditions => { :test => "Test" }, :page => 2, :per_page => 20)
142
+ end
143
+
144
+ end
145
+
146
+ context "when pagination parameters are not passed" do
147
+
148
+ it "delegates to will paginate with default values" do
149
+ @collection.expects(:find).with({ :test => "Test" }, {:limit => 20, :offset => 0}).returns(@cursor)
150
+ Person.paginate(:conditions => { :test => "Test" })
151
+ end
152
+
153
+ end
154
+
155
+ end
156
+
157
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Durran Jordan
@@ -56,7 +56,7 @@ files:
56
56
  - lib/mongoid/extensions.rb
57
57
  - lib/mongoid/extensions/array/conversions.rb
58
58
  - lib/mongoid/extensions/object/conversions.rb
59
- - lib/mongoid/paginator.rb
59
+ - lib/mongoid/finders.rb
60
60
  - mongoid.gemspec
61
61
  - spec/integration/mongoid/document_spec.rb
62
62
  - spec/spec.opts
@@ -68,7 +68,7 @@ files:
68
68
  - spec/unit/mongoid/document_spec.rb
69
69
  - spec/unit/mongoid/extensions/array/conversions_spec.rb
70
70
  - spec/unit/mongoid/extensions/object/conversions_spec.rb
71
- - spec/unit/mongoid/paginator_spec.rb
71
+ - spec/unit/mongoid/finders_spec.rb
72
72
  has_rdoc: true
73
73
  homepage: http://github.com/durran/mongoid
74
74
  licenses: []
@@ -107,4 +107,4 @@ test_files:
107
107
  - spec/unit/mongoid/document_spec.rb
108
108
  - spec/unit/mongoid/extensions/array/conversions_spec.rb
109
109
  - spec/unit/mongoid/extensions/object/conversions_spec.rb
110
- - spec/unit/mongoid/paginator_spec.rb
110
+ - spec/unit/mongoid/finders_spec.rb
@@ -1,22 +0,0 @@
1
- module Mongoid #:nodoc:
2
- class Paginator #:nodoc:
3
-
4
- attr_reader :limit, :offset
5
-
6
- # Create the new Paginator with the supplied options.
7
- # * Will default to offset 0 if no page defined in the options.
8
- # * Will default to limit 20 if no per_page defined in the options.
9
- def initialize(options = {})
10
- page = options[:page]
11
- @limit = options[:per_page] || 20
12
- @offset = page ? (page - 1) * @limit : 0
13
- end
14
-
15
- # Generate the options needed for returning the correct
16
- # results given the supplied parameters
17
- def options
18
- { :limit => @limit, :offset => @offset }
19
- end
20
-
21
- end
22
- end
@@ -1,74 +0,0 @@
1
- require File.join(File.dirname(__FILE__), "/../../spec_helper.rb")
2
-
3
- describe Mongoid::Paginator do
4
-
5
- describe "#limit" do
6
-
7
- context "when per_page is defined" do
8
-
9
- before do
10
- @options = { :per_page => 50 }
11
- @paginator = Mongoid::Paginator.new(@options)
12
- end
13
-
14
- it "returns the per_page value" do
15
- @paginator.limit.should == 50
16
- end
17
-
18
- end
19
-
20
- context "when per_page is not defined" do
21
-
22
- before do
23
- @options = {}
24
- @paginator = Mongoid::Paginator.new(@options)
25
- end
26
-
27
- it "returns the default of 20" do
28
- @paginator.limit.should == 20
29
- end
30
-
31
- end
32
-
33
- end
34
-
35
- describe "#offset" do
36
-
37
- context "when page is defined" do
38
-
39
- before do
40
- @options = { :page => 11 }
41
- @paginator = Mongoid::Paginator.new(@options)
42
- end
43
-
44
- it "returns the page value - 1 * limit" do
45
- @paginator.offset.should == 200
46
- end
47
-
48
- end
49
-
50
- context "when page is not defined" do
51
-
52
- before do
53
- @options = {}
54
- @paginator = Mongoid::Paginator.new(@options)
55
- end
56
-
57
- it "returns the default of 0" do
58
- @paginator.offset.should == 0
59
- end
60
-
61
- end
62
-
63
- end
64
-
65
- describe "#options" do
66
-
67
- it "returns a hash of the limit and offset" do
68
- @paginator = Mongoid::Paginator.new
69
- @paginator.options.should == { :limit => 20, :offset => 0 }
70
- end
71
-
72
- end
73
-
74
- end