diff options
| author | Luc Donnet | 2018-02-09 15:04:58 +0100 | 
|---|---|---|
| committer | Luc Donnet | 2018-02-09 15:04:58 +0100 | 
| commit | 7b62e86c4d5cc878fd9178d2296c3f5498bcd1cb (patch) | |
| tree | e97abcf575f059463fda54f15dba045f08467402 | |
| parent | 8147a3bd838aaaa959c3f488c1bc9016a5401645 (diff) | |
| parent | a68053c85fdb55e43fdf1ae7d9aba95e31a148bb (diff) | |
| download | chouette-core-7b62e86c4d5cc878fd9178d2296c3f5498bcd1cb.tar.bz2 | |
Merge branch 'master' into 4126-add-i18n-js
60 files changed, 659 insertions, 65 deletions
| @@ -16,7 +16,7 @@ gem 'uglifier', '~> 2.7.2'  gem 'coffee-rails', '~> 4.0.0'  # Webpacker -gem 'webpacker', '3.0.2' +gem 'webpacker', '3.2.1'  # Use jquery as the JavaScript library  gem 'jquery-rails', '~> 3.1.4' # Update to v4 for Rails 4.2 @@ -177,6 +177,7 @@ group :test do    gem 'simplecov-rcov', :require => false    gem 'htmlbeautifier'    gem 'timecop' +  gem 'rspec-snapshot'  end  group :test, :development, :dev do diff --git a/Gemfile.lock b/Gemfile.lock index a6f54f9cb..046167e69 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -269,7 +269,7 @@ GEM      htmlbeautifier (1.3.1)      httparty (0.14.0)        multi_xml (>= 0.5.2) -    i18n (0.9.3) +    i18n (0.9.4)        concurrent-ruby (~> 1.0)      i18n-js (3.0.4)        i18n (~> 0.6, >= 0.6.6) @@ -320,7 +320,7 @@ GEM      mime-types-data (3.2016.0521)      mimemagic (0.3.2)      mini_portile2 (2.3.0) -    minitest (5.11.2) +    minitest (5.11.3)      money (6.10.1)        i18n (>= 0.6.4, < 1.0)      multi_json (1.12.1) @@ -449,6 +449,10 @@ GEM      roo (2.7.1)        nokogiri (~> 1)        rubyzip (~> 1.1, < 2.0.0) +    rspec (3.5.0) +      rspec-core (~> 3.5.0) +      rspec-expectations (~> 3.5.0) +      rspec-mocks (~> 3.5.0)      rspec-core (3.5.4)        rspec-support (~> 3.5.0)      rspec-expectations (3.5.0) @@ -465,6 +469,8 @@ GEM        rspec-expectations (~> 3.5.0)        rspec-mocks (~> 3.5.0)        rspec-support (~> 3.5.0) +    rspec-snapshot (0.1.1) +      rspec (> 3.0.0)      rspec-support (3.5.0)      ruby-filemagic (0.7.2)      ruby-graphviz (1.2.3) @@ -555,7 +561,7 @@ GEM        json (>= 1.8, < 3.0)        parser (>= 2.3.0.7)        rainbow (>= 1.99.1, < 3.0) -    tzinfo (1.2.4) +    tzinfo (1.2.5)        thread_safe (~> 0.1)      uglifier (2.7.2)        execjs (>= 0.3.0) @@ -568,7 +574,7 @@ GEM        addressable (>= 2.3.6)        crack (>= 0.3.2)        hashdiff -    webpacker (3.0.2) +    webpacker (3.2.1)        activesupport (>= 4.2)        rack-proxy (>= 0.6.1)        railties (>= 4.2) @@ -684,6 +690,7 @@ DEPENDENCIES    rgeo (~> 0.5.2)    roo    rspec-rails (~> 3.5.0) +  rspec-snapshot    rubyzip    sass-rails (~> 4.0.3)    sawyer (~> 0.6.0) @@ -706,7 +713,7 @@ DEPENDENCIES    transpec    uglifier (~> 2.7.2)    webmock -  webpacker (= 3.0.2) +  webpacker (= 3.2.1)    whenever!    will_paginate    will_paginate-bootstrap diff --git a/app/controllers/snapshots_controller.rb b/app/controllers/snapshots_controller.rb new file mode 100644 index 000000000..e453b4965 --- /dev/null +++ b/app/controllers/snapshots_controller.rb @@ -0,0 +1,14 @@ +class SnapshotsController < ApplicationController +  if Rails.env.development? || Rails.env.test? +    layout :which_layout +    def show +      tpl = params[:snap] +      tpl = tpl.gsub Rails.root.to_s, '' +      render file: tpl +    end + +    def which_layout +      "snapshots/#{params[:layout] || "default"}" +    end +  end +end diff --git a/app/views/layouts/snapshots/actions_links.html.slim b/app/views/layouts/snapshots/actions_links.html.slim new file mode 100644 index 000000000..f1fa55e87 --- /dev/null +++ b/app/views/layouts/snapshots/actions_links.html.slim @@ -0,0 +1,21 @@ +doctype html +html lang=I18n.locale +  head +    meta charset="utf-8" +    meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" + +    = csrf_meta_tag + +    title = t('brandname') + +    = stylesheet_link_tag 'base' +    = stylesheet_link_tag 'application' + +    = javascript_pack_tag 'application' +    = javascript_include_tag 'application' + +  body +    = render 'layouts/navigation/main_nav' +    = render 'layouts/flash_messages', flash: flash +    div.page_header +      = yield diff --git a/app/views/layouts/snapshots/default.html.slim b/app/views/layouts/snapshots/default.html.slim new file mode 100644 index 000000000..9e4565dcb --- /dev/null +++ b/app/views/layouts/snapshots/default.html.slim @@ -0,0 +1,19 @@ +doctype html +html lang=I18n.locale +  head +    meta charset="utf-8" +    meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" + +    = csrf_meta_tag + +    title = t('brandname') + +    = stylesheet_link_tag 'base' +    = stylesheet_link_tag 'application' + +    = javascript_pack_tag 'application' +    = javascript_include_tag 'application' + +  body +    = yield +     diff --git a/config/routes.rb b/config/routes.rb index 5fc39ba92..2715ca428 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -241,6 +241,10 @@ ChouetteIhm::Application.routes.draw do    root :to => "dashboards#show" +  if Rails.env.development? || Rails.env.test? +    get "/snap" => "snapshots#show" +  end +    get '/help/(*slug)' => 'help#show'    if Rails.application.config.development_toolbar diff --git a/config/webpack/environment.js b/config/webpack/environment.js index 688bcbe8e..743cf66a8 100644 --- a/config/webpack/environment.js +++ b/config/webpack/environment.js @@ -14,7 +14,7 @@ let cleanOptions = {  }; -environment.plugins.set( +environment.plugins.append(    'CleanWebpack',    new CleanWebpackPlugin(pathsToClean, cleanOptions)  ) diff --git a/config/webpack/production.js b/config/webpack/production.js index 7703f8452..82478b156 100644 --- a/config/webpack/production.js +++ b/config/webpack/production.js @@ -2,7 +2,7 @@ const environment = require('./environment')  const webpack = require('webpack')  const UglifyJsPlugin = require('uglify-js') -environment.plugins.set( +environment.plugins.append(    'UglifyJs',    new webpack.optimize.UglifyJsPlugin({      compress: { diff --git a/config/webpack/staging.js b/config/webpack/staging.js index 7703f8452..82478b156 100644 --- a/config/webpack/staging.js +++ b/config/webpack/staging.js @@ -2,7 +2,7 @@ const environment = require('./environment')  const webpack = require('webpack')  const UglifyJsPlugin = require('uglify-js') -environment.plugins.set( +environment.plugins.append(    'UglifyJs',    new webpack.optimize.UglifyJsPlugin({      compress: { diff --git a/lib/af83/decorator/link.rb b/lib/af83/decorator/link.rb index de7106740..ee09f80dc 100644 --- a/lib/af83/decorator/link.rb +++ b/lib/af83/decorator/link.rb @@ -130,7 +130,9 @@ class AF83::Decorator::Link      out[:method] = link_method      out[:class] = extra_class      out.delete(:link_class) +    out.delete(:link_method)      out[:class] += " disabled" if disabled +    out[:class].strip!      out[:disabled] = !!disabled      out    end diff --git a/spec/support/integration_spec_helper.rb b/spec/support/integration_spec_helper.rb index 36306559d..7ba7e9f92 100644 --- a/spec/support/integration_spec_helper.rb +++ b/spec/support/integration_spec_helper.rb @@ -3,7 +3,11 @@ module IntegrationSpecHelper    def paginate_collection klass, decorator, page=1, context={}      collection = klass.page(page)      if decorator -      collection = ModelDecorator.decorate(collection, with: decorator, context: context) +      if decorator < AF83::Decorator +        collection = decorator.decorate(collection, context: context) +      else +        collection = ModelDecorator.decorate(collection, with: decorator, context: context) +      end      end      collection    end @@ -24,6 +28,13 @@ module IntegrationSpecHelper          context('', &block) if block_given?        end      end + +    def with_feature feature, &block +      context "with feature #{feature}" do +        let(:features){ [feature] } +        context('', &block) if block_given? +      end +    end    end    def self.included into @@ -48,7 +59,7 @@ RSpec::Matchers.define :have_link_for_each_item do |collection, name, opts|    end    description { "have #{name} link for each item" }    failure_message do -    "expected view to have #{name} link for each item, failed with selector: \"#{@selector}\"" +    "expected view to have one #{name} link for each item, failed with selector: \"#{@selector}\""    end  end diff --git a/spec/support/pundit/pundit_view_policy.rb b/spec/support/pundit/pundit_view_policy.rb index 330209049..63970de02 100644 --- a/spec/support/pundit/pundit_view_policy.rb +++ b/spec/support/pundit/pundit_view_policy.rb @@ -5,9 +5,15 @@ module Pundit        into.let(:current_referential){ referential || build_stubbed(:referential, organisation: organisation) }        into.let(:current_user){ create :user, permissions: permissions, organisation: organisation }        into.let(:pundit_user){ UserContext.new(current_user, referential: current_referential) } +      into.let(:current_offer_workbench) { create :workbench, organisation: organisation}        into.before do          allow(view).to receive(:pundit_user) { pundit_user } - +        allow(view).to receive(:current_user) { current_user } +        allow(view).to receive(:current_organisation).and_return(organisation) +        allow(view).to receive(:current_offer_workbench).and_return(current_offer_workbench) +        allow(view).to receive(:current_workgroup).and_return(current_offer_workbench.workgroup) +        allow(view).to receive(:has_feature?){ |f| features.include?(f)} +        allow(view).to receive(:user_signed_in?).and_return true          allow(view).to receive(:policy) do |instance|            ::Pundit.policy pundit_user, instance          end diff --git a/spec/support/snapshot_support.rb b/spec/support/snapshot_support.rb new file mode 100644 index 000000000..b1ade5288 --- /dev/null +++ b/spec/support/snapshot_support.rb @@ -0,0 +1,60 @@ +module SnaphostSpecHelper + +  module Methods +    def set_invariant expr, val=nil +      val ||= expr +      chain = expr.split(".") +      method = chain.pop + +      before(:each) do +        allow(eval(chain.join('.'))).to receive(method){ val } +      end +    end +  end + +  def self.included into +    into.extend Methods +  end +end + +RSpec.configure do |config| +  config.include SnaphostSpecHelper, type: :view +end + + +RSpec::Matchers.define :match_actions_links_snapshot do |name| +  match do |actual| +    @content = Capybara::Node::Simple.new(rendered).find('.page_header').native.inner_html +    expect(@content).to match_snapshot(name) +  end + +  failure_message do |actual| +    out = ["Snapshots did not match."] +    snap_path = File.dirname(method_missing(:class).metadata[:file_path]) + "/__snapshots__/#{name}.snap" +    temp_path = Pathname.new "#{Rails.root}/tmp/__snapshots__/#{name}.failed.snap" +    FileUtils.mkdir_p temp_path.dirname +    tmp = File.new temp_path, "w" +    tmp.write @content +    tmp.close() +    expected = File.read snap_path +    out << "Expected: #{expected}" +    out << "Actual: #{@content}" +    out << "\n\n --- DIFF ---" +    out << differ.diff_as_string(@content, expected) +    out << "\n\n --- Previews : ---" +    out << "Expected: \n" + snapshot_url(snap: snap_path, layout: :actions_links) +    out << " \nActual:  \n" + snapshot_url(snap: tmp.path, layout: :actions_links) +    out.join("\n") +  end + +  def snapshot_url snap:, layout: +    "http://localhost:3000/snap/?snap=#{URI.encode(snap.to_s)}&layout=#{URI.encode(layout.to_s)}" +  end + +  def differ +    RSpec::Support::Differ.new( +        :object_preparer => lambda { |object| RSpec::Matchers::Composable.surface_descriptions_in(object) }, +        :color => RSpec::Matchers.configuration.color? +    ) +  end +end diff --git a/spec/views/companies/__snapshots__/companies/index.snap b/spec/views/companies/__snapshots__/companies/index.snap new file mode 100644 index 000000000..2c5c23400 --- /dev/null +++ b/spec/views/companies/__snapshots__/companies/index.snap @@ -0,0 +1,4 @@ +<div class="container-fluid"><div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"></div></div> +</div></div>
\ No newline at end of file diff --git a/spec/views/companies/__snapshots__/companies/index_create.snap b/spec/views/companies/__snapshots__/companies/index_create.snap new file mode 100644 index 000000000..df36d5f49 --- /dev/null +++ b/spec/views/companies/__snapshots__/companies/index_create.snap @@ -0,0 +1,4 @@ +<div class="container-fluid"><div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><a class="btn btn-default" href="/line_referentials/99/companies/new">Ajouter un transporteur</a></div></div> +</div></div>
\ No newline at end of file diff --git a/spec/views/companies/__snapshots__/companies/index_destroy.snap b/spec/views/companies/__snapshots__/companies/index_destroy.snap new file mode 100644 index 000000000..2c5c23400 --- /dev/null +++ b/spec/views/companies/__snapshots__/companies/index_destroy.snap @@ -0,0 +1,4 @@ +<div class="container-fluid"><div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"></div></div> +</div></div>
\ No newline at end of file diff --git a/spec/views/companies/__snapshots__/companies/index_update.snap b/spec/views/companies/__snapshots__/companies/index_update.snap new file mode 100644 index 000000000..2c5c23400 --- /dev/null +++ b/spec/views/companies/__snapshots__/companies/index_update.snap @@ -0,0 +1,4 @@ +<div class="container-fluid"><div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"></div></div> +</div></div>
\ No newline at end of file diff --git a/spec/views/companies/__snapshots__/companies/show.snap b/spec/views/companies/__snapshots__/companies/show.snap new file mode 100644 index 000000000..8fe847427 --- /dev/null +++ b/spec/views/companies/__snapshots__/companies/show.snap @@ -0,0 +1,4 @@ +<div class="container-fluid"><div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>Transporteur Company Name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 23/01/2018 <br> Par web service</div></div></div> +</div></div>
\ No newline at end of file diff --git a/spec/views/companies/__snapshots__/companies/show_create.snap b/spec/views/companies/__snapshots__/companies/show_create.snap new file mode 100644 index 000000000..8fe847427 --- /dev/null +++ b/spec/views/companies/__snapshots__/companies/show_create.snap @@ -0,0 +1,4 @@ +<div class="container-fluid"><div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>Transporteur Company Name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 23/01/2018 <br> Par web service</div></div></div> +</div></div>
\ No newline at end of file diff --git a/spec/views/companies/__snapshots__/companies/show_destroy.snap b/spec/views/companies/__snapshots__/companies/show_destroy.snap new file mode 100644 index 000000000..5d574e460 --- /dev/null +++ b/spec/views/companies/__snapshots__/companies/show_destroy.snap @@ -0,0 +1,7 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>Transporteur Company Name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 23/01/2018 <br> Par web service</div></div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"><a data-confirm="Etes vous sûr de supprimer ce transporteur ?" class="btn btn-primary" rel="nofollow" data-method="delete" href="/line_referentials/99/companies/909"><span class="fa fa-trash mr-xs"></span>Supprimer ce transporteur</a></div></div> +</div>
\ No newline at end of file diff --git a/spec/views/companies/__snapshots__/companies/show_update.snap b/spec/views/companies/__snapshots__/companies/show_update.snap new file mode 100644 index 000000000..c2fbd3297 --- /dev/null +++ b/spec/views/companies/__snapshots__/companies/show_update.snap @@ -0,0 +1,7 @@ +<div class="container-fluid"><div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>Transporteur Company Name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"> +<div class="small last-update">Dernière mise à jour le 23/01/2018 <br> Par web service</div> +<a class="btn btn-default" href="/line_referentials/99/companies/909/edit">Editer ce transporteur</a> +</div></div> +</div></div>
\ No newline at end of file diff --git a/spec/views/companies/index.html.erb_spec.rb b/spec/views/companies/index.html.erb_spec.rb index 9db689ba6..8ed5f2c21 100644 --- a/spec/views/companies/index.html.erb_spec.rb +++ b/spec/views/companies/index.html.erb_spec.rb @@ -3,7 +3,10 @@ require 'spec_helper'  RSpec.describe "/companies/index", :type => :view do    let!(:line_referential) { assign :line_referential, create(:line_referential) } -  let!(:companies) { assign :companies, CompanyDecorator.decorate_collection(Array.new(2) { create(:company, line_referential: line_referential) }.paginate) } +  let(:context){{referential: line_referential}} +  let!(:companies) do +    assign :companies, build_paginated_collection(:company, CompanyDecorator, line_referential: line_referential, context: context) +  end    let!(:search) { assign :q, Ransack::Search.new(Chouette::Company) }    # Fixme #1795 @@ -22,4 +25,28 @@ RSpec.describe "/companies/index", :type => :view do    #   expect(view.content_for(:sidebar)).to have_selector(".actions a[href='#{new_line_referential_company_path(line_referential)}']")    # end +  before(:each) do +    allow(view).to receive(:collection).and_return(companies) +    allow(view).to receive(:decorated_collection).and_return(companies) +    allow(view).to receive(:current_referential).and_return(line_referential) +    controller.request.path_parameters[:line_referential_id] = line_referential.id +    allow(view).to receive(:params).and_return({action: :index}) +  end + +  describe "action links" do +    set_invariant "line_referential.id", "99" + +    before(:each){ +      render template: "companies/index", layout: "layouts/application" +    } + +    it { should match_actions_links_snapshot "companies/index" } + +    %w(create update destroy).each do |p| +      with_permission "companies.#{p}" do +        it { should match_actions_links_snapshot "companies/index_#{p}" } +      end +    end +  end +  end diff --git a/spec/views/companies/show.html.erb_spec.rb b/spec/views/companies/show.html.erb_spec.rb index aeb93aebb..b127bdf44 100644 --- a/spec/views/companies/show.html.erb_spec.rb +++ b/spec/views/companies/show.html.erb_spec.rb @@ -2,11 +2,38 @@ require 'spec_helper'  describe "/companies/show", :type => :view do -  let!(:company) { assign(:company, create(:company)) } +  let!(:company) { c = create(:company); assign(:company, c.decorate(context: {referential: c.line_referential})) }    let!(:line_referential) { assign :line_referential, company.line_referential }    # it "should display a map with class 'company'" do    #   render    #  expect(rendered).to have_selector("#map", :class => 'company')    # end + +  before(:each) do +    allow(view).to receive(:current_referential).and_return(line_referential) +    allow(view).to receive(:resource).and_return(company) +    controller.request.path_parameters[:line_referential_id] = line_referential.id +    controller.request.path_parameters[:id] = company.id +    allow(view).to receive(:params).and_return({action: :show}) +  end + +  describe "action links" do +    set_invariant "line_referential.id", "99" +    set_invariant "company.object.id", "909" +    set_invariant "company.object.name", "Company Name" +    set_invariant "company.object.updated_at", "2018/01/23".to_time + +    before(:each){ +      render template: "companies/show", layout: "layouts/application" +    } + +    it { should match_actions_links_snapshot "companies/show" } + +    %w(create update destroy).each do |p| +      with_permission "companies.#{p}" do +        it { should match_actions_links_snapshot "companies/show_#{p}" } +      end +    end +  end  end diff --git a/spec/views/lines/__snapshots__/lines/index.snap b/spec/views/lines/__snapshots__/lines/index.snap new file mode 100644 index 000000000..2c5c23400 --- /dev/null +++ b/spec/views/lines/__snapshots__/lines/index.snap @@ -0,0 +1,4 @@ +<div class="container-fluid"><div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"></div></div> +</div></div>
\ No newline at end of file diff --git a/spec/views/lines/__snapshots__/lines/index_create.snap b/spec/views/lines/__snapshots__/lines/index_create.snap new file mode 100644 index 000000000..4e4f54e7f --- /dev/null +++ b/spec/views/lines/__snapshots__/lines/index_create.snap @@ -0,0 +1,4 @@ +<div class="container-fluid"><div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><a class="btn btn-default" href="/line_referentials/99/lines/new">Ajouter une ligne</a></div></div> +</div></div>
\ No newline at end of file diff --git a/spec/views/lines/__snapshots__/lines/index_destroy.snap b/spec/views/lines/__snapshots__/lines/index_destroy.snap new file mode 100644 index 000000000..2c5c23400 --- /dev/null +++ b/spec/views/lines/__snapshots__/lines/index_destroy.snap @@ -0,0 +1,4 @@ +<div class="container-fluid"><div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"></div></div> +</div></div>
\ No newline at end of file diff --git a/spec/views/lines/__snapshots__/lines/index_update.snap b/spec/views/lines/__snapshots__/lines/index_update.snap new file mode 100644 index 000000000..2c5c23400 --- /dev/null +++ b/spec/views/lines/__snapshots__/lines/index_update.snap @@ -0,0 +1,4 @@ +<div class="container-fluid"><div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"></div></div> +</div></div>
\ No newline at end of file diff --git a/spec/views/lines/__snapshots__/lines/show.snap b/spec/views/lines/__snapshots__/lines/show.snap new file mode 100644 index 000000000..30eb6786e --- /dev/null +++ b/spec/views/lines/__snapshots__/lines/show.snap @@ -0,0 +1,9 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>Ligne Name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 23/01/2018 <br> Par web service</div></div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"> +<a class="btn btn-primary" href="/line_referentials/99/networks/99">Voir le réseau</a><a class="btn btn-primary" href="/line_referentials/99/companies/99">Voir le transporteur principal</a> +</div></div> +</div>
\ No newline at end of file diff --git a/spec/views/lines/__snapshots__/lines/show_create.snap b/spec/views/lines/__snapshots__/lines/show_create.snap new file mode 100644 index 000000000..30eb6786e --- /dev/null +++ b/spec/views/lines/__snapshots__/lines/show_create.snap @@ -0,0 +1,9 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>Ligne Name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 23/01/2018 <br> Par web service</div></div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"> +<a class="btn btn-primary" href="/line_referentials/99/networks/99">Voir le réseau</a><a class="btn btn-primary" href="/line_referentials/99/companies/99">Voir le transporteur principal</a> +</div></div> +</div>
\ No newline at end of file diff --git a/spec/views/lines/__snapshots__/lines/show_destroy.snap b/spec/views/lines/__snapshots__/lines/show_destroy.snap new file mode 100644 index 000000000..8ed08a90d --- /dev/null +++ b/spec/views/lines/__snapshots__/lines/show_destroy.snap @@ -0,0 +1,9 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>Ligne Name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 23/01/2018 <br> Par web service</div></div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"> +<a class="btn btn-primary" href="/line_referentials/99/networks/99">Voir le réseau</a><a class="btn btn-primary" href="/line_referentials/99/companies/99">Voir le transporteur principal</a><a data-confirm="Etes vous sûr de supprimer cette ligne ?" class="btn btn-primary" rel="nofollow" data-method="delete" href="/line_referentials/99/lines/99"><span class="fa fa-trash mr-xs"></span>Supprimer cette ligne</a> +</div></div> +</div>
\ No newline at end of file diff --git a/spec/views/lines/__snapshots__/lines/show_update.snap b/spec/views/lines/__snapshots__/lines/show_update.snap new file mode 100644 index 000000000..30eb6786e --- /dev/null +++ b/spec/views/lines/__snapshots__/lines/show_update.snap @@ -0,0 +1,9 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>Ligne Name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 23/01/2018 <br> Par web service</div></div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"> +<a class="btn btn-primary" href="/line_referentials/99/networks/99">Voir le réseau</a><a class="btn btn-primary" href="/line_referentials/99/companies/99">Voir le transporteur principal</a> +</div></div> +</div>
\ No newline at end of file diff --git a/spec/views/lines/index.html.slim_spec.rb b/spec/views/lines/index.html.slim_spec.rb index fb436c545..20e1783e3 100644 --- a/spec/views/lines/index.html.slim_spec.rb +++ b/spec/views/lines/index.html.slim_spec.rb @@ -13,11 +13,12 @@ describe "/lines/index", :type => :view do    let(:lines) do      assign :lines, build_paginated_collection(:line, LineDecorator, line_referential: line_referential, context: context)    end -  let!(:q) {  assign :q, Ransack::Search.new(Chouette::Line) } +  let!(:q) { assign :q, Ransack::Search.new(Chouette::Line) }    before :each do      deactivated_line      allow(view).to receive(:collection).and_return(lines) +    allow(view).to receive(:decorated_collection).and_return(lines)      allow(view).to receive(:current_referential).and_return(line_referential)      allow(view).to receive(:params).and_return({action: :index})      controller.request.path_parameters[:line_referential_id] = line_referential.id @@ -25,49 +26,68 @@ describe "/lines/index", :type => :view do      render    end -  common_items = ->{ -    it { should have_link_for_each_item(lines, "show", -> (line){ view.line_referential_line_path(line_referential, line) }) } -    it { should have_link_for_each_item(lines, "network", -> (line){ view.line_referential_network_path(line_referential, line.network) }) } -    it { should have_link_for_each_item(lines, "company", -> (line){ view.line_referential_company_path(line_referential, line.company) }) } -  } +  describe "action links" do +    set_invariant "line_referential.id", "99" +    set_invariant "line_referential.name", "Name" -  common_items.call() -  it { should have_the_right_number_of_links(lines, 3) } +    before(:each){ +      render template: "lines/index", layout: "layouts/application" +    } -  with_permission "lines.change_status" do -    common_items.call() -    it { should have_link_for_each_item(lines, "deactivate", -> (line){ view.deactivate_line_referential_line_path(line_referential, line) }) } -    it { should have_the_right_number_of_links(lines, 4) } +    it { should match_actions_links_snapshot "lines/index" } + +    %w(create update destroy).each do |p| +      with_permission "lines.#{p}" do +        it { should match_actions_links_snapshot "lines/index_#{p}" } +      end +    end    end -  with_permission "lines.destroy" do -    common_items.call() -    it { -      should have_link_for_each_item(lines, "destroy", { -        href: ->(line){ view.line_referential_line_path(line_referential, line)}, -        method: :delete -      }) +  context "links" do +    common_items = ->{ +      it { should have_link_for_each_item(lines, "show", -> (line){ view.line_referential_line_path(line_referential, line) }) } +      it { should have_link_for_each_item(lines, "network", -> (line){ view.line_referential_network_path(line_referential, line.network) }) } +      it { should have_link_for_each_item(lines, "company", -> (line){ view.line_referential_company_path(line_referential, line.company) }) }      } -    it { should have_the_right_number_of_links(lines, 4) } -  end -  context "with a deactivated item" do +    common_items.call() +    it { should have_the_right_number_of_links(lines, 3) } +      with_permission "lines.change_status" do -      let(:deactivated_line){ create :line, deactivated: true } +      common_items.call() +      it { should have_link_for_each_item(lines, "deactivate", -> (line){ view.deactivate_line_referential_line_path(line_referential, line) }) } +      it { should have_the_right_number_of_links(lines, 4) } +    end +    with_permission "lines.destroy" do        common_items.call() -      it "should display an activate link for the deactivated one" do -        lines.each do |line| -          if line == deactivated_line -            href = view.activate_line_referential_line_path(line_referential, line) -          else -            href = view.deactivate_line_referential_line_path(line_referential, line) +      it { +        should have_link_for_each_item(lines, "destroy", { +          href: ->(line){ view.line_referential_line_path(line_referential, line)}, +          method: :delete +        }) +      } +      it { should have_the_right_number_of_links(lines, 4) } +    end + +    context "with a deactivated item" do +      with_permission "lines.change_status" do +        let(:deactivated_line){ create :line, deactivated: true } + +        common_items.call() +        it "should display an activate link for the deactivated one" do +          lines.each do |line| +            if line == deactivated_line +              href = view.activate_line_referential_line_path(line_referential, line) +            else +              href = view.deactivate_line_referential_line_path(line_referential, line) +            end +            selector = "tr.#{TableBuilderHelper.item_row_class_name(lines)}-#{line.id} .actions a[href='#{href}']" +            expect(rendered).to have_selector(selector, count: 1)            end -          selector = "tr.#{TableBuilderHelper.item_row_class_name(lines)}-#{line.id} .actions a[href='#{href}']" -          expect(rendered).to have_selector(selector, count: 1)          end +        it { should have_the_right_number_of_links(lines, 4) }        end -      it { should have_the_right_number_of_links(lines, 4) }      end    end  end diff --git a/spec/views/lines/show.html.erb_spec.rb b/spec/views/lines/show.html.erb_spec.rb index 9649d9c8e..effdcd014 100644 --- a/spec/views/lines/show.html.erb_spec.rb +++ b/spec/views/lines/show.html.erb_spec.rb @@ -15,6 +15,30 @@ describe "/lines/show", :type => :view do    let!(:map) { assign(:map, double(:to_html => '<div id="map"/>'.html_safe)) }    before do -    allow(view).to receive_messages(current_organisation: referential.organisation) +    allow(view).to receive_messages(current_organisation: referential.organisation, resource: line) +    controller.request.path_parameters[:line_referential_id] = line_referential.id +    controller.request.path_parameters[:id] = line.id +    allow(view).to receive(:params).and_return({action: :show}) +  end + +  describe "action links" do +    set_invariant "line_referential.id", "99" +    set_invariant "line.object.id", "99" +    set_invariant "line.object.name", "Name" +    set_invariant "line.company.id", "99" +    set_invariant "line.network.id", "99" +    set_invariant "line.updated_at", "2018/01/23".to_time + +    before(:each){ +      render template: "lines/show", layout: "layouts/application" +    } + +    it { should match_actions_links_snapshot "lines/show" } + +    %w(create update destroy).each do |p| +      with_permission "lines.#{p}" do +        it { should match_actions_links_snapshot "lines/show_#{p}" } +      end +    end    end  end diff --git a/spec/views/networks/__snapshots__/networks/index.snap b/spec/views/networks/__snapshots__/networks/index.snap new file mode 100644 index 000000000..2c5c23400 --- /dev/null +++ b/spec/views/networks/__snapshots__/networks/index.snap @@ -0,0 +1,4 @@ +<div class="container-fluid"><div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"></div></div> +</div></div>
\ No newline at end of file diff --git a/spec/views/networks/__snapshots__/networks/index_create.snap b/spec/views/networks/__snapshots__/networks/index_create.snap new file mode 100644 index 000000000..afd4aa41b --- /dev/null +++ b/spec/views/networks/__snapshots__/networks/index_create.snap @@ -0,0 +1,4 @@ +<div class="container-fluid"><div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><a class="btn btn-default" href="/line_referentials/99/networks/new">Ajouter un réseau</a></div></div> +</div></div>
\ No newline at end of file diff --git a/spec/views/networks/__snapshots__/networks/index_destroy.snap b/spec/views/networks/__snapshots__/networks/index_destroy.snap new file mode 100644 index 000000000..2c5c23400 --- /dev/null +++ b/spec/views/networks/__snapshots__/networks/index_destroy.snap @@ -0,0 +1,4 @@ +<div class="container-fluid"><div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"></div></div> +</div></div>
\ No newline at end of file diff --git a/spec/views/networks/__snapshots__/networks/index_update.snap b/spec/views/networks/__snapshots__/networks/index_update.snap new file mode 100644 index 000000000..2c5c23400 --- /dev/null +++ b/spec/views/networks/__snapshots__/networks/index_update.snap @@ -0,0 +1,4 @@ +<div class="container-fluid"><div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"></div></div> +</div></div>
\ No newline at end of file diff --git a/spec/views/networks/__snapshots__/networks/show.snap b/spec/views/networks/__snapshots__/networks/show.snap new file mode 100644 index 000000000..8f2992065 --- /dev/null +++ b/spec/views/networks/__snapshots__/networks/show.snap @@ -0,0 +1,4 @@ +<div class="container-fluid"><div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>Réseau Name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 23/01/2018 <br> Par web service</div></div></div> +</div></div>
\ No newline at end of file diff --git a/spec/views/networks/__snapshots__/networks/show_create.snap b/spec/views/networks/__snapshots__/networks/show_create.snap new file mode 100644 index 000000000..8f2992065 --- /dev/null +++ b/spec/views/networks/__snapshots__/networks/show_create.snap @@ -0,0 +1,4 @@ +<div class="container-fluid"><div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>Réseau Name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 23/01/2018 <br> Par web service</div></div></div> +</div></div>
\ No newline at end of file diff --git a/spec/views/networks/__snapshots__/networks/show_destroy.snap b/spec/views/networks/__snapshots__/networks/show_destroy.snap new file mode 100644 index 000000000..c525c05b7 --- /dev/null +++ b/spec/views/networks/__snapshots__/networks/show_destroy.snap @@ -0,0 +1,7 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>Réseau Name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 23/01/2018 <br> Par web service</div></div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"><a data-confirm="Etes vous sûr de supprimer ce réseau ?" class="btn btn-primary" rel="nofollow" data-method="delete" href="/line_referentials/99/networks/909"><span class="fa fa-trash mr-xs"></span>Supprimer ce réseau</a></div></div> +</div>
\ No newline at end of file diff --git a/spec/views/networks/__snapshots__/networks/show_update.snap b/spec/views/networks/__snapshots__/networks/show_update.snap new file mode 100644 index 000000000..35f8ee9ac --- /dev/null +++ b/spec/views/networks/__snapshots__/networks/show_update.snap @@ -0,0 +1,7 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>Réseau Name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 23/01/2018 <br> Par web service</div></div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"><a class="btn btn-primary" href="/line_referentials/99/networks/909/edit">Editer ce réseau</a></div></div> +</div>
\ No newline at end of file diff --git a/spec/views/networks/index.html.erb_spec.rb b/spec/views/networks/index.html.erb_spec.rb index d2dde7f87..80e755163 100644 --- a/spec/views/networks/index.html.erb_spec.rb +++ b/spec/views/networks/index.html.erb_spec.rb @@ -3,7 +3,11 @@ require 'spec_helper'  describe "/networks/index", :type => :view do    let!(:line_referential) { assign :line_referential, create(:line_referential) } -  let!(:networks) { assign :networks, Array.new(2){ create(:network, line_referential: line_referential) }.paginate } +  let(:context){{line_referential: line_referential}} +  let!(:networks) do +    assign :networks, build_paginated_collection(:network, NetworkDecorator, line_referential: line_referential, context: context) +  end +    let!(:search) { assign :q, Ransack::Search.new(Chouette::Network) }    # it "should render a show link for each group" do @@ -18,5 +22,27 @@ describe "/networks/index", :type => :view do    #   render    #   expect(view.content_for(:sidebar)).to have_selector("a[href='#{new_line_referential_network_path(line_referential)}']")    # end +  before(:each) do +    allow(view).to receive(:collection).and_return(networks) +    allow(view).to receive(:decorated_collection).and_return(networks) +    allow(view).to receive(:current_referential).and_return(line_referential) +    controller.request.path_parameters[:line_referential_id] = line_referential.id +    allow(view).to receive(:params).and_return({action: :index}) +  end + +  describe "action links" do +    set_invariant "line_referential.id", "99" + +    before(:each){ +      render template: "networks/index", layout: "layouts/application" +    } + +    it { should match_actions_links_snapshot "networks/index" } +    %w(create update destroy).each do |p| +      with_permission "networks.#{p}" do +        it { should match_actions_links_snapshot "networks/index_#{p}" } +      end +    end +  end  end diff --git a/spec/views/networks/show.html.erb_spec.rb b/spec/views/networks/show.html.erb_spec.rb index 3926ead14..998e8ac44 100644 --- a/spec/views/networks/show.html.erb_spec.rb +++ b/spec/views/networks/show.html.erb_spec.rb @@ -11,8 +11,30 @@ describe "/networks/show", :type => :view do    let!(:map) { assign(:map, double(:to_html => '<div id="map"/>'.html_safe)) }    let!(:line_referential) { assign :line_referential, network.line_referential } -  # it "should display a map with class 'network'" do -  #   render -  #   expect(rendered).to have_selector("#map") -  # end +  before(:each) do +    allow(view).to receive(:current_referential).and_return(line_referential) +    allow(view).to receive(:resource).and_return(network) +    controller.request.path_parameters[:line_referential_id] = line_referential.id +    controller.request.path_parameters[:id] = network.id +    allow(view).to receive(:params).and_return({action: :show}) +  end + +  describe "action links" do +    set_invariant "line_referential.id", "99" +    set_invariant "network.object.id", "909" +    set_invariant "network.object.updated_at", "2018/01/23".to_time +    set_invariant "network.object.name", "Name" + +    before(:each){ +      render template: "networks/show", layout: "layouts/application" +    } + +    it { should match_actions_links_snapshot "networks/show" } + +    %w(create update destroy).each do |p| +      with_permission "networks.#{p}" do +        it { should match_actions_links_snapshot "networks/show_#{p}" } +      end +    end +  end  end diff --git a/spec/views/referentials/__snapshots__/referentials/show.snap b/spec/views/referentials/__snapshots__/referentials/show.snap new file mode 100644 index 000000000..83531ac0e --- /dev/null +++ b/spec/views/referentials/__snapshots__/referentials/show.snap @@ -0,0 +1,9 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>referential_full_name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 01/01/2000</div></div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"> +<a class="btn btn-primary" href="/referentials/99/vehicle_journeys">Courses</a><a class="btn btn-primary" href="/referentials/99/purchase_windows">Calendriers commerciaux</a><a class="btn btn-primary" href="/referentials/99/time_tables">Calendriers</a> +</div></div> +</div>
\ No newline at end of file diff --git a/spec/views/referentials/__snapshots__/referentials/show_create.snap b/spec/views/referentials/__snapshots__/referentials/show_create.snap new file mode 100644 index 000000000..e5d309b96 --- /dev/null +++ b/spec/views/referentials/__snapshots__/referentials/show_create.snap @@ -0,0 +1,9 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>referential_full_name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 01/01/2000</div></div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"> +<a class="btn btn-primary" href="/referentials/99/vehicle_journeys">Courses</a><a class="btn btn-primary" href="/referentials/99/purchase_windows">Calendriers commerciaux</a><a class="btn btn-primary" href="/referentials/99/time_tables">Calendriers</a><a class="btn btn-primary" href="/referentials/new?from=99">Dupliquer</a><a class="btn btn-primary" href="/referentials/99/select_compliance_control_set">Valider</a> +</div></div> +</div>
\ No newline at end of file diff --git a/spec/views/referentials/__snapshots__/referentials/show_destroy.snap b/spec/views/referentials/__snapshots__/referentials/show_destroy.snap new file mode 100644 index 000000000..d90198391 --- /dev/null +++ b/spec/views/referentials/__snapshots__/referentials/show_destroy.snap @@ -0,0 +1,9 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>referential_full_name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 01/01/2000</div></div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"> +<a class="btn btn-primary" href="/referentials/99/vehicle_journeys">Courses</a><a class="btn btn-primary" href="/referentials/99/purchase_windows">Calendriers commerciaux</a><a class="btn btn-primary" href="/referentials/99/time_tables">Calendriers</a><a data-confirm="Etes vous sûr de vouloir supprimer ce jeu de données ?" class="btn btn-primary" rel="nofollow" data-method="delete" href="/referentials/99"><span class="fa fa-trash mr-xs"></span>Supprimer</a> +</div></div> +</div>
\ No newline at end of file diff --git a/spec/views/referentials/__snapshots__/referentials/show_purchase_windows.snap b/spec/views/referentials/__snapshots__/referentials/show_purchase_windows.snap new file mode 100644 index 000000000..83531ac0e --- /dev/null +++ b/spec/views/referentials/__snapshots__/referentials/show_purchase_windows.snap @@ -0,0 +1,9 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>referential_full_name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 01/01/2000</div></div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"> +<a class="btn btn-primary" href="/referentials/99/vehicle_journeys">Courses</a><a class="btn btn-primary" href="/referentials/99/purchase_windows">Calendriers commerciaux</a><a class="btn btn-primary" href="/referentials/99/time_tables">Calendriers</a> +</div></div> +</div>
\ No newline at end of file diff --git a/spec/views/referentials/__snapshots__/referentials/show_purchase_windows_create.snap b/spec/views/referentials/__snapshots__/referentials/show_purchase_windows_create.snap new file mode 100644 index 000000000..e5d309b96 --- /dev/null +++ b/spec/views/referentials/__snapshots__/referentials/show_purchase_windows_create.snap @@ -0,0 +1,9 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>referential_full_name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 01/01/2000</div></div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"> +<a class="btn btn-primary" href="/referentials/99/vehicle_journeys">Courses</a><a class="btn btn-primary" href="/referentials/99/purchase_windows">Calendriers commerciaux</a><a class="btn btn-primary" href="/referentials/99/time_tables">Calendriers</a><a class="btn btn-primary" href="/referentials/new?from=99">Dupliquer</a><a class="btn btn-primary" href="/referentials/99/select_compliance_control_set">Valider</a> +</div></div> +</div>
\ No newline at end of file diff --git a/spec/views/referentials/__snapshots__/referentials/show_purchase_windows_destroy.snap b/spec/views/referentials/__snapshots__/referentials/show_purchase_windows_destroy.snap new file mode 100644 index 000000000..d90198391 --- /dev/null +++ b/spec/views/referentials/__snapshots__/referentials/show_purchase_windows_destroy.snap @@ -0,0 +1,9 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>referential_full_name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 01/01/2000</div></div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"> +<a class="btn btn-primary" href="/referentials/99/vehicle_journeys">Courses</a><a class="btn btn-primary" href="/referentials/99/purchase_windows">Calendriers commerciaux</a><a class="btn btn-primary" href="/referentials/99/time_tables">Calendriers</a><a data-confirm="Etes vous sûr de vouloir supprimer ce jeu de données ?" class="btn btn-primary" rel="nofollow" data-method="delete" href="/referentials/99"><span class="fa fa-trash mr-xs"></span>Supprimer</a> +</div></div> +</div>
\ No newline at end of file diff --git a/spec/views/referentials/__snapshots__/referentials/show_purchase_windows_update.snap b/spec/views/referentials/__snapshots__/referentials/show_purchase_windows_update.snap new file mode 100644 index 000000000..32d46beda --- /dev/null +++ b/spec/views/referentials/__snapshots__/referentials/show_purchase_windows_update.snap @@ -0,0 +1,12 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>referential_full_name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"> +<div class="small last-update">Dernière mise à jour le 01/01/2000</div> +<a class="btn btn-default" href="/referentials/99/edit">Editer</a> +</div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"> +<a class="btn btn-primary" href="/referentials/99/vehicle_journeys">Courses</a><a class="btn btn-primary" href="/referentials/99/purchase_windows">Calendriers commerciaux</a><a class="btn btn-primary" href="/referentials/99/time_tables">Calendriers</a><a class="btn btn-primary" rel="nofollow" data-method="put" href="/referentials/99/archive">Conserver</a><button type="button" data-toggle="modal" data-target="#purgeModal" class="btn btn-primary">Purger</button> +</div></div> +</div>
\ No newline at end of file diff --git a/spec/views/referentials/__snapshots__/referentials/show_readonly.snap b/spec/views/referentials/__snapshots__/referentials/show_readonly.snap new file mode 100644 index 000000000..83531ac0e --- /dev/null +++ b/spec/views/referentials/__snapshots__/referentials/show_readonly.snap @@ -0,0 +1,9 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>referential_full_name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 01/01/2000</div></div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"> +<a class="btn btn-primary" href="/referentials/99/vehicle_journeys">Courses</a><a class="btn btn-primary" href="/referentials/99/purchase_windows">Calendriers commerciaux</a><a class="btn btn-primary" href="/referentials/99/time_tables">Calendriers</a> +</div></div> +</div>
\ No newline at end of file diff --git a/spec/views/referentials/__snapshots__/referentials/show_readonly_create.snap b/spec/views/referentials/__snapshots__/referentials/show_readonly_create.snap new file mode 100644 index 000000000..82a77521a --- /dev/null +++ b/spec/views/referentials/__snapshots__/referentials/show_readonly_create.snap @@ -0,0 +1,9 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>referential_full_name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 01/01/2000</div></div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"> +<a class="btn btn-primary" href="/referentials/99/vehicle_journeys">Courses</a><a class="btn btn-primary" href="/referentials/99/purchase_windows">Calendriers commerciaux</a><a class="btn btn-primary" href="/referentials/99/time_tables">Calendriers</a><a class="btn btn-primary" href="/referentials/new?from=99">Dupliquer</a> +</div></div> +</div>
\ No newline at end of file diff --git a/spec/views/referentials/__snapshots__/referentials/show_readonly_destroy.snap b/spec/views/referentials/__snapshots__/referentials/show_readonly_destroy.snap new file mode 100644 index 000000000..83531ac0e --- /dev/null +++ b/spec/views/referentials/__snapshots__/referentials/show_readonly_destroy.snap @@ -0,0 +1,9 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>referential_full_name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 01/01/2000</div></div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"> +<a class="btn btn-primary" href="/referentials/99/vehicle_journeys">Courses</a><a class="btn btn-primary" href="/referentials/99/purchase_windows">Calendriers commerciaux</a><a class="btn btn-primary" href="/referentials/99/time_tables">Calendriers</a> +</div></div> +</div>
\ No newline at end of file diff --git a/spec/views/referentials/__snapshots__/referentials/show_readonly_update.snap b/spec/views/referentials/__snapshots__/referentials/show_readonly_update.snap new file mode 100644 index 000000000..83531ac0e --- /dev/null +++ b/spec/views/referentials/__snapshots__/referentials/show_readonly_update.snap @@ -0,0 +1,9 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>referential_full_name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 01/01/2000</div></div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"> +<a class="btn btn-primary" href="/referentials/99/vehicle_journeys">Courses</a><a class="btn btn-primary" href="/referentials/99/purchase_windows">Calendriers commerciaux</a><a class="btn btn-primary" href="/referentials/99/time_tables">Calendriers</a> +</div></div> +</div>
\ No newline at end of file diff --git a/spec/views/referentials/__snapshots__/referentials/show_referential_vehicle_journeys.snap b/spec/views/referentials/__snapshots__/referentials/show_referential_vehicle_journeys.snap new file mode 100644 index 000000000..83531ac0e --- /dev/null +++ b/spec/views/referentials/__snapshots__/referentials/show_referential_vehicle_journeys.snap @@ -0,0 +1,9 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>referential_full_name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 01/01/2000</div></div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"> +<a class="btn btn-primary" href="/referentials/99/vehicle_journeys">Courses</a><a class="btn btn-primary" href="/referentials/99/purchase_windows">Calendriers commerciaux</a><a class="btn btn-primary" href="/referentials/99/time_tables">Calendriers</a> +</div></div> +</div>
\ No newline at end of file diff --git a/spec/views/referentials/__snapshots__/referentials/show_referential_vehicle_journeys_create.snap b/spec/views/referentials/__snapshots__/referentials/show_referential_vehicle_journeys_create.snap new file mode 100644 index 000000000..e5d309b96 --- /dev/null +++ b/spec/views/referentials/__snapshots__/referentials/show_referential_vehicle_journeys_create.snap @@ -0,0 +1,9 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>referential_full_name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 01/01/2000</div></div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"> +<a class="btn btn-primary" href="/referentials/99/vehicle_journeys">Courses</a><a class="btn btn-primary" href="/referentials/99/purchase_windows">Calendriers commerciaux</a><a class="btn btn-primary" href="/referentials/99/time_tables">Calendriers</a><a class="btn btn-primary" href="/referentials/new?from=99">Dupliquer</a><a class="btn btn-primary" href="/referentials/99/select_compliance_control_set">Valider</a> +</div></div> +</div>
\ No newline at end of file diff --git a/spec/views/referentials/__snapshots__/referentials/show_referential_vehicle_journeys_destroy.snap b/spec/views/referentials/__snapshots__/referentials/show_referential_vehicle_journeys_destroy.snap new file mode 100644 index 000000000..d90198391 --- /dev/null +++ b/spec/views/referentials/__snapshots__/referentials/show_referential_vehicle_journeys_destroy.snap @@ -0,0 +1,9 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>referential_full_name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"><div class="small last-update">Dernière mise à jour le 01/01/2000</div></div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"> +<a class="btn btn-primary" href="/referentials/99/vehicle_journeys">Courses</a><a class="btn btn-primary" href="/referentials/99/purchase_windows">Calendriers commerciaux</a><a class="btn btn-primary" href="/referentials/99/time_tables">Calendriers</a><a data-confirm="Etes vous sûr de vouloir supprimer ce jeu de données ?" class="btn btn-primary" rel="nofollow" data-method="delete" href="/referentials/99"><span class="fa fa-trash mr-xs"></span>Supprimer</a> +</div></div> +</div>
\ No newline at end of file diff --git a/spec/views/referentials/__snapshots__/referentials/show_referential_vehicle_journeys_update.snap b/spec/views/referentials/__snapshots__/referentials/show_referential_vehicle_journeys_update.snap new file mode 100644 index 000000000..32d46beda --- /dev/null +++ b/spec/views/referentials/__snapshots__/referentials/show_referential_vehicle_journeys_update.snap @@ -0,0 +1,12 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>referential_full_name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"> +<div class="small last-update">Dernière mise à jour le 01/01/2000</div> +<a class="btn btn-default" href="/referentials/99/edit">Editer</a> +</div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"> +<a class="btn btn-primary" href="/referentials/99/vehicle_journeys">Courses</a><a class="btn btn-primary" href="/referentials/99/purchase_windows">Calendriers commerciaux</a><a class="btn btn-primary" href="/referentials/99/time_tables">Calendriers</a><a class="btn btn-primary" rel="nofollow" data-method="put" href="/referentials/99/archive">Conserver</a><button type="button" data-toggle="modal" data-target="#purgeModal" class="btn btn-primary">Purger</button> +</div></div> +</div>
\ No newline at end of file diff --git a/spec/views/referentials/__snapshots__/referentials/show_update.snap b/spec/views/referentials/__snapshots__/referentials/show_update.snap new file mode 100644 index 000000000..32d46beda --- /dev/null +++ b/spec/views/referentials/__snapshots__/referentials/show_update.snap @@ -0,0 +1,12 @@ +<div class="container-fluid"> +<div class="row"> +<div class="col-lg-9 col-md-8 col-sm-7 col-xs-7"><div class="page-title"><h1>referential_full_name</h1></div></div> +<div class="col-lg-3 col-md-4 col-sm-5 col-xs-5 text-right"><div class="page-action"> +<div class="small last-update">Dernière mise à jour le 01/01/2000</div> +<a class="btn btn-default" href="/referentials/99/edit">Editer</a> +</div></div> +</div> +<div class="row mb-sm"><div class="col-lg-12 text-right"> +<a class="btn btn-primary" href="/referentials/99/vehicle_journeys">Courses</a><a class="btn btn-primary" href="/referentials/99/purchase_windows">Calendriers commerciaux</a><a class="btn btn-primary" href="/referentials/99/time_tables">Calendriers</a><a class="btn btn-primary" rel="nofollow" data-method="put" href="/referentials/99/archive">Conserver</a><button type="button" data-toggle="modal" data-target="#purgeModal" class="btn btn-primary">Purger</button> +</div></div> +</div>
\ No newline at end of file diff --git a/spec/views/referentials/show.html.erb_spec.rb b/spec/views/referentials/show.html.erb_spec.rb index 6fd51949a..ea3bc1fe1 100644 --- a/spec/views/referentials/show.html.erb_spec.rb +++ b/spec/views/referentials/show.html.erb_spec.rb @@ -1,7 +1,6 @@  require 'spec_helper'  describe "referentials/show", type: :view do -    let!(:referential) do      referential = create(:referential, organisation: organisation)      assign :referential, referential.decorate(context: { @@ -28,24 +27,47 @@ describe "referentials/show", type: :view do      allow(view).to receive(:params).and_return({action: :show})      allow(referential).to receive(:referential_read_only?){ readonly } -    render template: "referentials/show", layout: "layouts/application" -  end - -  it "should not present edit button" do -    expect(rendered).to_not have_selector("a[href=\"#{view.edit_referential_path(referential)}\"]")    end -  with_permission "referentials.update" do -    it "should present edit button" do -      expect(rendered).to have_selector("a[href=\"#{view.edit_referential_path(referential)}\"]") -    end +  describe "action links" do +    set_invariant "referential.object.full_name", "referential_full_name" +    set_invariant "referential.object.updated_at", "01/01/2000 00:00".to_time +    set_invariant "referential.object.id", "99" +    before(:each){ +      render template: "referentials/show", layout: "layouts/application" +    }      context "with a readonly referential" do        let(:readonly){ true } -      it "should not present edit button" do -        expect(rendered).to_not have_selector("a[href=\"#{view.edit_referential_path(referential)}\"]") +      it { should match_actions_links_snapshot "referentials/show_readonly" } + +      %w(create destroy update).each do |p| +        with_permission "referentials.#{p}" do +          it { should match_actions_links_snapshot "referentials/show_readonly_#{p}" } +        end        end      end -  end +    context "with a non-readonly referential" do +      it { should match_actions_links_snapshot "referentials/show" } + +      %w(create destroy update).each do |p| +        with_permission "referentials.#{p}" do +          it { should match_actions_links_snapshot "referentials/show_#{p}" } +        end +      end +    end + +    %w(purchase_windows referential_vehicle_journeys).each do |f| +      with_feature f do +        it { should match_actions_links_snapshot "referentials/show_#{f}" } + +        %w(create update destroy).each do |p| +          with_permission "referentials.#{p}" do +            it { should match_actions_links_snapshot "referentials/show_#{f}_#{p}" } +          end +        end +      end +    end +  end  end | 
