aboutsummaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/controllers/help_controller_spec.rb91
-rw-r--r--spec/models/contact_validator_spec.rb49
2 files changed, 109 insertions, 31 deletions
diff --git a/spec/controllers/help_controller_spec.rb b/spec/controllers/help_controller_spec.rb
index cc024f840..f92323f50 100644
--- a/spec/controllers/help_controller_spec.rb
+++ b/spec/controllers/help_controller_spec.rb
@@ -1,48 +1,81 @@
# -*- coding: utf-8 -*-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
-describe HelpController, "when using help" do
+describe HelpController do
render_views
- it "shows the about page" do
- get :about
- end
+ describe :about do
- it "shows contact form" do
- get :contact
- end
+ it 'shows the about page' do
+ get :about
+ response.should be_success
+ response.should render_template('help/about')
+ end
- it "sends a contact message" do
- post :contact, { :contact => {
- :name => "Vinny Vanilli",
- :email => "vinny@localhost",
- :subject => "Why do I have such an ace name?",
- :message => "You really should know!!!\n\nVinny",
- }, :submitted_contact_form => 1
- }
- response.should redirect_to(:controller => 'general', :action => 'frontpage')
-
- deliveries = ActionMailer::Base.deliveries
- deliveries.size.should == 1
- deliveries[0].body.should include("really should know")
- deliveries.clear
end
- describe 'when requesting a page in a supported locale ' do
+ describe 'GET contact' do
- before do
- # Prepend our fixture templates
- fixture_theme_path = File.join(Rails.root, 'spec', 'fixtures', 'theme_views', 'theme_one')
- controller.prepend_view_path fixture_theme_path
+ it 'shows contact form' do
+ get :contact
+ response.should be_success
+ response.should render_template('help/contact')
end
- it 'should render the locale-specific template if available' do
- get :contact, {:locale => 'es'}
- response.body.should match('contáctenos theme one')
+ describe 'when requesting a page in a supported locale' do
+
+ before do
+ # Prepend our fixture templates
+ fixture_theme_path = File.join(Rails.root, 'spec', 'fixtures', 'theme_views', 'theme_one')
+ controller.prepend_view_path fixture_theme_path
+ end
+
+ it 'should render the locale-specific template if available' do
+ get :contact, {:locale => 'es'}
+ response.body.should match('contáctenos theme one')
+ end
+
end
end
+ describe 'POST contact' do
+
+ it 'sends a contact message' do
+ post :contact, { :contact => {
+ :name => 'Vinny Vanilli',
+ :email => 'vinny@localhost',
+ :subject => 'Why do I have such an ace name?',
+ :comment => '',
+ :message => "You really should know!!!\n\nVinny",
+ }, :submitted_contact_form => 1
+ }
+ response.should redirect_to(frontpage_path)
+
+ deliveries = ActionMailer::Base.deliveries
+ deliveries.size.should == 1
+ deliveries[0].body.should include('really should know')
+ deliveries.clear
+ end
+
+ it 'has rudimentary spam protection' do
+ post :contact, { :contact => {
+ :name => 'Vinny Vanilli',
+ :email => 'vinny@localhost',
+ :subject => 'Why do I have such an ace name?',
+ :comment => 'I AM A SPAMBOT',
+ :message => "You really should know!!!\n\nVinny",
+ }, :submitted_contact_form => 1
+ }
+
+ response.should redirect_to(frontpage_path)
+
+ deliveries = ActionMailer::Base.deliveries
+ deliveries.size.should == 0
+ deliveries.clear
+ end
+
+ end
end
diff --git a/spec/models/contact_validator_spec.rb b/spec/models/contact_validator_spec.rb
index 9ea0fac49..0f5403967 100644
--- a/spec/models/contact_validator_spec.rb
+++ b/spec/models/contact_validator_spec.rb
@@ -1,8 +1,53 @@
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
-describe ContactValidator, " when blah" do
- before do
+describe ContactValidator do
+
+ describe :new do
+
+ let(:valid_params) do
+ { :name => "Vinny Vanilli",
+ :email => "vinny@localhost",
+ :subject => "Why do I have such an ace name?",
+ :message => "You really should know!!!\n\nVinny" }
+ end
+
+ it 'validates specified attributes' do
+ ContactValidator.new(valid_params).should be_valid
+ end
+
+ it 'validates name is present' do
+ valid_params.except!(:name)
+ validator = ContactValidator.new(valid_params)
+ expect(validator).to have(1).error_on(:name)
+ end
+
+ it 'validates email is present' do
+ valid_params.except!(:email)
+ validator = ContactValidator.new(valid_params)
+ # We have 2 errors on email because of the format validator
+ expect(validator).to have(2).errors_on(:email)
+ end
+
+ it 'validates email format' do
+ valid_params.merge!({:email => 'not-an-email'})
+ validator = ContactValidator.new(valid_params)
+ expect(validator.errors_on(:email)).to include("Email doesn't look like a valid address")
+ end
+
+ it 'validates subject is present' do
+ valid_params.except!(:subject)
+ validator = ContactValidator.new(valid_params)
+ expect(validator).to have(1).error_on(:subject)
+ end
+
+ it 'validates message is present' do
+ valid_params.except!(:message)
+ validator = ContactValidator.new(valid_params)
+ expect(validator).to have(1).error_on(:message)
+ end
+
end
+
end