aboutsummaryrefslogtreecommitdiffstats
path: root/spec/models/xapian_spec.rb
diff options
context:
space:
mode:
authorRobin Houston <robin.houston@gmail.com>2012-01-26 23:21:12 +0000
committerRobin Houston <robin.houston@gmail.com>2012-01-26 23:21:12 +0000
commit24bbaa5afac5ce27c351e3b460be1b0182446ba1 (patch)
tree3527992bb6e08e13fa1e7d686663bf10f491cd9e /spec/models/xapian_spec.rb
parent00aa3e5675d2137b55e8e0bf494f4a2078a5151f (diff)
Refactor test code so new test data can be added
Previously many of the tests made assumptions about the global structure of the test data set: the total number of requests, for example, or the names of all public bodies. This makes it difficult to add to the test data. This change is intended to make the test data easier to extend by eliminating such global assumptions.
Diffstat (limited to 'spec/models/xapian_spec.rb')
-rw-r--r--spec/models/xapian_spec.rb28
1 files changed, 11 insertions, 17 deletions
diff --git a/spec/models/xapian_spec.rb b/spec/models/xapian_spec.rb
index 412146b53..6f4f49373 100644
--- a/spec/models/xapian_spec.rb
+++ b/spec/models/xapian_spec.rb
@@ -60,14 +60,11 @@ describe PublicBody, " when indexing public bodies with Xapian" do
xapian_object.results.size.should == 1
xapian_object.results[0][:model].should == public_bodies(:humpadink_public_body)
- info_request_events(:badger_outgoing_message_event).destroy
- outgoing_messages(:badger_outgoing_message).destroy
- info_requests(:badger_request).destroy
- public_bodies(:humpadink_public_body).destroy
+ public_bodies(:forlorn_public_body).destroy
update_xapian_index
- xapian_object = InfoRequest.full_search([PublicBody], "albatross", 'created_at', true, nil, 100, 1)
- xapian_object.results.size.should == 0
+ xapian_object = InfoRequest.full_search([PublicBody], "lonely", 'created_at', true, nil, 100, 1)
+ xapian_object.results.should == []
end
end
@@ -130,7 +127,7 @@ describe PublicBody, " when indexing requests by body they are to" do
end
describe User, " when indexing requests by user they are from" do
- fixtures :users, :info_requests, :raw_emails, :incoming_messages, :outgoing_messages, :comments, :info_request_events, :track_things
+ fixtures :users, :info_requests, :raw_emails, :incoming_messages, :outgoing_messages, :comments, :info_request_events, :track_things, :public_bodies, :public_body_versions, :public_body_translations
before(:each) do
load_raw_emails_data(raw_emails)
rebuild_xapian_index
@@ -138,13 +135,13 @@ describe User, " when indexing requests by user they are from" do
it "should find requests from the user" do
xapian_object = InfoRequest.full_search([InfoRequestEvent], "requested_by:bob_smith", 'created_at', true, nil, 100, 1)
- xapian_object.results.size.should == 5
+ xapian_object.results.map{|x|x[:model]}.should =~ InfoRequestEvent.all(:conditions => "info_request_id in (select id from info_requests where user_id = #{users(:bob_smith_user).id})")
end
it "should find just the sent message events from a particular user" do
# def InfoRequest.full_search(models, query, order, ascending, collapse, per_page, page)
xapian_object = InfoRequest.full_search([InfoRequestEvent], "requested_by:bob_smith variety:sent", 'created_at', true, nil, 100, 1)
- xapian_object.results.size.should == 3
+ xapian_object.results.map{|x|x[:model]}.should =~ InfoRequestEvent.all(:conditions => "info_request_id in (select id from info_requests where user_id = #{users(:bob_smith_user).id}) and event_type = 'sent'")
xapian_object.results[2][:model].should == info_request_events(:useless_outgoing_message_event)
xapian_object.results[1][:model].should == info_request_events(:silly_outgoing_message_event)
end
@@ -159,8 +156,7 @@ describe User, " when indexing requests by user they are from" do
# def InfoRequest.full_search(models, query, order, ascending, collapse, per_page, page)
xapian_object = InfoRequest.full_search([InfoRequestEvent], "requested_by:bob_smith", 'created_at', true, 'request_collapse', 100, 1)
- xapian_object.results.size.should == 2
- xapian_object.results[1][:model].should == info_request_events(:silly_comment_event)
+ xapian_object.results.map{|x|x[:model].info_request}.should =~ InfoRequest.all(:conditions => "user_id = #{users(:bob_smith_user).id}")
end
it "should not get confused searching for requests when one user has a name which has same stem as another" do
@@ -190,7 +186,7 @@ describe User, " when indexing requests by user they are from" do
it "should update index correctly when URL name of user changes" do
# initial search
xapian_object = InfoRequest.full_search([InfoRequestEvent], "requested_by:bob_smith", 'created_at', true, nil, 100, 1)
- xapian_object.results.size.should == 5
+ xapian_object.results.map{|x|x[:model]}.should =~ InfoRequestEvent.all(:conditions => "info_request_id in (select id from info_requests where user_id = #{users(:bob_smith_user).id})")
models_found_before = xapian_object.results.map { |x| x[:model] }
# change the URL name of the body
@@ -204,9 +200,7 @@ describe User, " when indexing requests by user they are from" do
xapian_object = InfoRequest.full_search([InfoRequestEvent], "requested_by:bob_smith", 'created_at', true, nil, 100, 1)
xapian_object.results.size.should == 0
xapian_object = InfoRequest.full_search([InfoRequestEvent], "requested_by:robert_smith", 'created_at', true, nil, 100, 1)
- xapian_object.results.size.should == 5
models_found_after = xapian_object.results.map { |x| x[:model] }
-
models_found_before.should == models_found_after
end
end
@@ -347,7 +341,7 @@ describe PublicBody, " when only indexing selected things on a rebuild" do
xapian_object = InfoRequest.full_search([PublicBody], "frobzn", 'created_at', true, nil, 100, 1)
xapian_object.results.size.should == 0
xapian_object = InfoRequest.full_search([PublicBody], "variety:authority", 'created_at', true, nil, 100, 1)
- xapian_object.results.size.should == 2
+ xapian_object.results.map{|x|x[:model]}.should =~ PublicBody.all
# only reindex 'tag' and text
dropfirst = true
terms = "U"
@@ -370,7 +364,7 @@ describe PublicBody, " when only indexing selected things on a rebuild" do
xapian_object = InfoRequest.full_search([PublicBody], "frobzn", 'created_at', true, nil, 100, 1)
xapian_object.results.size.should == 1
xapian_object = InfoRequest.full_search([PublicBody], "variety:authority", 'created_at', true, nil, 100, 1)
- xapian_object.results.size.should == 2
+ xapian_object.results.map{|x|x[:model]}.should =~ PublicBody.all
# only reindex 'variety' term, blowing away existing data
dropfirst = true
rebuild_xapian_index(terms, values, texts, dropfirst)
@@ -379,7 +373,7 @@ describe PublicBody, " when only indexing selected things on a rebuild" do
xapian_object = InfoRequest.full_search([PublicBody], "frobzn", 'created_at', true, nil, 100, 1)
xapian_object.results.size.should == 0
xapian_object = InfoRequest.full_search([PublicBody], "variety:authority", 'created_at', true, nil, 100, 1)
- xapian_object.results.size.should == 2
+ xapian_object.results.map{|x|x[:model]}.should =~ PublicBody.all
end
end