From 3ab6ae0c601d1b4459efd8bb39650fee370aa5b8 Mon Sep 17 00:00:00 2001 From: Carl Lerche Date: Fri, 12 Mar 2010 16:38:36 -0800 Subject: Organize the matchers a bit more --- spec/algebra/integration/basic_spec.rb | 87 ---------------------------------- 1 file changed, 87 deletions(-) (limited to 'spec/algebra') diff --git a/spec/algebra/integration/basic_spec.rb b/spec/algebra/integration/basic_spec.rb index e48f94625d..ae9da3a037 100644 --- a/spec/algebra/integration/basic_spec.rb +++ b/spec/algebra/integration/basic_spec.rb @@ -1,93 +1,7 @@ require 'spec_helper' -def have_rows(expected) - simple_matcher "have rows" do |given, matcher| - found, got, expected = [], [], expected.map { |r| r.tuple } - given.each do |row| - got << row.tuple - found << expected.find { |r| row.tuple == r } - end - - matcher.failure_message = "Expected to get:\n" \ - "#{expected.map {|r| " #{r.inspect}" }.join("\n")}\n" \ - "instead, got:\n" \ - "#{got.map {|r| " #{r.inspect}" }.join("\n")}" - - found.compact.length == expected.length && got.compact.length == expected.length - end -end - -share_examples_for 'A Relation' do - - before :all do - # The two needed instance variables need to be set in a - # before :all callback. - # @relation is the relation being tested here. - # @expected is an array of the elements that are expected to be in - # the relation. - %w[ @relation @expected ].each do |ivar| - raise "#{ivar} needs to be defined" unless instance_variable_get(ivar) - end - - # There needs to be enough items to be able to run all the tests - raise "@expected needs to have at least 6 items" unless @expected.length >= 6 - end - - describe "#each" do - it "iterates over the rows in any order" do - @relation.should have_rows(@expected) - end - end - - describe "#where" do - before :all do - @expected = @expected.sort_by { |r| r[@relation[:age]] } - @pivot = @expected[@expected.length / 2] - end - - it "finds rows with an equal to predicate" do - expected = @expected.select { |r| r[@relation[:age]] == @pivot[@relation[:age]] } - @relation.where(@relation[:age].eq(@pivot[@relation[:age]])).should have_rows(expected) - end - - it "finds rows with a not predicate" do - expected = @expected.select { |r| r[@relation[:age]] != @pivot[@relation[:age]] } - @relation.where(@relation[:age].not(@pivot[@relation[:age]])).should have_rows(expected) - end - - it "finds rows with a less than predicate" do - expected = @expected.select { |r| r[@relation[:age]] < @pivot[@relation[:age]] } - @relation.where(@relation[:age].lt(@pivot[@relation[:age]])).should have_rows(expected) - end - - it "finds rows with a less than or equal to predicate" do - expected = @expected.select { |r| r[@relation[:age]] <= @pivot[@relation[:age]] } - @relation.where(@relation[:age].lteq(@pivot[@relation[:age]])).should have_rows(expected) - end - - it "finds rows with a greater than predicate" do - expected = @expected.select { |r| r[@relation[:age]] > @pivot[@relation[:age]] } - @relation.where(@relation[:age].gt(@pivot[@relation[:age]])).should have_rows(expected) - end - - it "finds rows with a greater than or equal to predicate" do - expected = @expected.select { |r| r[@relation[:age]] >= @pivot[@relation[:age]] } - @relation.where(@relation[:age].gteq(@pivot[@relation[:age]])).should have_rows(expected) - end - - it "finds rows with a matches predicate" - - it "finds rows with an in predicate" do - pending - set = @expected[1..(@expected.length/2+1)] - @relation.all(:id.in => set.map { |r| r.id }).should have_resources(set) - end - end -end - module Arel describe "Relation" do - before :all do @engine = Testing::Engine.new @relation = Model.build do |r| @@ -113,6 +27,5 @@ module Arel @engine.rows.should == [[1, 'Foo', 10]] end end - end end \ No newline at end of file -- cgit v1.2.3