spec/models/queries_spec.rb in ampere-1.2.2 vs spec/models/queries_spec.rb in ampere-1.2.3
- old
+ new
@@ -2,23 +2,23 @@
describe 'queries', :queries => true do
before :each do
Redis.new.flushall
Ampere.connect
-
+
class Kitty
include Ampere::Model
-
+
field :name
field :breed
field :age
field :color
-
+
index :name # => Unique
index :color # => Non-unique
end
-
+
@kitty_paws = Kitty.create name: 'Kitty Paws',
breed: 'Domestic shorthair',
age: 19,
color: 'orange'
@nate = Kitty.create name: 'Nate',
@@ -37,62 +37,62 @@
breed: 'Siberian',
age: 5,
color: 'grey'
[@kitty_paws, @nate, @jinxii, @italics, @serif]. each {|k| k.reload}
end
-
+
###
-
+
it 'should pass a basic sanity check' do
Kitty.count.should == 5
end
-
+
it 'should be able to select all kitties' do
Kitty.all.map(&:name).should include('Kitty Paws')
Kitty.all.map(&:name).should include('Nate')
Kitty.all.map(&:name).should include('Jinxii')
Kitty.all.map(&:name).should include('Italics')
Kitty.all.map(&:name).should include('Serif')
end
-
+
context 'with no fields' do
it 'should return the empty set with no conditions given' do
Kitty.where().should be_empty
end
end
-
+
context 'with one field' do
it 'should be able to find by an indexed field using where()' do
Kitty.where(:name => 'Nate').to_a.map(&:name).should include('Nate')
end
-
+
it 'should be able to find by a non-indexed field using where()' do
Kitty.where(:breed => 'Siberian').to_a.map(&:name).should include('Italics')
Kitty.where(:breed => 'Siberian').to_a.map(&:name).should include('Serif')
end
end
-
+
it 'should be able to find by two indexed fields at once' do
kitty = Kitty.where(:name => "Kitty Paws", :color => "orange")
kitty.count.should == 1
kitty.first.name.should == "Kitty Paws"
end
-
+
it 'should be able to find by two non-indexed fields at once' do
# :breed and :age are not indexed
Kitty.where(:breed => "Domestic shorthair", :age => 17).count.should == 1
end
-
+
it 'should be able to find by a mix of indexed and non-indexed fields' do
# :color is indexed, :breed is not
Kitty.where(:color => "orange").count.should == 2
Kitty.where(:breed => "Siberian").count.should == 2
Kitty.where(:color => "orange", :breed => "Siberian").count.should == 1
Kitty.where(:color => "orange", :breed => "Siberian").first.name.should == "Italics"
end
-
+
###
-
+
after :all do
Redis.new.flushall
Ampere.connect
end
end