From 30b0118f2523a04d6777c8ec79b3181c128b3bf8 Mon Sep 17 00:00:00 2001 From: Alban Peignier Date: Tue, 17 Apr 2012 16:08:38 +0200 Subject: Fixes all specs. Refs #6 --- spec/controllers/help_controller_spec.rb | 9 ----- spec/controllers/referentials_controller_spec.rb | 2 ++ spec/factories/user.rb | 5 +++ spec/requests/companies_spec.rb | 2 ++ spec/requests/lines_spec.rb | 1 + spec/requests/networks_spec.rb | 2 ++ spec/requests/referentials_spec.rb | 19 +++++++--- spec/spec_helper.rb | 9 +++-- spec/support/devise.rb | 45 ++++++++++++++++++++++++ spec/views/companies/index.html.erb_spec.rb | 3 +- spec/views/layouts/application.html.erb_spec.rb | 20 +++++++++++ spec/views/lines/show.html.erb_spec.rb | 1 + spec/views/networks/index.html.erb_spec.rb | 5 +-- spec/views/networks/show.html.erb_spec.rb | 9 ++--- 14 files changed, 110 insertions(+), 22 deletions(-) delete mode 100644 spec/controllers/help_controller_spec.rb create mode 100644 spec/factories/user.rb create mode 100644 spec/support/devise.rb create mode 100644 spec/views/layouts/application.html.erb_spec.rb (limited to 'spec') diff --git a/spec/controllers/help_controller_spec.rb b/spec/controllers/help_controller_spec.rb deleted file mode 100644 index 2ad167012..000000000 --- a/spec/controllers/help_controller_spec.rb +++ /dev/null @@ -1,9 +0,0 @@ -require 'spec_helper' - -describe HelpController do - - it "should render static files from app/views/help" do - get "/" - end - -end diff --git a/spec/controllers/referentials_controller_spec.rb b/spec/controllers/referentials_controller_spec.rb index eba195a1f..0bed2b21d 100644 --- a/spec/controllers/referentials_controller_spec.rb +++ b/spec/controllers/referentials_controller_spec.rb @@ -2,4 +2,6 @@ require 'spec_helper' describe ReferentialsController do + login_user + end diff --git a/spec/factories/user.rb b/spec/factories/user.rb new file mode 100644 index 000000000..e6a00c6af --- /dev/null +++ b/spec/factories/user.rb @@ -0,0 +1,5 @@ +Factory.define :user do |f| + f.sequence(:email) { |n| "chouette#{n}@dryade.priv" } + f.password "secret" + f.password_confirmation "secret" +end diff --git a/spec/requests/companies_spec.rb b/spec/requests/companies_spec.rb index be3f28c9d..359b8fd85 100644 --- a/spec/requests/companies_spec.rb +++ b/spec/requests/companies_spec.rb @@ -1,6 +1,8 @@ require 'spec_helper' describe "Companies" do + login_user + let!(:referential) { Factory(:referential).switch } let!(:companies) { referential; Array.new(2) { Factory(:company) } } diff --git a/spec/requests/lines_spec.rb b/spec/requests/lines_spec.rb index d5c9eea2f..13192a0f3 100644 --- a/spec/requests/lines_spec.rb +++ b/spec/requests/lines_spec.rb @@ -1,6 +1,7 @@ require 'spec_helper' describe "Lines" do + login_user let!(:referential) { Factory(:referential).switch } let!(:lines) { referential; Array.new(2) { Factory(:line) } } diff --git a/spec/requests/networks_spec.rb b/spec/requests/networks_spec.rb index b8b7fc8b4..395504157 100644 --- a/spec/requests/networks_spec.rb +++ b/spec/requests/networks_spec.rb @@ -1,6 +1,8 @@ require 'spec_helper' describe "Networks" do + login_user + let!(:referential) { Factory(:referential).switch } let!(:networks) { referential; Array.new(2) { Factory(:network) } } diff --git a/spec/requests/referentials_spec.rb b/spec/requests/referentials_spec.rb index d120f609b..073674a06 100644 --- a/spec/requests/referentials_spec.rb +++ b/spec/requests/referentials_spec.rb @@ -2,14 +2,25 @@ require 'spec_helper' describe "Referentials" do + login_user describe "index" do - let!(:referentials) { Array.new(2) { Factory(:referential) } } - it "should show n referentials" do + it "should support no referential" do visit referentials_path - page.should have_content(referentials.first.name) - page.should have_content(referentials.last.name) + page.should have_content("Espace de données") + end + + context "when several referentials exist" do + + let!(:referentials) { Array.new(2) { Factory(:referential) } } + + it "should show n referentials" do + visit referentials_path + page.should have_content(referentials.first.name) + page.should have_content(referentials.last.name) + end + end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 89d7a3f7b..1caf5560b 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -40,16 +40,21 @@ RSpec.configure do |config| config.before(:suite) do DatabaseCleaner.strategy = :transaction - DatabaseCleaner.clean_with( :truncation, {:except => %w[spatial_ref_sys geometry_columns]} ) + + Apartment.database_names.each do |database| + Apartment::Database.drop(database) + end + DatabaseCleaner.clean_with(:truncation, {:except => %w[spatial_ref_sys geometry_columns]} ) end config.before(:each) do + Apartment::Database.switch(nil) DatabaseCleaner.start end config.after(:each) do - Apartment::Database.switch(nil) DatabaseCleaner.clean + Apartment::Database.switch(nil) end end diff --git a/spec/support/devise.rb b/spec/support/devise.rb new file mode 100644 index 000000000..d4e37dbe6 --- /dev/null +++ b/spec/support/devise.rb @@ -0,0 +1,45 @@ +module DeviseRequestHelper + include Warden::Test::Helpers + + def login_user + @user ||= FactoryGirl.create :user + login_as @user, :scope => :user + # post_via_redirect user_session_path, 'user[email]' => @user.email, 'user[password]' => @user.password + end + + def self.included(base) + base.class_eval do + extend ClassMethods + end + end + + module ClassMethods + + def login_user + before(:each) do + login_user + end + after(:each) do + Warden.test_reset! + end + end + + end + +end + +module DeviseControllerhelper + def login_user + before(:each) do + @request.env["devise.mapping"] = Devise.mappings[:user] + sign_in Factory.create(:user) + end + end +end + +RSpec.configure do |config| + config.include Devise::TestHelpers, :type => :controller + config.extend DeviseControllerhelper, :type => :controller + + config.include DeviseRequestHelper, :type => :request +end diff --git a/spec/views/companies/index.html.erb_spec.rb b/spec/views/companies/index.html.erb_spec.rb index 9f4b00649..3c2df6c45 100644 --- a/spec/views/companies/index.html.erb_spec.rb +++ b/spec/views/companies/index.html.erb_spec.rb @@ -3,7 +3,8 @@ require 'spec_helper' describe "/companies/index" do let!(:referential) { assign( :referential, Factory(:referential) ) } - let!(:companies) { assign( :companies, Array.new(2) { Factory(:company) } ) } + let!(:companies) { assign :companies, Array.new(2) { Factory(:company) }.paginate } + let!(:search) { assign :q, Ransack::Search.new(Chouette::Company) } it "should render a show link for each group" do render diff --git a/spec/views/layouts/application.html.erb_spec.rb b/spec/views/layouts/application.html.erb_spec.rb new file mode 100644 index 000000000..048055abf --- /dev/null +++ b/spec/views/layouts/application.html.erb_spec.rb @@ -0,0 +1,20 @@ +require 'spec_helper' + +describe "/layouts/application" do + + before(:each) do + view.stub :user_signed_in? => true + end + + context "when Referential is a new record" do + + let(:referential) { Referential.new } + + it "should display referential name as title" do + render + rendered.should_not have_selector("h1") + end + + end + +end diff --git a/spec/views/lines/show.html.erb_spec.rb b/spec/views/lines/show.html.erb_spec.rb index edb7e8741..894956ed0 100644 --- a/spec/views/lines/show.html.erb_spec.rb +++ b/spec/views/lines/show.html.erb_spec.rb @@ -4,6 +4,7 @@ describe "/lines/show" do let!(:referential) { assign :referential, Factory(:referential) } let!(:line) { assign :line, Factory(:line) } + let!(:map) { assign(:map, mock(:to_html => '
')) } it "should render h2 with the line name" do render diff --git a/spec/views/networks/index.html.erb_spec.rb b/spec/views/networks/index.html.erb_spec.rb index bad1ffd9d..f843a944e 100644 --- a/spec/views/networks/index.html.erb_spec.rb +++ b/spec/views/networks/index.html.erb_spec.rb @@ -2,8 +2,9 @@ require 'spec_helper' describe "/networks/index" do - let!(:referential) { assign( :referential, Factory(:referential) ) } - let!(:networks) { assign( :networks, Array.new(2) { Factory(:network) } ) } + let!(:referential) { assign :referential, Factory(:referential) } + let!(:networks) { assign :networks, Array.new(2){ Factory(:network) }.paginate } + let!(:search) { assign :q, Ransack::Search.new(Chouette::Network) } it "should render a show link for each group" do render diff --git a/spec/views/networks/show.html.erb_spec.rb b/spec/views/networks/show.html.erb_spec.rb index e4b2093de..fae79eb29 100644 --- a/spec/views/networks/show.html.erb_spec.rb +++ b/spec/views/networks/show.html.erb_spec.rb @@ -4,16 +4,17 @@ describe "/networks/show" do let!(:referential) { assign(:referential, Factory(:referential)) } let!(:network) { assign(:network, Factory(:network)) } + let!(:map) { assign(:map, mock(:to_html => '
')) } it "should render h2 with the network name" do render rendered.should have_selector("h2", :text => Regexp.new(network.name)) end - # it "should display a map with class 'network'" do - # render - # rendered.should have_selector("#map", :class => 'network') - # end + it "should display a map with class 'network'" do + render + rendered.should have_selector("#map") + end it "should render a link to edit the network" do render -- cgit v1.2.3