aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGareth Rees <gareth@mysociety.org>2014-03-25 11:03:12 +0000
committerGareth Rees <gareth@mysociety.org>2014-03-25 15:14:49 +0000
commit9fbca08732650407f697b7d76eee174968e15cdc (patch)
tree0c60cd57867c9b0d0793f09177a1704a2bb2f780
parent7a108776e4f45b10ef5956326fdd9c66514d1ddd (diff)
Split factories in to individual files
Factories are loaded automatically from: - test/factories.rb - spec/factories.rb - test/factories/*.rb - spec/factories/*.rb Keeping factories per-model helps navigation, especially when they get more complex with traits and inheritance.
-rw-r--r--spec/factories.rb196
-rw-r--r--spec/factories/comments.rb19
-rw-r--r--spec/factories/foi_attchments.rb15
-rw-r--r--spec/factories/incoming_messages.rb46
-rw-r--r--spec/factories/info_request_batches.rb9
-rw-r--r--spec/factories/info_requests.rb47
-rw-r--r--spec/factories/outgoing_messages.rb29
-rw-r--r--spec/factories/public_bodies.rb12
-rw-r--r--spec/factories/public_body_change_requests.rb16
-rw-r--r--spec/factories/raw_emails.rb5
-rw-r--r--spec/factories/track_things.rb10
-rw-r--r--spec/factories/users.rb16
12 files changed, 227 insertions, 193 deletions
diff --git a/spec/factories.rb b/spec/factories.rb
index e3990977e..7dec41aaf 100644
--- a/spec/factories.rb
+++ b/spec/factories.rb
@@ -1,196 +1,6 @@
+# Factories are defined in spec/factories/*.rb
+#
+# You can use this file to define shared sequences
FactoryGirl.define do
- sequence(:email) { |n| "person#{n}@example.com" }
- sequence(:name) { |n| "Example Public Body #{n}" }
- sequence(:short_name) { |n| "Example Body #{n}" }
-
- factory :foi_attachment do
- factory :body_text do
- content_type 'text/plain'
- body { 'hereisthetext' }
- end
- factory :pdf_attachment do
- content_type 'application/pdf'
- filename 'interesting.pdf'
- body { load_file_fixture('interesting.pdf') }
- end
- end
-
- factory :incoming_message do
- info_request
- raw_email
- last_parsed { 1.week.ago }
- sent_at { 1.week.ago }
-
- after_create do |incoming_message, evaluator|
- FactoryGirl.create(:body_text,
- :incoming_message => incoming_message,
- :url_part_number => 1)
- end
-
- factory :plain_incoming_message do
- last_parsed { nil }
- sent_at { nil }
- after_create do |incoming_message, evaluator|
- data = load_file_fixture('incoming-request-plain.email')
- data.gsub!('EMAIL_FROM', 'Bob Responder <bob@example.com>')
- incoming_message.raw_email.data = data
- incoming_message.raw_email.save!
- end
- end
-
- factory :incoming_message_with_attachments do
- # foi_attachments_count is declared as an ignored attribute and available in
- # attributes on the factory, as well as the callback via the evaluator
- ignore do
- foi_attachments_count 2
- end
-
- # the after(:create) yields two values; the incoming_message instance itself and the
- # evaluator, which stores all values from the factory, including ignored
- # attributes;
- after_create do |incoming_message, evaluator|
- evaluator.foi_attachments_count.times do |count|
- FactoryGirl.create(:pdf_attachment,
- :incoming_message => incoming_message,
- :url_part_number => count+2)
- end
- end
- end
- end
-
- factory :raw_email
-
- factory :outgoing_message do
- factory :initial_request do
- ignore do
- status 'ready'
- message_type 'initial_request'
- body 'Some information please'
- what_doing 'normal_sort'
- end
- end
- factory :internal_review_request do
- ignore do
- status 'ready'
- message_type 'followup'
- body 'I want a review'
- what_doing 'internal_review'
- end
- end
- initialize_with { OutgoingMessage.new({ :status => status,
- :message_type => message_type,
- :body => body,
- :what_doing => what_doing }) }
- after_create do |outgoing_message|
- outgoing_message.send_message
- end
- end
-
- factory :info_request do
- title "Example Title"
- public_body
- user
-
- after_create do |info_request, evaluator|
- FactoryGirl.create(:initial_request, :info_request => info_request)
- end
-
- factory :info_request_with_incoming do
- after_create do |info_request, evaluator|
- incoming_message = FactoryGirl.create(:incoming_message, :info_request => info_request)
- info_request.log_event("response", {:incoming_message_id => incoming_message.id})
- end
- end
-
- factory :info_request_with_plain_incoming do
- after_create do |info_request, evaluator|
- incoming_message = FactoryGirl.create(:plain_incoming_message, :info_request => info_request)
- info_request.log_event("response", {:incoming_message_id => incoming_message.id})
- end
- end
-
- factory :info_request_with_incoming_attachments do
- after_create do |info_request, evaluator|
- incoming_message = FactoryGirl.create(:incoming_message_with_attachments, :info_request => info_request)
- info_request.log_event("response", {:incoming_message_id => incoming_message.id})
- end
- end
-
- factory :info_request_with_internal_review_request do
- after_create do |info_request, evaluator|
- outgoing_message = FactoryGirl.create(:internal_review_request, :info_request => info_request)
- end
- end
-
- factory :external_request do
- user nil
- external_user_name 'External User'
- external_url 'http://www.example.org/request/external'
- end
-
- end
-
- factory :user do
- name 'Example User'
- email
- salt "-6116981980.392287733335677"
- hashed_password '6b7cd45a5f35fd83febc0452a799530398bfb6e8' # jonespassword
- email_confirmed true
- ban_text ""
- factory :admin_user do
- name 'Admin User'
- admin_level 'super'
- end
- end
-
- factory :public_body do
- name
- short_name
- request_email 'request@example.com'
- last_edit_editor "admin user"
- last_edit_comment "Making an edit"
- end
-
- factory :track_thing do
- association :tracking_user, :factory => :user
- track_medium 'email_daily'
- track_type 'search_query'
- track_query 'Example Query'
- end
-
- factory :public_body_change_request do
- user
- source_url 'http://www.example.com'
- notes 'Please'
- public_body_email 'new@example.com'
- factory :add_body_request do
- public_body_name 'A New Body'
- end
- factory :update_body_request do
- public_body
- end
- end
- factory :info_request_batch do
- title "Example title"
- user
- body "Some text"
- end
-
- factory :comment do
- user
- info_request
-
- body 'This a wise and helpful annotation.'
- comment_type 'request'
-
- factory :visible_comment do
- visible true
- end
-
- factory :hidden_comment do
- visible false
- end
- end
-
end
diff --git a/spec/factories/comments.rb b/spec/factories/comments.rb
new file mode 100644
index 000000000..1e0861dad
--- /dev/null
+++ b/spec/factories/comments.rb
@@ -0,0 +1,19 @@
+FactoryGirl.define do
+
+ factory :comment do
+ user
+ info_request
+
+ body 'This a wise and helpful annotation.'
+ comment_type 'request'
+
+ factory :visible_comment do
+ visible true
+ end
+
+ factory :hidden_comment do
+ visible false
+ end
+ end
+
+end
diff --git a/spec/factories/foi_attchments.rb b/spec/factories/foi_attchments.rb
new file mode 100644
index 000000000..d7a90efb8
--- /dev/null
+++ b/spec/factories/foi_attchments.rb
@@ -0,0 +1,15 @@
+FactoryGirl.define do
+
+ factory :foi_attachment do
+ factory :body_text do
+ content_type 'text/plain'
+ body { 'hereisthetext' }
+ end
+ factory :pdf_attachment do
+ content_type 'application/pdf'
+ filename 'interesting.pdf'
+ body { load_file_fixture('interesting.pdf') }
+ end
+ end
+
+end
diff --git a/spec/factories/incoming_messages.rb b/spec/factories/incoming_messages.rb
new file mode 100644
index 000000000..38ad98394
--- /dev/null
+++ b/spec/factories/incoming_messages.rb
@@ -0,0 +1,46 @@
+FactoryGirl.define do
+
+ factory :incoming_message do
+ info_request
+ raw_email
+ last_parsed { 1.week.ago }
+ sent_at { 1.week.ago }
+
+ after_create do |incoming_message, evaluator|
+ FactoryGirl.create(:body_text,
+ :incoming_message => incoming_message,
+ :url_part_number => 1)
+ end
+
+ factory :plain_incoming_message do
+ last_parsed { nil }
+ sent_at { nil }
+ after_create do |incoming_message, evaluator|
+ data = load_file_fixture('incoming-request-plain.email')
+ data.gsub!('EMAIL_FROM', 'Bob Responder <bob@example.com>')
+ incoming_message.raw_email.data = data
+ incoming_message.raw_email.save!
+ end
+ end
+
+ factory :incoming_message_with_attachments do
+ # foi_attachments_count is declared as an ignored attribute and available in
+ # attributes on the factory, as well as the callback via the evaluator
+ ignore do
+ foi_attachments_count 2
+ end
+
+ # the after(:create) yields two values; the incoming_message instance itself and the
+ # evaluator, which stores all values from the factory, including ignored
+ # attributes;
+ after_create do |incoming_message, evaluator|
+ evaluator.foi_attachments_count.times do |count|
+ FactoryGirl.create(:pdf_attachment,
+ :incoming_message => incoming_message,
+ :url_part_number => count+2)
+ end
+ end
+ end
+ end
+
+end
diff --git a/spec/factories/info_request_batches.rb b/spec/factories/info_request_batches.rb
new file mode 100644
index 000000000..960db6ec5
--- /dev/null
+++ b/spec/factories/info_request_batches.rb
@@ -0,0 +1,9 @@
+FactoryGirl.define do
+
+ factory :info_request_batch do
+ title "Example title"
+ user
+ body "Some text"
+ end
+
+end
diff --git a/spec/factories/info_requests.rb b/spec/factories/info_requests.rb
new file mode 100644
index 000000000..8052625cd
--- /dev/null
+++ b/spec/factories/info_requests.rb
@@ -0,0 +1,47 @@
+FactoryGirl.define do
+
+ factory :info_request do
+ title "Example Title"
+ public_body
+ user
+
+ after_create do |info_request, evaluator|
+ FactoryGirl.create(:initial_request, :info_request => info_request)
+ end
+
+ factory :info_request_with_incoming do
+ after_create do |info_request, evaluator|
+ incoming_message = FactoryGirl.create(:incoming_message, :info_request => info_request)
+ info_request.log_event("response", {:incoming_message_id => incoming_message.id})
+ end
+ end
+
+ factory :info_request_with_plain_incoming do
+ after_create do |info_request, evaluator|
+ incoming_message = FactoryGirl.create(:plain_incoming_message, :info_request => info_request)
+ info_request.log_event("response", {:incoming_message_id => incoming_message.id})
+ end
+ end
+
+ factory :info_request_with_incoming_attachments do
+ after_create do |info_request, evaluator|
+ incoming_message = FactoryGirl.create(:incoming_message_with_attachments, :info_request => info_request)
+ info_request.log_event("response", {:incoming_message_id => incoming_message.id})
+ end
+ end
+
+ factory :info_request_with_internal_review_request do
+ after_create do |info_request, evaluator|
+ outgoing_message = FactoryGirl.create(:internal_review_request, :info_request => info_request)
+ end
+ end
+
+ factory :external_request do
+ user nil
+ external_user_name 'External User'
+ external_url 'http://www.example.org/request/external'
+ end
+
+ end
+
+end
diff --git a/spec/factories/outgoing_messages.rb b/spec/factories/outgoing_messages.rb
new file mode 100644
index 000000000..d1ed25093
--- /dev/null
+++ b/spec/factories/outgoing_messages.rb
@@ -0,0 +1,29 @@
+FactoryGirl.define do
+
+ factory :outgoing_message do
+ factory :initial_request do
+ ignore do
+ status 'ready'
+ message_type 'initial_request'
+ body 'Some information please'
+ what_doing 'normal_sort'
+ end
+ end
+ factory :internal_review_request do
+ ignore do
+ status 'ready'
+ message_type 'followup'
+ body 'I want a review'
+ what_doing 'internal_review'
+ end
+ end
+ initialize_with { OutgoingMessage.new({ :status => status,
+ :message_type => message_type,
+ :body => body,
+ :what_doing => what_doing }) }
+ after_create do |outgoing_message|
+ outgoing_message.send_message
+ end
+ end
+
+end
diff --git a/spec/factories/public_bodies.rb b/spec/factories/public_bodies.rb
new file mode 100644
index 000000000..44769f7c2
--- /dev/null
+++ b/spec/factories/public_bodies.rb
@@ -0,0 +1,12 @@
+FactoryGirl.define do
+
+ factory :public_body do
+ sequence(:name) { |n| "Example Public Body #{n}" }
+ sequence(:short_name) { |n| "Example Body #{n}" }
+ request_email 'request@example.com'
+ last_edit_editor "admin user"
+ last_edit_comment "Making an edit"
+ end
+
+
+end
diff --git a/spec/factories/public_body_change_requests.rb b/spec/factories/public_body_change_requests.rb
new file mode 100644
index 000000000..2bacb9b9b
--- /dev/null
+++ b/spec/factories/public_body_change_requests.rb
@@ -0,0 +1,16 @@
+FactoryGirl.define do
+
+ factory :public_body_change_request do
+ user
+ source_url 'http://www.example.com'
+ notes 'Please'
+ public_body_email 'new@example.com'
+ factory :add_body_request do
+ public_body_name 'A New Body'
+ end
+ factory :update_body_request do
+ public_body
+ end
+ end
+
+end
diff --git a/spec/factories/raw_emails.rb b/spec/factories/raw_emails.rb
new file mode 100644
index 000000000..30fb24c37
--- /dev/null
+++ b/spec/factories/raw_emails.rb
@@ -0,0 +1,5 @@
+FactoryGirl.define do
+
+ factory :raw_email
+
+end
diff --git a/spec/factories/track_things.rb b/spec/factories/track_things.rb
new file mode 100644
index 000000000..d1a937c02
--- /dev/null
+++ b/spec/factories/track_things.rb
@@ -0,0 +1,10 @@
+FactoryGirl.define do
+
+ factory :track_thing do
+ association :tracking_user, :factory => :user
+ track_medium 'email_daily'
+ track_type 'search_query'
+ track_query 'Example Query'
+ end
+
+end
diff --git a/spec/factories/users.rb b/spec/factories/users.rb
new file mode 100644
index 000000000..ab782fbf7
--- /dev/null
+++ b/spec/factories/users.rb
@@ -0,0 +1,16 @@
+FactoryGirl.define do
+
+ factory :user do
+ name 'Example User'
+ sequence(:email) { |n| "person#{n}@example.com" }
+ salt "-6116981980.392287733335677"
+ hashed_password '6b7cd45a5f35fd83febc0452a799530398bfb6e8' # jonespassword
+ email_confirmed true
+ ban_text ""
+ factory :admin_user do
+ name 'Admin User'
+ admin_level 'super'
+ end
+ end
+
+end