diff options
Diffstat (limited to 'spec/views')
8 files changed, 168 insertions, 65 deletions
| diff --git a/spec/views/connection_links/index.html.erb_spec.rb b/spec/views/connection_links/index.html.erb_spec.rb index a01380094..1f133e31e 100644 --- a/spec/views/connection_links/index.html.erb_spec.rb +++ b/spec/views/connection_links/index.html.erb_spec.rb @@ -17,9 +17,11 @@ describe "/connection_links/index", :type => :view do      end    end -  it "should render a link to create a new group" do -    render -    expect(view.content_for(:sidebar)).to have_selector(".actions a[href='#{new_referential_connection_link_path(referential)}']") +  with_permission "connection_links.create" do +    it "should render a link to create a new group" do +      render +      expect(view.content_for(:sidebar)).to have_selector(".actions a[href='#{new_referential_connection_link_path(referential)}']") +    end    end  end diff --git a/spec/views/connection_links/show.html.erb_spec.rb b/spec/views/connection_links/show.html.erb_spec.rb deleted file mode 100644 index c04a4f3f1..000000000 --- a/spec/views/connection_links/show.html.erb_spec.rb +++ /dev/null @@ -1,35 +0,0 @@ -require 'spec_helper' - -describe "/connection_links/show", :type => :view do - -  assign_referential -  let!(:connection_link) { assign(:connection_link, create(:connection_link)) } -  let!(:map) { assign(:map, double(:to_html => '<div id="map"/>'.html_safe)) } - -  before do -    allow(view).to receive_messages(current_organisation: referential.organisation) -  end - -  it "should render h2 with the connection_link name" do -    render -    expect(rendered).to have_selector("h2", :text => Regexp.new(connection_link.name)) -  end - -#  it "should display a map with class 'connection_link'" do -#    pending ": map not yet implemented" -#     render -#     expect(rendered).to have_selector("#map", :class => 'connection_link') -#  end - -  it "should render a link to edit the connection_link" do -    render -    expect(view.content_for(:sidebar)).to have_selector(".actions a[href='#{view.edit_referential_connection_link_path(referential, connection_link)}']") -  end - -  it "should render a link to remove the connection_link" do -    render -    expect(view.content_for(:sidebar)).to have_selector(".actions a[href='#{view.referential_connection_link_path(referential, connection_link)}'][class='remove']") -  end - -end - diff --git a/spec/views/connection_links/show.html.slim_spec.rb b/spec/views/connection_links/show.html.slim_spec.rb new file mode 100644 index 000000000..afe94fc6c --- /dev/null +++ b/spec/views/connection_links/show.html.slim_spec.rb @@ -0,0 +1,32 @@ +require 'spec_helper' + +describe "/connection_links/show", :type => :view do + +  assign_referential +  let!(:connection_link) { assign(:connection_link, create(:connection_link)) } +  let!(:map) { assign(:map, double(:to_html => '<div id="map"/>'.html_safe)) } + +  before do +    allow(view).to receive_messages(current_organisation: referential.organisation) +  end + +  it "should render h2 with the connection_link name" do +    render +    expect(rendered).to have_selector("h2", :text => Regexp.new(connection_link.name)) +  end + +  with_permission "connection_links.update" do +    it "should render a link to edit the connection_link" do +      render +      expect(view.content_for(:sidebar)).to have_selector(".actions a[href='#{view.edit_referential_connection_link_path(referential, connection_link)}']") +    end +  end + +  with_permission "connection_links.destroy" do +    it "should render a link to remove the connection_link" do +      render +      expect(view.content_for(:sidebar)).to have_selector(".actions a[href='#{view.referential_connection_link_path(referential, connection_link)}'][class='remove']") +    end +  end + +end diff --git a/spec/views/line_referentials/show.html.slim_spec.rb b/spec/views/line_referentials/show.html.slim_spec.rb new file mode 100644 index 000000000..0516677cb --- /dev/null +++ b/spec/views/line_referentials/show.html.slim_spec.rb @@ -0,0 +1,22 @@ +require 'spec_helper' + +describe "/line_referentials/show", :type => :view do + +  let!(:line_referential) { assign :line_referential, create(:line_referential) } + +  before :each do +    render +  end + +  it "should not present syncing infos and button" do +    expect(view.content_for(:page_header_actions)).to_not have_selector("a[href=\"#{view.sync_line_referential_path(line_referential)}\"]") +    expect(view.content_for(:page_header_meta)).to_not have_selector(".last-update") +  end + +  with_permission "line_referentials.synchronize" do +    it "should present syncing infos and button" do +      expect(view.content_for(:page_header_actions)).to have_selector("a[href=\"#{view.sync_line_referential_path(line_referential)}\"]", count: 1) +      expect(view.content_for(:page_header_meta)).to have_selector(".last-update", count: 1) +    end +  end +end diff --git a/spec/views/line_referentials/stop_area_referentials/show.html.slim_spec.rb b/spec/views/line_referentials/stop_area_referentials/show.html.slim_spec.rb new file mode 100644 index 000000000..71a8d16f5 --- /dev/null +++ b/spec/views/line_referentials/stop_area_referentials/show.html.slim_spec.rb @@ -0,0 +1,22 @@ +require 'spec_helper' + +describe "/stop_area_referentials/show", :type => :view do + +  let!(:stop_area_referential) { assign :stop_area_referential, create(:stop_area_referential) } + +  before :each do +    render +  end + +  it "should not present syncing infos and button" do +    expect(view.content_for(:page_header_actions)).to_not have_selector("a[href=\"#{view.sync_stop_area_referential_path(stop_area_referential)}\"]") +    expect(view.content_for(:page_header_meta)).to_not have_selector(".last-update") +  end + +  with_permission "stop_area_referentials.synchronize" do +    it "should present syncing infos and button" do +      expect(view.content_for(:page_header_actions)).to have_selector("a[href=\"#{view.sync_stop_area_referential_path(stop_area_referential)}\"]", count: 1) +      expect(view.content_for(:page_header_meta)).to have_selector(".last-update", count: 1) +    end +  end +end diff --git a/spec/views/offer_workbenches/show.html.erb_spec.rb b/spec/views/offer_workbenches/show.html.erb_spec.rb index 40b09268a..138a1560d 100644 --- a/spec/views/offer_workbenches/show.html.erb_spec.rb +++ b/spec/views/offer_workbenches/show.html.erb_spec.rb @@ -1,5 +1,56 @@ -require 'rails_helper' +require 'spec_helper' -RSpec.describe "workbenches/show.html.erb", :type => :view do +RSpec::Matchers.define :have_box_for_item do |item, disabled| +  match do |actual| +    klass = "#{TableBuilderHelper.item_row_class_name([item])}-#{item.id}" +    if disabled +      selector = "tr.#{klass} [type=checkbox][disabled][value='#{item.id}']" +    else +      selector = "tr.#{klass} [type=checkbox][value='#{item.id}']:not([disabled])" +    end +    expect(actual).to have_selector(selector, count: 1) +  end +  description { "have a #{disabled ? "disabled ": ""}box for the item ##{item.id}" } +end + +describe "workbenches/show", :type => :view do +  let!(:ids) { ['STIF:CODIFLIGNE:Line:C00840', 'STIF:CODIFLIGNE:Line:C00086'] } +  let!(:lines) { +    ids.map do |id| +      create :line, objectid: id, line_referential: workbench.line_referential +    end +  } +  let!(:workbench){ assign :workbench, create(:workbench) } +  let!(:same_organisation_referential){ create :workbench_referential, workbench: workbench, metadatas: [create(:referential_metadata, lines: lines)] } +  let!(:different_organisation_referential){ create :workbench_referential, metadatas: [create(:referential_metadata, lines: lines)] } +  let!(:referentials){ +    same_organisation_referential && different_organisation_referential +    assign :wbench_refs, paginate_collection(Referential, ReferentialDecorator) +  } +  let!(:q) { assign :q_for_form, Ransack::Search.new(Referential) } +  before :each do +    lines +    controller.request.path_parameters[:id] = workbench.id +    expect(workbench.referentials).to     include same_organisation_referential +    expect(workbench.referentials).to_not include different_organisation_referential +    expect(workbench.all_referentials).to include same_organisation_referential +    expect(workbench.all_referentials).to include different_organisation_referential +    render +  end + +  it { should have_link_for_each_item(referentials, "show", -> (referential){ view.referential_path(referential) }) } + +  context "without permission" do +    it "should disable all the checkboxes" do +      expect(rendered).to have_box_for_item same_organisation_referential, false +      expect(rendered).to have_box_for_item different_organisation_referential, true +    end +  end +  with_permission "referentials.destroy" do +    it "should enable the checkbox for the referential which belongs to the same organisation and disable the other one" do +      expect(rendered).to have_box_for_item same_organisation_referential, false +      expect(rendered).to have_box_for_item different_organisation_referential, true +    end +  end  end diff --git a/spec/views/stop_areas/index.html.erb_spec.rb b/spec/views/stop_areas/index.html.erb_spec.rb deleted file mode 100644 index 2dfae1bfd..000000000 --- a/spec/views/stop_areas/index.html.erb_spec.rb +++ /dev/null @@ -1,25 +0,0 @@ -require 'spec_helper' - -describe "/stop_areas/index", :type => :view do - -  let!(:stop_area_referential) { assign :stop_area_referential, create(:stop_area_referential) } -  let!(:stop_areas) { assign :stop_areas, Array.new(2) { create(:stop_area, stop_area_referential: stop_area_referential) }.paginate } -  let!(:q) { assign :q, Ransack::Search.new(Chouette::StopArea) } - -  before :each do -    allow(view).to receive(:link_with_search).and_return("#") -  end - -  # it "should render a show link for each group" do -  #   render -  #   stop_areas.each do |stop_area| -  #     expect(rendered).to have_selector(".stop_area a[href='#{view.stop_area_referential_stop_area_path(stop_area_referential, stop_area)}']", :text => stop_area.name) -  #   end -  # end -  # -  # it "should render a link to create a new group" do -  #   render -  #   expect(view.content_for(:sidebar)).to have_selector(".actions a[href='#{new_stop_area_referential_stop_area_path(stop_area_referential)}']") -  # end - -end diff --git a/spec/views/stop_areas/index.html.slim_spec.rb b/spec/views/stop_areas/index.html.slim_spec.rb new file mode 100644 index 000000000..8daa5eb4b --- /dev/null +++ b/spec/views/stop_areas/index.html.slim_spec.rb @@ -0,0 +1,34 @@ +require 'spec_helper' + +describe "/stop_areas/index", :type => :view do + +  let!(:stop_area_referential) { assign :stop_area_referential, create(:stop_area_referential) } +  let!(:stop_areas) do +    assign :stop_areas, build_paginated_collection(:stop_area, StopAreaDecorator, stop_area_referential: stop_area_referential) +  end +  let!(:q) { assign :q, Ransack::Search.new(Chouette::StopArea) } + +  before :each do +    allow(view).to receive(:link_with_search).and_return("#") +    allow(view).to receive(:collection).and_return(stop_areas) +    allow(view).to receive(:current_referential).and_return(stop_area_referential) +    controller.request.path_parameters[:stop_area_referential_id] = stop_area_referential.id +    render +  end + +  it { should have_link_for_each_item(stop_areas, "show", -> (stop_area){ view.stop_area_referential_stop_area_path(stop_area_referential, stop_area) }) } +  it { should have_the_right_number_of_links(stop_areas, 1) } + +  with_permission "stop_areas.create" do +    it { should have_link_for_each_item(stop_areas, "show", -> (stop_area){ view.stop_area_referential_stop_area_path(stop_area_referential, stop_area) }) } +    it { should_not have_link_for_each_item(stop_areas, "create", -> (stop_area){ view.new_stop_area_referential_stop_area_path(stop_area_referential) }) } +    it { should have_the_right_number_of_links(stop_areas, 1) } +  end + +  with_permission "stop_areas.update" do +    it { should have_link_for_each_item(stop_areas, "show", -> (stop_area){ view.stop_area_referential_stop_area_path(stop_area_referential, stop_area) }) } +    it { should have_link_for_each_item(stop_areas, "edit", -> (stop_area){ view.edit_stop_area_referential_stop_area_path(stop_area_referential, stop_area) }) } +    it { should have_the_right_number_of_links(stop_areas, 2) } +  end + +end | 
