diff options
Diffstat (limited to 'spec/features')
| -rw-r--r-- | spec/features/companies_spec.rb | 52 | ||||
| -rw-r--r-- | spec/features/connection_links_spec.rb | 56 | ||||
| -rw-r--r-- | spec/features/journey_pattern_spec.rb | 60 | ||||
| -rw-r--r-- | spec/features/lines_spec.rb | 60 | ||||
| -rw-r--r-- | spec/features/networks_spec.rb | 72 | ||||
| -rw-r--r-- | spec/features/referentials_spec.rb | 62 | ||||
| -rw-r--r-- | spec/features/routes_spec.rb | 60 | ||||
| -rw-r--r-- | spec/features/stop_areas_spec.rb | 56 | ||||
| -rw-r--r-- | spec/features/stop_points_spec.rb | 30 | ||||
| -rw-r--r-- | spec/features/time_tables_spec.rb | 49 | ||||
| -rw-r--r-- | spec/features/vehicle_journey_imports_spec.rb | 68 |
11 files changed, 625 insertions, 0 deletions
diff --git a/spec/features/companies_spec.rb b/spec/features/companies_spec.rb new file mode 100644 index 000000000..bcf73b631 --- /dev/null +++ b/spec/features/companies_spec.rb @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +require 'spec_helper' + +describe "Companies", :type => :feature do + login_user + + let!(:companies) { Array.new(2) { create :company } } + subject { companies.first } + + describe "list" do + it "display companies" do + puts referential.inspect + visit referential_companies_path(referential) + expect(page).to have_content(companies.first.name) + expect(page).to have_content(companies.last.name) + end + + end + + describe "show" do + it "display company" do + visit referential_companies_path(referential) + click_link "#{companies.first.name}" + expect(page).to have_content(companies.first.name) + end + + end + + describe "new" do + it "creates company and return to show" do + visit referential_companies_path(referential) + click_link "Ajouter un transporteur" + fill_in "company_name", :with => "Company 1" + fill_in "Numéro d'enregistrement", :with => "test-1" + fill_in "Identifiant Neptune", :with => "test:Company:1" + click_button("Créer transporteur") + expect(page).to have_content("Company 1") + end + end + + describe "edit and return to show" do + it "edit company" do + visit referential_company_path(referential, subject) + click_link "Modifier ce transporteur" + fill_in "Nom", :with => "Company Modified" + fill_in "Numéro d'enregistrement", :with => "test-1" + click_button("Modifier transporteur") + expect(page).to have_content("Company Modified") + end + end + +end diff --git a/spec/features/connection_links_spec.rb b/spec/features/connection_links_spec.rb new file mode 100644 index 000000000..985aba7a6 --- /dev/null +++ b/spec/features/connection_links_spec.rb @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +require 'spec_helper' + +describe "ConnectionLinks", :type => :feature do + login_user + + let!(:connection_links) { Array.new(2) { create(:connection_link) } } + subject { connection_links.first } + + describe "list" do + it "display connection_links" do + visit referential_connection_links_path(referential) + expect(page).to have_content(connection_links.first.name) + expect(page).to have_content(connection_links.last.name) + end + + end + + describe "show" do + it "display connection_link" do + visit referential_connection_links_path(referential) + click_link "#{connection_links.first.name}" + expect(page).to have_content(connection_links.first.name) + end + + it "display map" do + allow(subject).to receive(:stop_areas).and_return(Array.new(2) { Factory(:stop_area) }) + visit referential_connection_links_path(referential) + click_link "#{connection_links.first.name}" + expect(page).to have_selector("#map", :class => 'connection_link') + end + + end + + describe "new" do + it "creates connection_link and return to show" do + visit referential_connection_links_path(referential) + click_link "Ajouter une correspondance" + fill_in "Nom", :with => "ConnectionLink 1" + fill_in "Identifiant Neptune", :with => "test:ConnectionLink:1" + click_button("Créer correspondance") + expect(page).to have_content("ConnectionLink 1") + end + end + + describe "edit and return to show" do + it "edit connection_link" do + visit referential_connection_link_path(referential, subject) + click_link "Modifier cette correspondance" + fill_in "Nom", :with => "ConnectionLink Modified" + click_button("Modifier correspondance") + expect(page).to have_content("ConnectionLink Modified") + end + end + +end diff --git a/spec/features/journey_pattern_spec.rb b/spec/features/journey_pattern_spec.rb new file mode 100644 index 000000000..f57bf2952 --- /dev/null +++ b/spec/features/journey_pattern_spec.rb @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +require 'spec_helper' + +describe "JourneyPatterns", :type => :feature do + login_user + + let(:line) { Factory(:line) } + let(:route) { Factory(:route, :line => line) } + let(:journey_pattern) { Factory(:journey_pattern, :route => route) } + + describe "from routes page to a journey_pattern page" do + it "display route's journey_patterns" do + pending + visit referential_line_route_path(referential,line,route) + expect(page).to have_content(journey_pattern.name) + end + end + describe "from route's page to journey_pattern's page" do + it "display journey_pattern properties" do + pending + visit referential_line_route_path(referential,line,route) + click_link "#{journey_pattern.name}" + expect(page).to have_content(journey_pattern.published_name) + expect(page).to have_content(journey_pattern.comment) + expect(page).to have_content(journey_pattern.registration_number) + end + end + describe "from route's page, create a new journey_pattern" do + it "return to route's page that display new journey_pattern" do + pending + visit referential_line_route_path(referential,line,route) + click_link "Ajouter une mission" + fill_in "Nom", :with => "A to B" + fill_in "Comment", :with => "AB" + click_button("Créer mission") + expect(page).to have_content("A to B") + end + end + describe "from route's page, select a journey_pattern and edit it" do + it "return to route's page with changed name" do + pending + visit referential_line_route_path(referential,line,route) + click_link "#{journey_pattern.name}" + click_link "Modifier cette mission" + fill_in "Nom", :with => "#{journey_pattern.name}-changed" + click_button("Modifier mission") + expect(page).to have_content("#{journey_pattern.name}-changed") + end + end + describe "from route's page, select a journey_pattern and delete it" do + it "return to route's page without journey_pattern name" do + pending + visit referential_line_route_path(referential,line,route) + click_link "#{journey_pattern.name}" + click_link "Supprimer cette mission" + expect(page).not_to have_content(journey_pattern.name) + end + end +end + diff --git a/spec/features/lines_spec.rb b/spec/features/lines_spec.rb new file mode 100644 index 000000000..4023c1f51 --- /dev/null +++ b/spec/features/lines_spec.rb @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +require 'spec_helper' + +describe "Lines", :type => :feature do + login_user + + let!(:network) { Factory(:network) } + let!(:company) { Factory(:company) } + let!(:lines) { Array.new(2) { Factory(:line_with_stop_areas, :network => network, :company => company) } } + subject { lines.first } + + describe "list" do + it "display lines" do + visit referential_lines_path(referential) + expect(page).to have_content(lines.first.name) + expect(page).to have_content(lines.last.name) + end + + end + + + describe "show" do + it "display line" do + visit referential_lines_path(referential) + click_link "#{lines.first.name}" + expect(page).to have_content(lines.first.name) + end + + it "display map" do + visit referential_lines_path(referential) + click_link "#{lines.first.name}" + expect(page).to have_selector("#map", :class => 'line') + end + + end + + describe "new" do + it "creates line and return to show" do + visit referential_lines_path(referential) + click_link "Ajouter une ligne" + fill_in "Nom", :with => "Line 1" + fill_in "Numéro d'enregistrement", :with => "1" + fill_in "Identifiant Neptune", :with => "test:Line:999" + click_button("Créer ligne") + expect(page).to have_content("Line 1") + end + end + + describe "edit and return to show" do + it "edit line" do + visit referential_line_path(referential, subject) + click_link "Modifier cette ligne" + fill_in "Nom", :with => "Line Modified" + fill_in "Numéro d'enregistrement", :with => "test-1" + click_button("Modifier ligne") + expect(page).to have_content("Line Modified") + end + end + +end diff --git a/spec/features/networks_spec.rb b/spec/features/networks_spec.rb new file mode 100644 index 000000000..3bfb63ffd --- /dev/null +++ b/spec/features/networks_spec.rb @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +require 'spec_helper' + +describe "Networks", :type => :feature do + login_user + + let!(:networks) { Array.new(2) { Factory(:network) } } + subject { networks.first } + + describe "list" do + it "display networks" do + visit referential_networks_path(referential) + expect(page).to have_content(networks.first.name) + expect(page).to have_content(networks.last.name) + end + + end + + describe "show" do + it "display network" do + allow(subject).to receive(:stop_areas).and_return(Array.new(2) { Factory(:stop_area) }) + visit referential_networks_path(referential) + click_link "#{networks.first.name}" + expect(page).to have_content(networks.first.name) + end + + it "display map" do + allow(subject).to receive(:stop_areas).and_return(Array.new(2) { Factory(:stop_area) }) + visit referential_networks_path(referential) + click_link "#{networks.first.name}" + expect(page).to have_selector("#map", :class => 'network') + end + + end + + describe "new" do + it "creates network and return to show" do + allow(subject).to receive(:stop_areas).and_return(Array.new(2) { Factory(:stop_area) }) + visit referential_networks_path(referential) + click_link "Ajouter un réseau" + fill_in "Nom", :with => "Network 1" + fill_in "Numéro d'enregistrement", :with => "test-1" + fill_in "Identifiant Neptune", :with => "test:GroupOfLine:1" + click_button("Créer réseau") + expect(page).to have_content("Network 1") + end + end + + describe "edit and return to show" do + it "edit network" do + allow(subject).to receive(:stop_areas).and_return(Array.new(2) { Factory(:stop_area) }) + visit referential_network_path(referential, subject) + click_link "Modifier ce réseau" + fill_in "Nom", :with => "Network Modified" + fill_in "Numéro d'enregistrement", :with => "test-1" + click_button("Modifier réseau") + expect(page).to have_content("Network Modified") + end + end + + # describe "delete", :js => true do + # it "delete network and return to the list" do + # subject.stub(:stop_areas).and_return(Array.new(2) { Factory(:stop_area) }) + # visit referential_network_path(referential, subject) + # click_link "Supprimer ce réseau" + # page.evaluate_script('window.confirm = function() { return true; }') + # click_button "Valider" + # page.should have_no_content(subject.name) + # end + + # end +end diff --git a/spec/features/referentials_spec.rb b/spec/features/referentials_spec.rb new file mode 100644 index 000000000..d4a21479f --- /dev/null +++ b/spec/features/referentials_spec.rb @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- +require 'spec_helper' + +describe "Referentials", :type => :feature do + login_user + + describe "index" do + + it "should support no referential" do + visit referentials_path + expect(page).to have_content("Espaces de Données") + end + + context "when several referentials exist" do + + def retrieve_referential_by_slug( slug) + @user.organisation.referentials.find_by_slug(slug) || + create(:referential, :slug => slug, :name => slug, :organisation => @user.organisation) + end + + let!(:referentials) { [ retrieve_referential_by_slug("aa"), + retrieve_referential_by_slug("bb")] } + + it "should show n referentials" do + visit referentials_path + expect(page).to have_content(referentials.first.name) + expect(page).to have_content(referentials.last.name) + end + + end + + end + + describe "create" do + + it "should" do + visit new_referential_path + fill_in "Nom", :with => "Test" + fill_in "Code", :with => "test" + fill_in "Point haut/droite de l'emprise par défaut", :with => "0.0, 0.0" + fill_in "Point bas/gauche de l'emprise par défaut", :with => "1.0, 1.0" + click_button "Créer Espace de Données" + + expect(Referential.where(:name => "Test")).not_to be_nil + # CREATE SCHEMA + end + + end + + describe "destroy" do + let(:referential) { create(:referential, :organisation => @user.organisation) } + + it "should remove referential" do + pending "Unauthorized DELETE (ticket #14)" + visit referential_path(referential) + click_link "Supprimer" + expect(Referential.where(:slug => referential.slug)).to be_blank + end + + end + +end diff --git a/spec/features/routes_spec.rb b/spec/features/routes_spec.rb new file mode 100644 index 000000000..da4120309 --- /dev/null +++ b/spec/features/routes_spec.rb @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +require 'spec_helper' + +describe "Routes", :type => :feature do + login_user + + let!(:line) { Factory(:line) } + let!(:route) { Factory(:route, :line => line) } + let!(:route2) { Factory(:route, :line => line) } + + describe "from lines page to a line page" do + it "display line's routes" do + pending + visit referential_lines_path(referential) + click_link "#{line.name}" + expect(page).to have_content(route.name) + expect(page).to have_content(route2.name) + end + end + describe "from line's page to route's page" do + it "display route properties" do + pending + visit referential_line_path(referential,line) + click_link "#{route.name}" + expect(page).to have_content(route.name) + expect(page).to have_content(route.number) + end + end + describe "from line's page, create a new route" do + it "return to line's page that display new route" do + pending + visit referential_line_path(referential,line) + click_link "Ajouter une séquence d'arrêts" + fill_in "Nom", :with => "A to B" + fill_in "Indice", :with => "AB" + click_button("Créer Séquence d'arrêts") + expect(page).to have_content("A to B") + end + end + describe "from line's page, select a route and edit it" do + it "return to line's page with changed name" do + pending + visit referential_line_path(referential,line) + click_link "#{route.name}" + click_link "Modifier cette séquence d'arrêts" + fill_in "Nom", :with => "#{route.name}-changed" + click_button("Modifier Séquence d'arrêts") + expect(page).to have_content("#{route.name}-changed") + end + end + describe "from line's page, select a route and delete it" do + it "return to line's page without route name" do + pending + visit referential_line_path(referential,line) + click_link "#{route.name}" + #click_link "Supprimer cette séquence d'arrêts" + #page.should_not have_content(route.name) + end + end +end diff --git a/spec/features/stop_areas_spec.rb b/spec/features/stop_areas_spec.rb new file mode 100644 index 000000000..4d1b7e2bb --- /dev/null +++ b/spec/features/stop_areas_spec.rb @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +require 'spec_helper' + +describe "StopAreas", :type => :feature do + login_user + + let!(:stop_areas) { Array.new(2) { Factory(:stop_area) } } + subject { stop_areas.first } + + describe "list" do + it "display stop_areas" do + visit referential_stop_areas_path(referential) + expect(page).to have_content(stop_areas.first.name) + expect(page).to have_content(stop_areas.last.name) + end + end + + describe "show" do + it "display stop_area" do + visit referential_stop_areas_path(referential) + click_link "#{stop_areas.first.name}" + expect(page).to have_content(stop_areas.first.name) + end + + it "display map" do + visit referential_stop_areas_path(referential) + click_link "#{stop_areas.first.name}" + expect(page).to have_selector("#map", :class => 'stop_area') + end + + end + + describe "new" do + it "creates stop_area and return to show" do + visit referential_stop_areas_path(referential) + click_link "Ajouter un arrêt" + fill_in "Nom", :with => "StopArea 1" + fill_in "Numéro d'enregistrement", :with => "test-1" + fill_in "Identifiant Neptune", :with => "test:StopArea:1" + click_button("Créer arrêt") + expect(page).to have_content("StopArea 1") + end + end + + describe "edit and return to show" do + it "edit stop_area" do + visit referential_stop_area_path(referential, subject) + click_link "Modifier cet arrêt" + fill_in "Nom", :with => "StopArea Modified" + fill_in "Numéro d'enregistrement", :with => "test-1" + click_button("Modifier arrêt") + expect(page).to have_content("StopArea Modified") + end + end + +end diff --git a/spec/features/stop_points_spec.rb b/spec/features/stop_points_spec.rb new file mode 100644 index 000000000..ec3aca475 --- /dev/null +++ b/spec/features/stop_points_spec.rb @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +require 'spec_helper' + +describe "StopPoints", :type => :feature do + login_user + + let(:line) { Factory(:line) } + let(:route) { Factory(:route, :line => line) } + let(:route2) { Factory(:route, :line => line) } + + describe "from route's page to a stop points page" do + it "display route's stop points" do + pending + visit referential_line_route_path(referential,line,route) + click_link "Gérer les arrêts de la séquence" + route.stop_areas.each do |sa| + expect(page).to have_content(sa.name) + end + end + end + describe "from route's page, go to new stop point page" do + it "display route's stop points" do + pending + visit referential_line_route_path(referential,line,route) + click_link "Gérer les arrêts de la séquence" + click_link "Ajouter un arrêt à la séquence" + expect(page).to have_content( "Sélectionner un arrêt") + end + end +end diff --git a/spec/features/time_tables_spec.rb b/spec/features/time_tables_spec.rb new file mode 100644 index 000000000..d9304c5ba --- /dev/null +++ b/spec/features/time_tables_spec.rb @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +require 'spec_helper' + +describe "TimeTables", :type => :feature do + login_user + + let!(:time_tables) { Array.new(2) { create(:time_table) } } + subject { time_tables.first } + + describe "list" do + it "display time_tables" do + visit referential_time_tables_path(referential) + expect(page).to have_content(time_tables.first.comment) + expect(page).to have_content(time_tables.last.comment) + end + + end + + describe "show" do + it "display time_table" do + visit referential_time_tables_path(referential) + click_link "#{time_tables.first.comment}" + expect(page).to have_content(time_tables.first.comment) + end + + end + + describe "new" do + it "creates time_table and return to show" do + visit referential_time_tables_path(referential) + click_link "Ajouter un calendrier" + fill_in "Nom", :with => "TimeTable 1" + fill_in "Identifiant Neptune", :with => "test:Timetable:1" + click_button("Créer Calendrier") + expect(page).to have_content("TimeTable 1") + end + end + + describe "edit and return to show" do + it "edit time_table" do + visit referential_time_table_path(referential, subject) + click_link "Modifier ce calendrier" + fill_in "Nom", :with => "TimeTable Modified" + click_button("Modifier Calendrier") + expect(page).to have_content("TimeTable Modified") + end + end + +end diff --git a/spec/features/vehicle_journey_imports_spec.rb b/spec/features/vehicle_journey_imports_spec.rb new file mode 100644 index 000000000..3df9f1054 --- /dev/null +++ b/spec/features/vehicle_journey_imports_spec.rb @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- +require 'spec_helper' + +describe "VehicleJourneyImports", :type => :feature do + login_user + + let!(:route) { create :route } + + let(:valid_file_path) { + csv_file = update_csv_file_with_factory_data("vehicle_journey_imports_valid.csv") + File.path(csv_file) + } + + let(:invalid_file_path) { + csv_file = update_csv_file_with_factory_data("vehicle_journey_imports_with_vjas_invalid.csv") + File.path(csv_file) + } + + def update_csv_file_with_factory_data(filename) + csv_file = CSV.open("/tmp/#{filename}", "wb",{ :col_sep => ";"}) do |csv| + counter = 0 + CSV.foreach( Rails.root.join("spec", "fixtures", "#{filename}").to_s , {:col_sep => ";"}) do |row| + if counter == 0 + row2 = [] + row.each do |cell| + cell = "" if cell == "import:VehicleJourney:1" + cell = "" if cell == "import:VehicleJourney:2" + cell = "" if cell == "import:VehicleJourney:3" + row2 << cell + end + csv << row2 + elsif counter < 7 + csv << row + else + csv << ( row[0] = route.stop_points[counter - 7].id; row) + end + counter += 1 + end + + end + + File.open("/tmp/#{filename}") + end + + describe "new" do + it "should create vehicle journey file and return to route show page" do + visit new_referential_line_route_vehicle_journey_import_path(referential, route.line, route) + attach_file('Fichier', valid_file_path) + click_button "Lancer l'import" + expect(page).to have_content(I18n.t("vehicle_journey_imports.new.success")) + expect(page).to have_content("Séquence d'arrêts #{route.name}") + end + + it "should return error messages when file is invalid" do + visit new_referential_line_route_vehicle_journey_import_path(referential, route.line, route) + attach_file('Fichier', invalid_file_path) + click_button "Lancer l'import" + expect(page).to have_content(I18n.t("vehicle_journey_imports.errors.import_aborted")) + end + + it "should return error message when file missing on upload" do + visit new_referential_line_route_vehicle_journey_import_path(referential, route.line, route) + click_button "Lancer l'import" + expect(page).to have_content(I18n.t("vehicle_journey_imports.errors.import_aborted")) + end + end + +end |
