diff options
| -rw-r--r-- | app/views/layouts/_user_links.erb | 2 | ||||
| -rw-r--r-- | lib/tasks/ci.rake | 2 | ||||
| -rw-r--r-- | spec/controllers/help_controller_spec.rb | 9 | ||||
| -rw-r--r-- | spec/controllers/referentials_controller_spec.rb | 2 | ||||
| -rw-r--r-- | spec/factories/user.rb | 5 | ||||
| -rw-r--r-- | spec/requests/companies_spec.rb | 2 | ||||
| -rw-r--r-- | spec/requests/lines_spec.rb | 1 | ||||
| -rw-r--r-- | spec/requests/networks_spec.rb | 2 | ||||
| -rw-r--r-- | spec/requests/referentials_spec.rb | 19 | ||||
| -rw-r--r-- | spec/spec_helper.rb | 9 | ||||
| -rw-r--r-- | spec/support/devise.rb | 45 | ||||
| -rw-r--r-- | spec/views/companies/index.html.erb_spec.rb | 3 | ||||
| -rw-r--r-- | spec/views/layouts/application.html.erb_spec.rb | 20 | ||||
| -rw-r--r-- | spec/views/lines/show.html.erb_spec.rb | 1 | ||||
| -rw-r--r-- | spec/views/networks/index.html.erb_spec.rb | 5 | ||||
| -rw-r--r-- | spec/views/networks/show.html.erb_spec.rb | 9 | 
16 files changed, 112 insertions, 24 deletions
| diff --git a/app/views/layouts/_user_links.erb b/app/views/layouts/_user_links.erb index db3b0c2b8..b33f8bd8e 100644 --- a/app/views/layouts/_user_links.erb +++ b/app/views/layouts/_user_links.erb @@ -2,7 +2,7 @@    <li class="home"><%= link_to  t('layouts.home'), root_path %></li>    <% if user_signed_in?  %> -  <li> | </li>   +  <li> | </li>    <li><%= link_to t('layouts.user.profile'), edit_user_registration_path %></li>    <li> | </li>     <li><%= link_to t('layouts.user.sign_out'), destroy_user_session_path, :method => :delete %></li> diff --git a/lib/tasks/ci.rake b/lib/tasks/ci.rake index 28a3bded9..9c541129b 100644 --- a/lib/tasks/ci.rake +++ b/lib/tasks/ci.rake @@ -5,6 +5,6 @@ namespace :ci do    task :deploy do      cp "workspace.war", "/var/lib/tomcat6/webapps/chouette2.war"    end -  task :build => ["db:migrate", "war", "ci:deploy"] +  task :build => ["db:migrate", "spec", "war", "ci:deploy"]  end 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 => '<div id="map"/>')) }    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 => '<div id="map"/>')) }    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 | 
