match_mongo_chunk_size/test/mongoid-sequence.rb
2012-08-10 09:06:48 -06:00

85 lines
1.4 KiB
Ruby

require_relative 'helper'
Testing Mongoid::Sequence do
##
#
Sequence =
Mongoid::Sequence
SequenceGenerator =
Mongoid::SequenceGenerator
prepare do
SequenceGenerator.destroy_all
end
##
#
test 'can be included' do
assert do
model_class do
include Mongoid::Sequence
end
end
end
test 'provided a "sequence" class method that builds a field' do
m =
assert do
model_class do
include Mongoid::Sequence
sequence 'number'
end
end
assert{ m.fields['number'].name == 'number' }
end
test 'autoincrements the field on create' do
m =
assert do
model_class do
include Mongoid::Sequence
sequence 'number'
end
end
10.times do |i|
assert{ m.create.number == i.succ }
end
end
test 'allows the sequence to be reset' do
m =
assert do
model_class do
include Mongoid::Sequence
sequence 'number'
end
end
assert{ m.sequence_for(:number).reset! }
assert{ m.sequence_for(:number).next == 1 }
assert{ m.sequence_for(:number).next != 1 }
assert{ m.sequence_for(:number).reset! }
assert{ m.sequence_for(:number).next == 1 }
end
protected
def model_class(&block)
m = Class.new
m.class_eval do
def m.name() 'm' end
include Mongoid::Document
end
m.destroy_all
m.class_eval(&block) if block
m
end
end