diff options
| author | Robert | 2017-11-03 17:10:12 +0100 | 
|---|---|---|
| committer | Robert | 2017-11-03 17:55:21 +0100 | 
| commit | ea1cbc874aa6609c6217514640eb1eca20665d41 (patch) | |
| tree | 9b9017cbf75868b1d9b4fb2281f17116e101d07e | |
| parent | e0c3ee0f2b418387c152cd74bd7d93723113d976 (diff) | |
| download | chouette-core-ea1cbc874aa6609c6217514640eb1eca20665d41.tar.bz2 | |
    Fixes: #4802@1h;
      CR 3rd (and hopefully last) part
      - more typo corrections
      - reactivating deactivated specs
      - fixed reactivated specs
| -rw-r--r-- | config/locales/referentials.en.yml | 2 | ||||
| -rw-r--r-- | config/locales/referentials.fr.yml | 2 | ||||
| -rw-r--r-- | spec/features/workbenches_spec.rb | 399 | 
3 files changed, 201 insertions, 202 deletions
| diff --git a/config/locales/referentials.en.yml b/config/locales/referentials.en.yml index bf638f562..7923ba5f2 100644 --- a/config/locales/referentials.en.yml +++ b/config/locales/referentials.en.yml @@ -38,7 +38,7 @@ en:        edit: "Edit this data space"        clone: "Clone this data space"      errors: -      inconsistent_organisation: "Organisation of asscociated workstation is (%{indirect_name}), while directly associated organisation is (%{direct_name}), they need to be equal" +      inconsistent_organisation: "Organisation of asscociated workbench is (%{indirect_name}), while directly associated organisation is (%{direct_name}), they need to be equal"        validity_period: "Invalid validity periode"        pg_excluded: "can't begins with pg_"        public_excluded: "public is a reserved value" diff --git a/config/locales/referentials.fr.yml b/config/locales/referentials.fr.yml index bec1e87d8..6aa81b33d 100644 --- a/config/locales/referentials.fr.yml +++ b/config/locales/referentials.fr.yml @@ -38,7 +38,7 @@ fr:        edit: "Editer ce jeu de données"        clone: "Cloner ce jeu de données"      errors: -      inconsistent_organisation: "L'organisation asscociée par workstation est (%{indirect_name}), mais l'organisation associée directement est (%{direct_name}), elles doivent être identiques." +      inconsistent_organisation: "L'organisation asscociée par espace de travail est (%{indirect_name}), mais l'organisation associée directement est (%{direct_name}), elles doivent être identiques."        validity_period: "Période de validité invalide"        pg_excluded: "ne peut pas commencer par pg_ (valeurs réservées)"        public_excluded: "public est une valeur réservée" diff --git a/spec/features/workbenches_spec.rb b/spec/features/workbenches_spec.rb index 5a3146603..f1151a67b 100644 --- a/spec/features/workbenches_spec.rb +++ b/spec/features/workbenches_spec.rb @@ -1,202 +1,201 @@  RSpec.describe 'Workbenches', type: :feature do -  pending "Breadcrumb error" -  # login_user - -  # let(:line_ref) { create :line_referential } -  # let(:line) { create :line, line_referential: line_ref } -  # let(:ref_metadata) { create(:referential_metadata, lines: [line]) } - -  # let!(:workbench) { create(:workbench, line_referential: line_ref, organisation: @user.organisation) } -  # let!(:referential) { create :workbench_referential, workbench: workbench, metadatas: [ref_metadata], organisation: @user.organisation } - -  # describe 'show' do -  #   context 'ready' do -  #     it 'should show ready referentials' do -  #       visit workbench_path(workbench) -  #       expect(page).to have_content(referential.name) -  #     end - -  #     it 'should not show unready referentials' do -  #       referential.update_attribute(:ready, false) -  #       visit workbench_path(workbench) -  #       expect(page).to_not have_content(referential.name) -  #     end -  #   end - -  #   context 'filtering' do -  #     let(:another_organisation) { create :organisation } -  #     let(:another_line) { create :line, line_referential: line_ref } -  #     let(:another_ref_metadata) { create(:referential_metadata, lines: [another_line]) } -  #     let!(:other_referential) { create :workbench_referential, workbench: workbench, metadatas: [another_ref_metadata] } - -  #     before(:each) do -  #       visit workbench_path(workbench) -  #     end - -  #     context 'without any filter' do -  #       it 'should have results' do -  #         click_button I18n.t('actions.filter') -  #         expect(page).to have_content(referential.name) -  #         expect(page).to have_content(other_referential.name) -  #       end -  #     end - -  #     context 'filter by organisation' do -  #       it 'should be possible to filter by organisation' do -  #         find("#q_organisation_name_eq_any_#{@user.organisation.name.parameterize.underscore}").set(true) -  #         click_button I18n.t('actions.filter') - -  #         expect(page).to have_content(referential.name) -  #         expect(page).not_to have_content(other_referential.name) -  #       end - -  #       it 'should be possible to filter by multiple organisation' do -  #         find("#q_organisation_name_eq_any_#{@user.organisation.name.parameterize.underscore}").set(true) -  #         find("#q_organisation_name_eq_any_#{another_organisation.name.parameterize.underscore}").set(true) -  #         click_button I18n.t('actions.filter') - -  #         expect(page).to have_content(referential.name) -  #         expect(page).to have_content(other_referential.name) -  #       end - -  #       it 'should keep filter value on submit' do -  #         box = "#q_organisation_name_eq_any_#{another_organisation.name.parameterize.underscore}" -  #         find(box).set(true) -  #         click_button I18n.t('actions.filter') -  #         expect(find(box)).to be_checked -  #       end -  #     end - -  #     context 'filter by status' do -  #       it 'should display archived referentials' do -  #         other_referential.update_attribute(:archived_at, Date.today) -  #         find("#q_archived_at_not_null").set(true) - -  #         click_button I18n.t('actions.filter') -  #         expect(page).to have_content(other_referential.name) -  #         expect(page).to_not have_content(referential.name) -  #       end - -  #       it 'should display both archived and unarchived referentials' do -  #         other_referential.update_attribute(:archived_at, Date.today) -  #         find("#q_archived_at_not_null").set(true) -  #         find("#q_archived_at_null").set(true) - -  #         click_button I18n.t('actions.filter') -  #         expect(page).to have_content(referential.name) -  #         expect(page).to have_content(other_referential.name) -  #       end - -  #       it 'should display unarchived referentials' do -  #         other_referential.update_attribute(:archived_at, Date.today) -  #         find("#q_archived_at_null").set(true) - -  #         click_button I18n.t('actions.filter') -  #         expect(page).to have_content(referential.name) -  #         expect(page).to_not have_content(other_referential.name) -  #       end - -  #       it 'should keep filter value on submit' do -  #         find("#q_archived_at_null").set(true) -  #         click_button I18n.t('actions.filter') -  #         expect(find("#q_archived_at_null")).to be_checked -  #       end -  #     end - -  #     context 'filter by validity period' do -  #       def fill_validity_field date, field -  #         select date.year,  :from => "q[validity_period][#{field}(1i)]" -  #         select I18n.t("date.month_names")[date.month], :from => "q[validity_period][#{field}(2i)]" -  #         select date.day,   :from => "q[validity_period][#{field}(3i)]" -  #       end - -  #       it 'should show results for referential in range' do -  #         dates = referential.validity_period.to_a -  #         fill_validity_field dates[0], 'start_date' -  #         fill_validity_field dates[1], 'end_date' -  #         click_button I18n.t('actions.filter') - -  #         expect(page).to have_content(referential.name) -  #         expect(page).to_not have_content(other_referential.name) -  #       end - -  #       it 'should keep filtering on sort' do -  #         dates = referential.validity_period.to_a -  #         fill_validity_field dates[0], 'start_date' -  #         fill_validity_field dates[1], 'end_date' -  #         click_button I18n.t('actions.filter') - -  #         find('a[href*="&sort=validity_period"]').click - -  #         expect(page).to have_content(referential.name) -  #         expect(page).to_not have_content(other_referential.name) -  #       end - -  #       it 'should not show results for out off range' do -  #         fill_validity_field(Date.today - 2.year, 'start_date') -  #         fill_validity_field(Date.today - 1.year, 'end_date') -  #         click_button I18n.t('actions.filter') - -  #         expect(page).to_not have_content(referential.name) -  #         expect(page).to_not have_content(other_referential.name) -  #       end - -  #       it 'should keep value on submit' do -  #         dates = referential.validity_period.to_a -  #         ['start_date', 'end_date'].each_with_index do |field, index| -  #           fill_validity_field dates[index], field -  #         end -  #         click_button I18n.t('actions.filter') - -  #         ['start_date', 'end_date'].each_with_index do |field, index| -  #           expect(find("#q_validity_period_#{field}_3i").value).to eq dates[index].day.to_s -  #           expect(find("#q_validity_period_#{field}_2i").value).to eq dates[index].month.to_s -  #           expect(find("#q_validity_period_#{field}_1i").value).to eq dates[index].year.to_s -  #         end -  #       end -  #     end - -  #     context 'permissions' do -  #       before(:each) do -  #         visit workbench_path(workbench) -  #       end - -  #       context 'user has the permission to create referentials' do -  #         it 'shows the link for a new referetnial' do -  #           expect(page).to have_link(I18n.t('actions.add'), href: new_referential_path(workbench_id: workbench.id)) -  #         end -  #       end - -  #       context 'user does not have the permission to create referentials' do -  #         it 'does not show the clone link for referential' do -  #           @user.update_attribute(:permissions, []) -  #           visit referential_path(referential) -  #           expect(page).not_to have_link(I18n.t('actions.add'), href: new_referential_path(workbench_id: workbench.id)) -  #         end -  #       end -  #     end - -  #     describe 'create new Referential' do -  #       #TODO Manage functional_scope -  #       it "create a new Referential with a specifed line and period" do -  #         skip "The functional scope for the Line collection causes problems" do -  #           functional_scope = JSON.generate(Chouette::Line.all.map(&:objectid)) -  #           lines = Chouette::Line.where(objectid: functional_scope) - -  #           @user.organisation.update_attribute(:sso_attributes, { functional_scope: functional_scope } ) -  #           ref_metadata.update_attribute(:line_ids, lines.map(&:id)) - -  #           referential.destroy -  #           visit workbench_path(workbench) -  #           click_link I18n.t('actions.add') -  #           fill_in "referential[name]", with: "Referential to test creation" -  #           select ref_metadata.line_ids.first, from: 'referential[metadatas_attributes][0][lines][]' - -  #           click_button "Valider" -  #           expect(page).to have_css("h1", text: "Referential to test creation") -  #         end -  #       end -  #     end -  #   end -  # end +  login_user + +  let(:line_ref) { create :line_referential } +  let(:line) { create :line, line_referential: line_ref } +  let(:ref_metadata) { create(:referential_metadata, lines: [line]) } + +  let!(:workbench) { create(:workbench, line_referential: line_ref, organisation: @user.organisation) } +  let!(:referential) { create :workbench_referential, workbench: workbench, metadatas: [ref_metadata], organisation: @user.organisation } + +  describe 'show' do +    context 'ready' do +      it 'should show ready referentials' do +        visit workbench_path(workbench) +        expect(page).to have_content(referential.name) +      end + +      it 'should not show unready referentials' do +        referential.update_attribute(:ready, false) +        visit workbench_path(workbench) +        expect(page).to_not have_content(referential.name) +      end +    end + +    context 'filtering' do +      let!(:another_organisation) { create :organisation } +      let(:another_line) { create :line, line_referential: line_ref } +      let(:another_ref_metadata) { create(:referential_metadata, lines: [another_line]) } +      let!(:other_referential) { create :workbench_referential, workbench: workbench, metadatas: [another_ref_metadata] } + +      before(:each) do +        visit workbench_path(workbench) +      end + +      context 'without any filter' do +        it 'should have results' do +          click_button I18n.t('actions.filter') +          expect(page).to have_content(referential.name) +          expect(page).to have_content(other_referential.name) +        end +      end + +      context 'filter by organisation' do +        it 'should be possible to filter by organisation' do +          find("#q_organisation_name_eq_any_#{@user.organisation.name.parameterize.underscore}").set(true) +          click_button I18n.t('actions.filter') + +          expect(page).to have_content(referential.name) +          expect(page).not_to have_content(other_referential.name) +        end + +        it 'should be possible to filter by multiple organisation' do +          find("#q_organisation_name_eq_any_#{@user.organisation.name.parameterize.underscore}").set(true) +          find("#q_organisation_name_eq_any_#{other_referential.organisation.name.parameterize.underscore}").set(true) +          click_button I18n.t('actions.filter') + +          expect(page).to have_content(referential.name) +          expect(page).to have_content(other_referential.name) +        end + +        it 'should keep filter value on submit' do +          box = "#q_organisation_name_eq_any_#{another_organisation.name.parameterize.underscore}" +          find(box).set(true) +          click_button I18n.t('actions.filter') +          expect(find(box)).to be_checked +        end +      end + +      context 'filter by status' do +        it 'should display archived referentials' do +          other_referential.update_attribute(:archived_at, Date.today) +          find("#q_archived_at_not_null").set(true) + +          click_button I18n.t('actions.filter') +          expect(page).to have_content(other_referential.name) +          expect(page).to_not have_content(referential.name) +        end + +        it 'should display both archived and unarchived referentials' do +          other_referential.update_attribute(:archived_at, Date.today) +          find("#q_archived_at_not_null").set(true) +          find("#q_archived_at_null").set(true) + +          click_button I18n.t('actions.filter') +          expect(page).to have_content(referential.name) +          expect(page).to have_content(other_referential.name) +        end + +        it 'should display unarchived referentials' do +          other_referential.update_attribute(:archived_at, Date.today) +          find("#q_archived_at_null").set(true) + +          click_button I18n.t('actions.filter') +          expect(page).to have_content(referential.name) +          expect(page).to_not have_content(other_referential.name) +        end + +        it 'should keep filter value on submit' do +          find("#q_archived_at_null").set(true) +          click_button I18n.t('actions.filter') +          expect(find("#q_archived_at_null")).to be_checked +        end +      end + +      context 'filter by validity period' do +        def fill_validity_field date, field +          select date.year,  :from => "q[validity_period][#{field}(1i)]" +          select I18n.t("date.month_names")[date.month], :from => "q[validity_period][#{field}(2i)]" +          select date.day,   :from => "q[validity_period][#{field}(3i)]" +        end + +        it 'should show results for referential in range' do +          dates = referential.validity_period.to_a +          fill_validity_field dates[0], 'start_date' +          fill_validity_field dates[1], 'end_date' +          click_button I18n.t('actions.filter') + +          expect(page).to have_content(referential.name) +          expect(page).to_not have_content(other_referential.name) +        end + +        it 'should keep filtering on sort' do +          dates = referential.validity_period.to_a +          fill_validity_field dates[0], 'start_date' +          fill_validity_field dates[1], 'end_date' +          click_button I18n.t('actions.filter') + +          find('a[href*="&sort=validity_period"]').click + +          expect(page).to have_content(referential.name) +          expect(page).to_not have_content(other_referential.name) +        end + +        it 'should not show results for out off range' do +          fill_validity_field(Date.today - 2.year, 'start_date') +          fill_validity_field(Date.today - 1.year, 'end_date') +          click_button I18n.t('actions.filter') + +          expect(page).to_not have_content(referential.name) +          expect(page).to_not have_content(other_referential.name) +        end + +        it 'should keep value on submit' do +          dates = referential.validity_period.to_a +          ['start_date', 'end_date'].each_with_index do |field, index| +            fill_validity_field dates[index], field +          end +          click_button I18n.t('actions.filter') + +          ['start_date', 'end_date'].each_with_index do |field, index| +            expect(find("#q_validity_period_#{field}_3i").value).to eq dates[index].day.to_s +            expect(find("#q_validity_period_#{field}_2i").value).to eq dates[index].month.to_s +            expect(find("#q_validity_period_#{field}_1i").value).to eq dates[index].year.to_s +          end +        end +      end + +      context 'permissions' do +        before(:each) do +          visit workbench_path(workbench) +        end + +        context 'user has the permission to create referentials' do +          it 'shows the link for a new referetnial' do +            expect(page).to have_link(I18n.t('actions.add'), href: new_referential_path(workbench_id: workbench.id)) +          end +        end + +        context 'user does not have the permission to create referentials' do +          it 'does not show the clone link for referential' do +            @user.update_attribute(:permissions, []) +            visit referential_path(referential) +            expect(page).not_to have_link(I18n.t('actions.add'), href: new_referential_path(workbench_id: workbench.id)) +          end +        end +      end + +      describe 'create new Referential' do +        #TODO Manage functional_scope +        it "create a new Referential with a specifed line and period" do +          skip "The functional scope for the Line collection causes problems" do +            functional_scope = JSON.generate(Chouette::Line.all.map(&:objectid)) +            lines = Chouette::Line.where(objectid: functional_scope) + +            @user.organisation.update_attribute(:sso_attributes, { functional_scope: functional_scope } ) +            ref_metadata.update_attribute(:line_ids, lines.map(&:id)) + +            referential.destroy +            visit workbench_path(workbench) +            click_link I18n.t('actions.add') +            fill_in "referential[name]", with: "Referential to test creation" +            select ref_metadata.line_ids.first, from: 'referential[metadatas_attributes][0][lines][]' + +            click_button "Valider" +            expect(page).to have_css("h1", text: "Referential to test creation") +          end +        end +      end +    end +  end  end | 
