mongoid_auto_inc 0.0.4 → 0.0.5

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.
@@ -6,10 +6,8 @@ module MongoidAutoInc
6
6
  module ClassMethods
7
7
  def auto_increment(name, options={})
8
8
  field name, :type => Integer
9
-
10
9
  seq_name = "#{self.name.downcase}_#{name}"
11
10
  @@incrementor = MongoidAutoInc::Incrementor.new(options)
12
- @@incrementor[seq_name].set(options[:seed]) if options[:seed].is_a? Integer
13
11
 
14
12
  before_create { self.send("#{name}=", @@incrementor[seq_name].inc) }
15
13
  end
@@ -3,10 +3,10 @@
3
3
  module MongoidAutoInc
4
4
  class Incrementor
5
5
  class Sequence
6
- def initialize(sequence, collection_name)
6
+ def initialize(sequence, collection_name, seed)
7
7
  @sequence = sequence.to_s
8
8
  @collection = collection_name.to_s
9
- exists? || create
9
+ exists? || create(seed)
10
10
  end
11
11
 
12
12
  def inc
@@ -49,16 +49,18 @@ module MongoidAutoInc
49
49
  end
50
50
  end
51
51
 
52
- def initialize(options={})
52
+ def initialize(options=nil)
53
+ options ||= {}
53
54
  @collection = options[:collection] || "sequences"
55
+ @seed = options[:seed].to_i
54
56
  end
55
57
 
56
58
  def [](sequence)
57
- Sequence.new(sequence, @collection)
59
+ Sequence.new(sequence, @collection, @seed)
58
60
  end
59
61
 
60
62
  def []=(sequence, number)
61
- Sequence.new(sequence, @collection).set(number)
63
+ Sequence.new(sequence, @collection, @seed).set(number)
62
64
  end
63
65
  end
64
66
  end
@@ -1,3 +1,3 @@
1
1
  module MongoidAutoInc
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -1,5 +1,80 @@
1
+ # -*- coding: utf-8 -*-
2
+ # rspec spec/mongoid_auto_inc_spec.rb
3
+ require 'rspec'
4
+ require 'active_support'
5
+ require 'mongoid'
1
6
  require 'mongoid_auto_inc'
2
7
 
3
- describe MongoidAutoInc
4
- pending "I should add some tests at some point."
8
+ describe MongoidAutoInc do
9
+ before(:all) do
10
+ Mongoid.master = Mongo::Connection.new.db("mongoid_auto_inc_test")
11
+ end
12
+
13
+ describe "auto increment" do
14
+ before(:all) do
15
+ class DocumentA
16
+ include Mongoid::Document
17
+ auto_increment :seq
18
+ end
19
+ end
20
+
21
+ before(:each) do
22
+ Mongoid.database["sequences"].remove
23
+ end
24
+
25
+ it "should be nil" do
26
+ DocumentA.new.seq.should be_nil
27
+ end
28
+
29
+ it "should be 1" do
30
+ DocumentA.create!.seq.should == 1
31
+ end
32
+
33
+ it "should be 2" do
34
+ DocumentA.create!
35
+ DocumentA.create!.seq.should == 2
36
+ end
37
+ end
38
+
39
+ describe "auto increment with :collection option" do
40
+ before(:all) do
41
+ class DocumentB
42
+ include Mongoid::Document
43
+ auto_increment :seq, :collection => 'other_sequences'
44
+ end
45
+ end
46
+
47
+ before(:each) do
48
+ Mongoid.database["sequences"].remove
49
+ Mongoid.database["other_sequences"].remove
50
+ end
51
+
52
+ it "should store sequence data to other_sequences collection" do
53
+ DocumentB.create!.seq.should == 1
54
+ DocumentB.create!.seq.should == 2
55
+ Mongoid.database["sequences"].remove
56
+ DocumentB.create!.seq.should == 3
57
+ Mongoid.database["other_sequences"].remove
58
+ DocumentB.create!.seq.should == 1
59
+ end
60
+ end
61
+
62
+ describe "auto increment with :seed option" do
63
+ before(:all) do
64
+ class DocumentC
65
+ include Mongoid::Document
66
+ auto_increment :seq, :seed => 10
67
+ end
68
+ end
69
+
70
+ before(:each) do
71
+ Mongoid.database["sequences"].remove
72
+ end
73
+
74
+ it "should start with 11 (10 + 1)" do
75
+ DocumentC.create!.seq.should == 11
76
+ DocumentC.create!.seq.should == 12
77
+ DocumentC.create!.seq.should == 13
78
+ end
79
+ end
5
80
  end
metadata CHANGED
@@ -1,81 +1,56 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: mongoid_auto_inc
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 4
9
- version: 0.0.4
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.5
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Jeff Smith
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2011-03-06 00:00:00 -05:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-01-25 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: rspec
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &2172656860 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
18
+ requirements:
26
19
  - - ~>
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 2
30
- - 0
31
- - 0
32
- - beta
33
- - 22
20
+ - !ruby/object:Gem::Version
34
21
  version: 2.0.0.beta.22
35
22
  type: :development
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: mongoid
39
23
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *2172656860
25
+ - !ruby/object:Gem::Dependency
26
+ name: mongoid
27
+ requirement: &2172656360 !ruby/object:Gem::Requirement
41
28
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- segments:
46
- - 2
47
- - 0
48
- - 0
49
- - rc
50
- - 6
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
51
32
  version: 2.0.0.rc.6
52
33
  type: :runtime
53
- version_requirements: *id002
54
- - !ruby/object:Gem::Dependency
55
- name: activesupport
56
34
  prerelease: false
57
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *2172656360
36
+ - !ruby/object:Gem::Dependency
37
+ name: activesupport
38
+ requirement: &2172655880 !ruby/object:Gem::Requirement
58
39
  none: false
59
- requirements:
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- segments:
63
- - 3
64
- - 0
65
- - 0
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
66
43
  version: 3.0.0
67
44
  type: :runtime
68
- version_requirements: *id003
45
+ prerelease: false
46
+ version_requirements: *2172655880
69
47
  description: Adds auto increment capabilities to Mongoid::Document
70
- email:
48
+ email:
71
49
  - jffreyjs@gmail.com
72
50
  executables: []
73
-
74
51
  extensions: []
75
-
76
52
  extra_rdoc_files: []
77
-
78
- files:
53
+ files:
79
54
  - .gitignore
80
55
  - Gemfile
81
56
  - LICENSE
@@ -86,37 +61,29 @@ files:
86
61
  - lib/mongoid_auto_inc/version.rb
87
62
  - mongoid_auto_inc.gemspec
88
63
  - spec/mongoid_auto_inc_spec.rb
89
- has_rdoc: true
90
- homepage: ""
64
+ homepage: ''
91
65
  licenses: []
92
-
93
66
  post_install_message:
94
67
  rdoc_options: []
95
-
96
- require_paths:
68
+ require_paths:
97
69
  - lib
98
- required_ruby_version: !ruby/object:Gem::Requirement
70
+ required_ruby_version: !ruby/object:Gem::Requirement
99
71
  none: false
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- segments:
104
- - 0
105
- version: "0"
106
- required_rubygems_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
107
77
  none: false
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- segments:
112
- - 0
113
- version: "0"
78
+ requirements:
79
+ - - ! '>='
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
114
82
  requirements: []
115
-
116
83
  rubyforge_project: mongoid_auto_inc
117
- rubygems_version: 1.3.7
84
+ rubygems_version: 1.8.14
118
85
  signing_key:
119
86
  specification_version: 3
120
87
  summary: Adds auto increment capabilities to Mongoid::Document
121
- test_files: []
122
-
88
+ test_files:
89
+ - spec/mongoid_auto_inc_spec.rb