From 5b391788c8ee761b77d0ab3c7a74e9e8c504b881 Mon Sep 17 00:00:00 2001 From: Martin Gaher Date: Thu, 17 Mar 2022 20:33:29 +0100 Subject: [PATCH 1/9] Test task - 317 - Accept Terms of use for users --- app/assets/stylesheets/application.css.scss | 10 +++ app/controllers/application_controller.rb | 5 ++ app/controllers/sites_controller.rb | 7 +- app/controllers/users_controller.rb | 19 ++++++ app/views/layouts/application.html.haml | 65 +++++++++++-------- config/locales/future_kids.de.yml | 3 + config/routes.rb | 5 ++ ...3456_add_terms_of_use_accepted_to_users.rb | 5 ++ 8 files changed, 90 insertions(+), 29 deletions(-) create mode 100644 app/controllers/users_controller.rb create mode 100644 db/migrate/20220317103456_add_terms_of_use_accepted_to_users.rb diff --git a/app/assets/stylesheets/application.css.scss b/app/assets/stylesheets/application.css.scss index 6b9ebb17..16081746 100644 --- a/app/assets/stylesheets/application.css.scss +++ b/app/assets/stylesheets/application.css.scss @@ -221,6 +221,16 @@ form.schedule { margin: 10px; } +.term-of-use { + margin-top: $header-height + 10px; + margin-bottom: $footer-height; + padding: 10px; +} + +.term-of-use-button { + margin: 10px; + float:right; +} .kid-mentor-schedules { .header { diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 3b1cd212..c80ceaad 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -6,6 +6,7 @@ class ApplicationController < ActionController::Base before_action :load_site_configuration before_action :logout_inactive + before_action :terms_of_use before_action :authenticate_user! before_action :intercept_sensitive_params! protect_from_forgery prepend: true, with: :exception @@ -37,6 +38,10 @@ def load_site_configuration @site = Site.load end + def terms_of_use + @content = Site.load.terms_of_use_content_parsed + end + def logout_inactive return true if 'sessions' == controller_name return true if controller_name == 'self_registrations' diff --git a/app/controllers/sites_controller.rb b/app/controllers/sites_controller.rb index d601108a..e28a2397 100644 --- a/app/controllers/sites_controller.rb +++ b/app/controllers/sites_controller.rb @@ -18,7 +18,12 @@ def show end def update - if @site.update(site_params) + @site.attributes = site_params + if(@site.terms_of_use_content_changed?) + User.update_all(terms_of_use_accepted: false) + end + + if @site.save redirect_to edit_site_url, notice: I18n.t('crud.action.update_success') else render action: :edit diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb new file mode 100644 index 00000000..86ab6640 --- /dev/null +++ b/app/controllers/users_controller.rb @@ -0,0 +1,19 @@ +class UsersController < ApplicationController + + def edit_terms + if(current_user != nil) + user = User.find_by(id: current_user.id) + user.update(terms_of_use_accepted: true) + end + + if current_user.is_a?(Mentor) && current_user.kids.empty? + # if a menotr has no kids yet assigned, go to available kids + redirect_to available_kids_path + elsif current_user.is_a?(Teacher) && current_user.mentor_matchings.pluck(:state).include?('pending') + # if teacher has some pending requests from mentors + redirect_to mentor_matchings_path + else + redirect_to root_path + end + end +end \ No newline at end of file diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 1b4c1298..2fa8492e 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -1,3 +1,4 @@ + !!! %html{lang: "de"} %head @@ -46,39 +47,47 @@ %li.divider %li= link_to 'Abmelden', destroy_user_session_path, method: :delete - - #sidebar-wrapper + - if (user_signed_in? && current_user.terms_of_use_accepted == false) .container - #sidebar.hidden-xs.hidden-sm - %h1.logo - - if @site.logo.present? - %img{:src => rails_representation_url(@site.logo_medium)} + .term-of-use + = @content&.html_safe + = button_to t('activerecord.attributes.site.terms_of_use_accept.button_accept'), { action: "edit_terms", :controller=>"users", :method => :get }, { class: 'btn btn-xs btn-success term-of-use-button' } + .btn.btn-xs.btn-default.term-of-use-button + = link_to t('activerecord.attributes.site.terms_of_use_accept.button_decline'), destroy_user_session_path, method: :delete - - if user_signed_in? - .contextual_links_panel.panel.panel-default.hidden-xs.hidden-sm - = render 'layouts/actions' - = yield :sidebar + -else + #sidebar-wrapper + .container + #sidebar.hidden-xs.hidden-sm + %h1.logo + - if @site.logo.present? + %img{:src => rails_representation_url(@site.logo_medium)} - #main - .container - .row - #content.col-md-offset-3.col-md-9 - - flash.each do |name, msg| - = boot_alert(msg, name) unless msg.blank? - = yield + - if user_signed_in? + .contextual_links_panel.panel.panel-default.hidden-xs.hidden-sm + = render 'layouts/actions' + = yield :sidebar - .container - .row.visible-xs.visible-sm.hidden-md.hidden-lg - - if user_signed_in? - .contextual_links_panel.mobile-actions.panel.panel-default - = render 'layouts/actions' + #main + .container + .row + #content.col-md-offset-3.col-md-9 + - flash.each do |name, msg| + = boot_alert(msg, name) unless msg.blank? + = yield - - if @site.footer_address.present? || @site.footer_email.present? - #footer .container - .col-md12 - = @site.footer_address - - if @site.footer_email.present? - = mail_to @site.footer_email, nil, :encode => "hex" + .row.visible-xs.visible-sm.hidden-md.hidden-lg + - if user_signed_in? + .contextual_links_panel.mobile-actions.panel.panel-default + = render 'layouts/actions' + + - if @site.footer_address.present? || @site.footer_email.present? + #footer + .container + .col-md12 + = @site.footer_address + - if @site.footer_email.present? + = mail_to @site.footer_email, nil, :encode => "hex" - diff --git a/config/locales/future_kids.de.yml b/config/locales/future_kids.de.yml index 6aab2416..7f5be1ae 100644 --- a/config/locales/future_kids.de.yml +++ b/config/locales/future_kids.de.yml @@ -247,6 +247,9 @@ de: public_signups_active: öffentliche Registrierungen aktiv title: Titel des Browsertabs css: Seitenspezifisches CSS + terms_of_use_accept: + button_accept: "Nutzungsbedingungen Akzeptieren" + button_decline: "Nutzungsbedingungen Ablehnen, Abmelden" substitution: kid: "Kind" mentor: "Mentor/in" diff --git a/config/routes.rb b/config/routes.rb index 13847a70..0a11d496 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -42,6 +42,11 @@ resources :teachers resources :principals resource :site + resource :user do + member do + post 'edit_terms' + end + end resources :substitutions do member do put 'inactivate' diff --git a/db/migrate/20220317103456_add_terms_of_use_accepted_to_users.rb b/db/migrate/20220317103456_add_terms_of_use_accepted_to_users.rb new file mode 100644 index 00000000..b111289b --- /dev/null +++ b/db/migrate/20220317103456_add_terms_of_use_accepted_to_users.rb @@ -0,0 +1,5 @@ +class AddTermsOfUseAcceptedToUsers < ActiveRecord::Migration[6.1] + def change + add_column :users, :terms_of_use_accepted, :boolean, default: false + end +end From da355a46ec293cecde7099c2e26c27505743255c Mon Sep 17 00:00:00 2001 From: Martin Gaher Date: Sun, 20 Mar 2022 18:04:37 +0100 Subject: [PATCH 2/9] repair tests --- app/controllers/sites_controller.rb | 4 ++- spec/controllers/admins_controller_spec.rb | 10 +++---- .../application_controller_spec.rb | 8 +++--- spec/controllers/comments_controller_spec.rb | 4 +-- spec/controllers/documents_controller_spec.rb | 4 +-- spec/controllers/journals_controller_spec.rb | 8 +++--- .../kid_mentor_relations_controller_spec.rb | 4 +-- spec/controllers/kids_controller_spec.rb | 8 +++--- .../mentor_matchings_controller_spec.rb | 4 +-- spec/controllers/mentors_controller_spec.rb | 12 ++++---- .../controllers/principals_controller_spec.rb | 2 +- spec/controllers/reminders_controller_spec.rb | 6 ++-- spec/controllers/reviews_controller_spec.rb | 4 +-- spec/controllers/schools_controller_spec.rb | 2 +- .../self_registrations_controller_spec.rb | 4 +-- spec/controllers/sites_controller_spec.rb | 2 +- spec/controllers/teachers_controller_spec.rb | 28 +++++++++---------- spec/requests/admin_updating_school_spec.rb | 2 +- spec/requests/available_kids_spec.rb | 6 ++-- spec/requests/documents_spec.rb | 2 +- .../filter_mentors_on_coaches_spec.rb | 8 +++--- .../filter_mentors_on_meeting_day_spec.rb | 6 ++-- .../filter_mentors_on_schools_spec.rb | 8 +++--- spec/requests/filter_reminders_spec.rb | 2 +- spec/requests/first_year_assessment_spec.rb | 6 ++-- spec/requests/kid_creation_stories_spec.rb | 4 +-- spec/requests/kid_mentor_relations_spec.rb | 8 +++--- spec/requests/kid_spec.rb | 2 +- spec/requests/login_stories_spec.rb | 2 +- spec/requests/mentor_matchings_spec.rb | 14 +++++----- spec/requests/principals_spec.rb | 2 +- spec/requests/self_registrations.rb | 4 +-- .../show_kid_mentors_schedules_spec.rb | 28 +++++++++---------- .../show_mentors_schools_without_dup_spec.rb | 2 +- spec/requests/site_configuration_spec.rb | 6 ++-- spec/requests/substitutions_workflow_spec.rb | 12 ++++---- .../teacher_navigation_stories_spec.rb | 2 +- spec/requests/teachers_spec.rb | 2 +- spec/requests/termination_assessment_spec.rb | 4 +-- 39 files changed, 124 insertions(+), 122 deletions(-) diff --git a/app/controllers/sites_controller.rb b/app/controllers/sites_controller.rb index e28a2397..9bb92338 100644 --- a/app/controllers/sites_controller.rb +++ b/app/controllers/sites_controller.rb @@ -20,7 +20,9 @@ def show def update @site.attributes = site_params if(@site.terms_of_use_content_changed?) - User.update_all(terms_of_use_accepted: false) + id = current_user.id + users = User.where("id != ?", id) + users.update_all(terms_of_use_accepted: false) end if @site.save diff --git a/spec/controllers/admins_controller_spec.rb b/spec/controllers/admins_controller_spec.rb index 717da1f2..8f70165f 100644 --- a/spec/controllers/admins_controller_spec.rb +++ b/spec/controllers/admins_controller_spec.rb @@ -3,20 +3,20 @@ describe AdminsController do context 'as an admin' do before(:each) do - @admin = create(:admin) + @admin = create(:admin, terms_of_use_accepted: true) sign_in @admin end context 'index' do it 'assigns two admins in the index' do - 2.times { create(:admin) } + 2.times { create(:admin, terms_of_use_accepted: true) } get :index expect(assigns(:admins).size).to eq(3) # 3 including the signed in admin expect(response).to be_successful end it 'excludes inactive admins' do - create(:admin, inactive: true) + create(:admin, inactive: true, terms_of_use_accepted: true) get :index expect(assigns(:admins).size).to eq(1) end @@ -41,8 +41,8 @@ context 'as a mentor' do before(:each) do - @admin = create(:admin) - @mentor = create(:mentor) + @admin = create(:admin, terms_of_use_accepted: true) + @mentor = create(:mentor, terms_of_use_accepted: true) sign_in @mentor end diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb index 147c260c..c2aca6a8 100644 --- a/spec/controllers/application_controller_spec.rb +++ b/spec/controllers/application_controller_spec.rb @@ -2,15 +2,15 @@ describe ApplicationController do - let!(:mentor) { create(:mentor, sex: 'f') } + let!(:mentor) { create(:mentor, sex: 'f', terms_of_use_accepted: true) } let!(:kid) { create(:kid, sex: 'f') } let!(:kid2) { create(:kid, sex: 'f') } - let!(:mentor_with_kids) { create(:mentor, sex: 'f', kids: [kid]) } + let!(:mentor_with_kids) { create(:mentor, sex: 'f', kids: [kid], terms_of_use_accepted: true) } let!(:pending_mentor_matching) { create(:mentor_matching, mentor: mentor, kid: kid, state: 'pending') } let!(:reserved_mentor_matching) { create(:mentor_matching, mentor: mentor, kid: kid2, state: 'reserved') } - let!(:teacher_with_pending_matchings) { create(:teacher, kids: [kid]) } - let!(:teacher_without_pending_matchings) { create(:teacher, kids: [kid2]) } + let!(:teacher_with_pending_matchings) { create(:teacher, kids: [kid], terms_of_use_accepted: true) } + let!(:teacher_without_pending_matchings) { create(:teacher, kids: [kid2], terms_of_use_accepted: true) } context 'public signups enabled' do before do diff --git a/spec/controllers/comments_controller_spec.rb b/spec/controllers/comments_controller_spec.rb index 56fbd030..c9fcfa0c 100644 --- a/spec/controllers/comments_controller_spec.rb +++ b/spec/controllers/comments_controller_spec.rb @@ -2,8 +2,8 @@ describe CommentsController do before(:each) do - @mentor = create(:mentor) - @coach = create(:admin) + @mentor = create(:mentor, terms_of_use_accepted: true) + @coach = create(:admin, terms_of_use_accepted: true) @kid = create(:kid, mentor: @mentor, admin: @coach) @journal = create(:journal, kid: @kid, mentor: @mentor) end diff --git a/spec/controllers/documents_controller_spec.rb b/spec/controllers/documents_controller_spec.rb index 5bc1e48e..997409a5 100644 --- a/spec/controllers/documents_controller_spec.rb +++ b/spec/controllers/documents_controller_spec.rb @@ -6,7 +6,7 @@ context 'as a mentor' do before(:each) do - sign_in create(:mentor) + sign_in create(:mentor, terms_of_use_accepted: true) build(:document, title: 'a1', category0: 'a').attachment.attach(file).record.save! build(:document, title: 'ax1', category0: 'a', category1: 'x').attachment.attach(file).record.save! end @@ -27,7 +27,7 @@ context 'as an admin' do before(:each) do - sign_in create(:admin) + sign_in create(:admin, terms_of_use_accepted: true) end it 'creates a new document' do diff --git a/spec/controllers/journals_controller_spec.rb b/spec/controllers/journals_controller_spec.rb index b91297a1..1ca56040 100644 --- a/spec/controllers/journals_controller_spec.rb +++ b/spec/controllers/journals_controller_spec.rb @@ -1,8 +1,8 @@ require 'spec_helper' describe JournalsController do - let(:admin) { create(:admin) } - let(:mentor) { create(:mentor) } + let(:admin) { create(:admin, terms_of_use_accepted: true) } + let(:mentor) { create(:mentor, terms_of_use_accepted: true) } let(:kid) { create(:kid, mentor: mentor) } let(:journal) { create(:journal, kid: kid, mentor: mentor) } let(:secondary_kid) do @@ -22,7 +22,7 @@ end it 'should render assign only selectable mentors' do - foreign_mentor = create(:mentor) + foreign_mentor = create(:mentor, terms_of_use_accepted: true) get :new, params: { kid_id: kid.id } expect(assigns(:mentors)).to eq([mentor]) end @@ -128,7 +128,7 @@ it 'should not be able to create entries for other mentors' do attrs = valid_attributes - attrs[:journal][:mentor_id] = create(:mentor).id + attrs[:journal][:mentor_id] = create(:mentor, terms_of_use_accepted: true).id post :create, params: attrs expect(assigns(:journal).mentor).to eq(mentor) end diff --git a/spec/controllers/kid_mentor_relations_controller_spec.rb b/spec/controllers/kid_mentor_relations_controller_spec.rb index 943b1d99..ffef1a48 100644 --- a/spec/controllers/kid_mentor_relations_controller_spec.rb +++ b/spec/controllers/kid_mentor_relations_controller_spec.rb @@ -4,8 +4,8 @@ context 'as a admin' do before(:each) do - @admin = create(:admin) - @mentor = create(:mentor) + @admin = create(:admin, terms_of_use_accepted: true) + @mentor = create(:mentor, terms_of_use_accepted: true) create(:kid, mentor: @mentor) sign_in @admin end diff --git a/spec/controllers/kids_controller_spec.rb b/spec/controllers/kids_controller_spec.rb index 3d482877..fdf4d9ba 100644 --- a/spec/controllers/kids_controller_spec.rb +++ b/spec/controllers/kids_controller_spec.rb @@ -3,7 +3,7 @@ describe KidsController do context 'as a mentor' do before(:each) do - @mentor = create(:mentor) + @mentor = create(:mentor, terms_of_use_accepted: true) @kid = create(:kid, mentor: @mentor) sign_in @mentor end @@ -29,7 +29,7 @@ context 'as a admin' do before(:each) do - @admin = create(:admin) + @admin = create(:admin, terms_of_use_accepted: true) @kid = create(:kid) sign_in @admin end @@ -105,7 +105,7 @@ context 'as a teacher' do before(:each) do @school = create(:school) - @teacher = create(:teacher, school: @school) + @teacher = create(:teacher, school: @school, terms_of_use_accepted: true) sign_in @teacher end @@ -120,7 +120,7 @@ end it 'should assign itself as teacher even when secondary teacher set' do - @secondary = create(:teacher) + @secondary = create(:teacher, terms_of_use_accepted: true) post :create, params: { kid: attributes_for(:kid, secondary_teacher_id: @secondary.id, school_id: @school.id) } kid = Kid.find(assigns(:kid).id) expect(kid.teacher).to eq(@teacher) diff --git a/spec/controllers/mentor_matchings_controller_spec.rb b/spec/controllers/mentor_matchings_controller_spec.rb index fce7d36e..4300c2ed 100644 --- a/spec/controllers/mentor_matchings_controller_spec.rb +++ b/spec/controllers/mentor_matchings_controller_spec.rb @@ -6,8 +6,8 @@ end context 'as a mentor' do - let(:mentor) { create(:mentor) } - let(:other_mentor) { create(:mentor) } + let(:mentor) { create(:mentor, terms_of_use_accepted: true) } + let(:other_mentor) { create(:mentor, terms_of_use_accepted: true) } let(:kid) { create(:kid, sex: 'm') } let(:kid_with_mentor) { create(:kid, mentor: other_mentor, sex: 'm') } let(:pending_mentor_matching) { create(:mentor_matching, mentor: mentor, kid: kid, state: 'pending') } diff --git a/spec/controllers/mentors_controller_spec.rb b/spec/controllers/mentors_controller_spec.rb index a0b492a3..e57a59dd 100644 --- a/spec/controllers/mentors_controller_spec.rb +++ b/spec/controllers/mentors_controller_spec.rb @@ -3,7 +3,7 @@ describe MentorsController do context 'as a mentor' do before(:each) do - @mentor = create(:mentor) + @mentor = create(:mentor, terms_of_use_accepted: true) sign_in @mentor end @@ -52,7 +52,7 @@ end context 'disable_no_kids_reminder' do - let!(:other_mentor) { create(:mentor) } + let!(:other_mentor) { create(:mentor, terms_of_use_accepted: true) } it 'disables no_kids_reminder' do get :disable_no_kids_reminder, params: { id: @mentor.id } expect(@mentor.reload.no_kids_reminder).to eq false @@ -68,20 +68,20 @@ context 'as an admin' do before(:each) do - @admin = create(:admin) + @admin = create(:admin, terms_of_use_accepted: true) sign_in @admin - @mentor = create(:mentor) + @mentor = create(:mentor, terms_of_use_accepted: true) end context 'index' do it 'assigns two mentors in the index' do - create(:mentor) + create(:mentor, terms_of_use_accepted: true) get :index expect(assigns(:mentors).size).to eq(2) end it 'excludes inactive mentors' do - create(:mentor, inactive: true) + create(:mentor, inactive: true, terms_of_use_accepted: true) get :index expect(assigns(:mentors).size).to eq(1) end diff --git a/spec/controllers/principals_controller_spec.rb b/spec/controllers/principals_controller_spec.rb index e6074abf..0cea0040 100644 --- a/spec/controllers/principals_controller_spec.rb +++ b/spec/controllers/principals_controller_spec.rb @@ -48,7 +48,7 @@ describe 'as an admin' do before(:each) do - @admin = create(:admin) + @admin = create(:admin, terms_of_use_accepted: true) @principal = create(:principal) sign_in @admin end diff --git a/spec/controllers/reminders_controller_spec.rb b/spec/controllers/reminders_controller_spec.rb index 00da57dc..bb398e54 100644 --- a/spec/controllers/reminders_controller_spec.rb +++ b/spec/controllers/reminders_controller_spec.rb @@ -3,7 +3,7 @@ describe RemindersController do context 'as admin' do before(:each) do - @admin = create(:admin) + @admin = create(:admin, terms_of_use_accepted: true) @reminder = create(:reminder) sign_in @admin end @@ -40,12 +40,12 @@ end it 'does not allow access to mentors' do - sign_in create(:mentor) + sign_in create(:mentor, terms_of_use_accepted: true) expect { get :index }.to raise_error(CanCan::AccessDenied) end it 'does not allow access to teachers' do - sign_in create(:teacher) + sign_in create(:teacher, terms_of_use_accepted: true) expect { get :index }.to raise_error(CanCan::AccessDenied) end end diff --git a/spec/controllers/reviews_controller_spec.rb b/spec/controllers/reviews_controller_spec.rb index e9f2f705..b7bfc5d3 100644 --- a/spec/controllers/reviews_controller_spec.rb +++ b/spec/controllers/reviews_controller_spec.rb @@ -2,7 +2,7 @@ describe ReviewsController do before(:each) do - @mentor = create(:mentor) + @mentor = create(:mentor, terms_of_use_accepted: true) @kid = create(:kid, mentor: @mentor) end @@ -54,7 +54,7 @@ context 'as an admin' do before(:each) do - sign_in create(:admin) + sign_in create(:admin, terms_of_use_accepted: true) end it 'should record phone coaching' do diff --git a/spec/controllers/schools_controller_spec.rb b/spec/controllers/schools_controller_spec.rb index 2fa20fb3..8a1211e9 100644 --- a/spec/controllers/schools_controller_spec.rb +++ b/spec/controllers/schools_controller_spec.rb @@ -2,7 +2,7 @@ describe SchoolsController do before(:each) do - sign_in @admin = create(:admin) + sign_in @admin = create(:admin, terms_of_use_accepted: true) end context 'new' do diff --git a/spec/controllers/self_registrations_controller_spec.rb b/spec/controllers/self_registrations_controller_spec.rb index 9e5fcb7b..8654506e 100644 --- a/spec/controllers/self_registrations_controller_spec.rb +++ b/spec/controllers/self_registrations_controller_spec.rb @@ -16,8 +16,8 @@ end context 'create' do - let!(:admin) { create(:admin) } - let!(:admin2) { create(:admin) } + let!(:admin) { create(:admin, terms_of_use_accepted: true) } + let!(:admin2) { create(:admin, terms_of_use_accepted: true) } context 'teacher' do let(:params) { { teacher: attributes_for(:teacher).merge(type: 'Teacher', school_id: create(:school).id), terms_of_use: { accepted: "yes" } } } diff --git a/spec/controllers/sites_controller_spec.rb b/spec/controllers/sites_controller_spec.rb index b1fa97b1..cf87596e 100644 --- a/spec/controllers/sites_controller_spec.rb +++ b/spec/controllers/sites_controller_spec.rb @@ -5,7 +5,7 @@ context 'as a admin' do before(:each) do - @admin = create(:admin) + @admin = create(:admin, terms_of_use_accepted: true) @kid = create(:kid) sign_in @admin end diff --git a/spec/controllers/teachers_controller_spec.rb b/spec/controllers/teachers_controller_spec.rb index 6c2a558b..8c0ca388 100644 --- a/spec/controllers/teachers_controller_spec.rb +++ b/spec/controllers/teachers_controller_spec.rb @@ -3,23 +3,23 @@ describe TeachersController do context 'as an admin' do before(:each) do - @admin = create(:admin) + @admin = create(:admin, terms_of_use_accepted: true) sign_in @admin end context 'index' do it 'assigns two teachers in the index' do - 2.times { create(:teacher) } + 2.times { create(:teacher, terms_of_use_accepted: true) } get :index expect(assigns(:teachers).size).to eq(2) end it 'excludes inactive teachers by default' do - create(:teacher, inactive: true) + create(:teacher, inactive: true, terms_of_use_accepted: true) get :index expect(assigns(:teachers).size).to eq(0) end it 'filters for inactive teacher' do - create(:teacher, inactive: true) + create(:teacher, inactive: true, terms_of_use_accepted: true) get :index, params: { inactive: '1' } expect(assigns(:teachers).size).to eq(0) end @@ -27,7 +27,7 @@ context 'show' do it 'renders' do - @teacher = create(:teacher) + @teacher = create(:teacher, terms_of_use_accepted: true) get :show, params: { id: @teacher.id } expect(response).to be_successful end @@ -35,7 +35,7 @@ context 'edit' do it 'renders' do - @teacher = create(:teacher) + @teacher = create(:teacher, terms_of_use_accepted: true) get :edit, params: { id: @teacher.id } expect(response).to be_successful end @@ -43,27 +43,27 @@ context 'update' do it 'can update state' do - @teacher = create(:teacher) + @teacher = create(:teacher, terms_of_use_accepted: true) patch :update, params: { id: @teacher.id, teacher: { state: :declined } } expect(@teacher.reload.state).to eq 'declined' end it 'sends email if state updated to accepted' do - @teacher = create(:teacher, state: :selfservice) + @teacher = create(:teacher, state: :selfservice, terms_of_use_accepted: true) expect { patch :update, params: { id: @teacher.id, teacher: { state: :accepted } } }.to have_enqueued_job(ActionMailer::MailDeliveryJob) end it "doesn't send an email if update other fields than state" do - @teacher = create(:teacher) + @teacher = create(:teacher, terms_of_use_accepted: true) expect { patch :update, params: { id: @teacher.id, mentor: { first_name: 'Karl' } } }.not_to have_enqueued_job(ActionMailer::MailDeliveryJob) end it 'resends email with password with resend password button if user is accepted' do - @teacher = create(:teacher) + @teacher = create(:teacher, terms_of_use_accepted: true) expect { patch :update, params: { id: @teacher.id, commit: I18n.translate('teachers.form.resend_password.btn_text') } }.to have_enqueued_job(ActionMailer::MailDeliveryJob) @@ -72,13 +72,13 @@ context 'destroy' do it 'can destroy inactive' do - @teacher = create(:teacher, inactive: true) + @teacher = create(:teacher, inactive: true, terms_of_use_accepted: true) delete :destroy, params: { id: @teacher.id } expect(Teacher.exists?(@teacher.id)).to be_falsey end it 'cannot destroy active' do - @teacher = create(:teacher) + @teacher = create(:teacher, terms_of_use_accepted: true) expect do delete :destroy, params: { id: @teacher.id } end.to raise_error(CanCan::AccessDenied) @@ -99,7 +99,7 @@ context 'index' do before(:each) do - @teacher = create(:teacher, school: @school) + @teacher = create(:teacher, school: @school, terms_of_use_accepted: true) end it 'renders' do get :index @@ -133,7 +133,7 @@ context 'as a teacher' do before(:each) do @school = create(:school) - @teacher = create(:teacher, school: @school) + @teacher = create(:teacher, school: @school, terms_of_use_accepted: true) sign_in @teacher end diff --git a/spec/requests/admin_updating_school_spec.rb b/spec/requests/admin_updating_school_spec.rb index f0c10c90..8118cc4f 100644 --- a/spec/requests/admin_updating_school_spec.rb +++ b/spec/requests/admin_updating_school_spec.rb @@ -5,7 +5,7 @@ I want to modify an existing school 'do background do - log_in(create(:admin)) + log_in(create(:admin, terms_of_use_accepted: true)) create(:school, name: 'SSIG') end diff --git a/spec/requests/available_kids_spec.rb b/spec/requests/available_kids_spec.rb index cff9214d..609251d6 100644 --- a/spec/requests/available_kids_spec.rb +++ b/spec/requests/available_kids_spec.rb @@ -10,7 +10,7 @@ context 'AvailableKids as Mentor' do before do - @mentor = create(:mentor) + @mentor = create(:mentor, terms_of_use_accepted: true) @mentor.update!(longitude: 14.0474263, latitude: 50.1873213) log_in(@mentor) end @@ -137,7 +137,7 @@ describe 'Available kids' do before do - log_in(create(:admin)) + log_in(create(:admin, terms_of_use_accepted: true)) visit available_kids_path end @@ -152,7 +152,7 @@ describe 'Available kids' do before do - log_in(create(:teacher)) + log_in(create(:teacher, terms_of_use_accepted: true)) visit available_kids_path end diff --git a/spec/requests/documents_spec.rb b/spec/requests/documents_spec.rb index 73c29a40..18aadb2c 100644 --- a/spec/requests/documents_spec.rb +++ b/spec/requests/documents_spec.rb @@ -2,7 +2,7 @@ feature 'Document Tree', js: true do - let!(:admin) { create(:admin) } + let!(:admin) { create(:admin, terms_of_use_accepted: true) } include ActionDispatch::TestProcess::FixtureFile let(:file) { fixture_file_upload('gespraechsdoku.pdf', 'application/pdf') } diff --git a/spec/requests/filter_mentors_on_coaches_spec.rb b/spec/requests/filter_mentors_on_coaches_spec.rb index 73f7a143..ded22ff5 100644 --- a/spec/requests/filter_mentors_on_coaches_spec.rb +++ b/spec/requests/filter_mentors_on_coaches_spec.rb @@ -4,10 +4,10 @@ background do @pw = 'welcome' - @admin1 = create(:admin, name: 'first', prename: 'admin', password: @pw, password_confirmation: @pw) - @admin2 = create(:admin, name: 'second', prename: 'admin') - @mentor1 = create(:mentor, name: 'first', prename: 'mentor', transport: 'Halbtax') - @mentor2 = create(:mentor, name: 'second', prename: 'mentor', transport: 'GA') + @admin1 = create(:admin, name: 'first', prename: 'admin', password: @pw, password_confirmation: @pw, terms_of_use_accepted: true) + @admin2 = create(:admin, name: 'second', prename: 'admin', terms_of_use_accepted: true) + @mentor1 = create(:mentor, name: 'first', prename: 'mentor', transport: 'Halbtax', terms_of_use_accepted: true) + @mentor2 = create(:mentor, name: 'second', prename: 'mentor', transport: 'GA', terms_of_use_accepted: true) @kid1 = create(:kid, mentor: @mentor1, admin: @admin1) @kid2 = create(:kid, mentor: @mentor1, admin: @admin2) @kid3 = create(:kid, mentor: @mentor1, admin: @admin1) diff --git a/spec/requests/filter_mentors_on_meeting_day_spec.rb b/spec/requests/filter_mentors_on_meeting_day_spec.rb index 66695a2c..e71cb36b 100644 --- a/spec/requests/filter_mentors_on_meeting_day_spec.rb +++ b/spec/requests/filter_mentors_on_meeting_day_spec.rb @@ -4,9 +4,9 @@ background do @pw = 'welcome' - @admin1 = create(:admin, name: 'first', prename: 'admin', password: @pw, password_confirmation: @pw) - @mentor1 = create(:mentor, name: 'first', prename: 'mentor', transport: 'Halbtax') - @mentor2 = create(:mentor, name: 'second', prename: 'mentor', transport: 'GA') + @admin1 = create(:admin, name: 'first', prename: 'admin', password: @pw, password_confirmation: @pw, terms_of_use_accepted: true) + @mentor1 = create(:mentor, name: 'first', prename: 'mentor', transport: 'Halbtax', terms_of_use_accepted: true) + @mentor2 = create(:mentor, name: 'second', prename: 'mentor', transport: 'GA', terms_of_use_accepted: true) @kid1 = create(:kid, mentor: @mentor1, meeting_day: '1') @kid2 = create(:kid, mentor: @mentor1, meeting_day: '2') @kid3 = create(:kid, mentor: @mentor1, meeting_day: '1') diff --git a/spec/requests/filter_mentors_on_schools_spec.rb b/spec/requests/filter_mentors_on_schools_spec.rb index 691e9915..954c5b2e 100644 --- a/spec/requests/filter_mentors_on_schools_spec.rb +++ b/spec/requests/filter_mentors_on_schools_spec.rb @@ -4,10 +4,10 @@ background do @pw = 'welcome' - @admin1 = create(:admin, name: 'first', prename: 'admin', password: @pw, password_confirmation: @pw) - @admin2 = create(:admin, name: 'second', prename: 'admin') - @mentor1 = create(:mentor, name: 'first', prename: 'mentor', transport: 'Halbtax') - @mentor2 = create(:mentor, name: 'second', prename: 'mentor', transport: 'GA') + @admin1 = create(:admin, name: 'first', prename: 'admin', password: @pw, password_confirmation: @pw, terms_of_use_accepted: true) + @admin2 = create(:admin, name: 'second', prename: 'admin', terms_of_use_accepted: true) + @mentor1 = create(:mentor, name: 'first', prename: 'mentor', transport: 'Halbtax', terms_of_use_accepted: true) + @mentor2 = create(:mentor, name: 'second', prename: 'mentor', transport: 'GA', terms_of_use_accepted: true) @school1 = create(:school, name: 'school1', school_kind: :primary_school) @school2 = create(:school, name: 'school2', school_kind: :primary_school) @kid1 = create(:kid, mentor: @mentor1, admin: @admin1, school: @school1) diff --git a/spec/requests/filter_reminders_spec.rb b/spec/requests/filter_reminders_spec.rb index caf31bfd..ff5a442d 100644 --- a/spec/requests/filter_reminders_spec.rb +++ b/spec/requests/filter_reminders_spec.rb @@ -2,7 +2,7 @@ feature 'reminders index' do background do - @admin = create(:admin, prename: 'admin') + @admin = create(:admin, prename: 'admin', terms_of_use_accepted: true) @school1 = create(:school, name: 'school1') @school2 = create(:school, name: 'school2') @kid1 = create(:kid, school: @school1, name: 'reminder1 kid') diff --git a/spec/requests/first_year_assessment_spec.rb b/spec/requests/first_year_assessment_spec.rb index 830cba8b..67a57e12 100644 --- a/spec/requests/first_year_assessment_spec.rb +++ b/spec/requests/first_year_assessment_spec.rb @@ -6,9 +6,9 @@ So that I can create a new kid ' do background do - @mentor = create(:mentor) - @teacher = create(:teacher) - @admin = create(:admin) + @mentor = create(:mentor, terms_of_use_accepted: true) + @teacher = create(:teacher, terms_of_use_accepted: true) + @admin = create(:admin, terms_of_use_accepted: true) @kid = create(:kid, mentor: @mentor, teacher: @teacher, admin: @admin) log_in(@mentor) visit kid_path(@kid) diff --git a/spec/requests/kid_creation_stories_spec.rb b/spec/requests/kid_creation_stories_spec.rb index 2038f34a..272b05be 100644 --- a/spec/requests/kid_creation_stories_spec.rb +++ b/spec/requests/kid_creation_stories_spec.rb @@ -8,7 +8,7 @@ ' do background do @pw = 'welcome' - @teacher = create(:teacher, password: @pw, password_confirmation: @pw) + @teacher = create(:teacher, password: @pw, password_confirmation: @pw, terms_of_use_accepted: true) log_in(@teacher) end @@ -52,7 +52,7 @@ ' do background do @pw = 'welcome' - @admin = create(:admin, password: @pw, password_confirmation: @pw) + @admin = create(:admin, password: @pw, password_confirmation: @pw, terms_of_use_accepted: true) log_in(@admin) end diff --git a/spec/requests/kid_mentor_relations_spec.rb b/spec/requests/kid_mentor_relations_spec.rb index 4eca1620..b3e5974a 100644 --- a/spec/requests/kid_mentor_relations_spec.rb +++ b/spec/requests/kid_mentor_relations_spec.rb @@ -1,11 +1,11 @@ require 'requests/acceptance_helper' feature 'KidMentorRelations as Admin' do - let(:mentor_no_exit) { create(:mentor, name: 'Mentor No') } - let(:mentor_exit) { create(:mentor, exit_kind: 'exit', name: 'Mentor Later') } + let(:mentor_no_exit) { create(:mentor, name: 'Mentor No', terms_of_use_accepted: true) } + let(:mentor_exit) { create(:mentor, exit_kind: 'exit', name: 'Mentor Later', terms_of_use_accepted: true) } before(:each) do - log_in(create(:admin)) + log_in(create(:admin, terms_of_use_accepted: true)) # create many combinations of kids and mentors exiting and not exiting # recognizable by their name @@ -74,7 +74,7 @@ feature 'KidMentorRelations as Mentor' do scenario 'does not allow non admin access' do - log_in(create(:mentor)) + log_in(create(:mentor, terms_of_use_accepted: true)) expect { visit kid_mentor_relations_path }.to raise_error(SecurityError) end end diff --git a/spec/requests/kid_spec.rb b/spec/requests/kid_spec.rb index 86b0f558..80f1fe7f 100644 --- a/spec/requests/kid_spec.rb +++ b/spec/requests/kid_spec.rb @@ -2,7 +2,7 @@ feature 'Kids as Admin' do background do - log_in(create(:admin)) + log_in(create(:admin, terms_of_use_accepted: true)) end before do diff --git a/spec/requests/login_stories_spec.rb b/spec/requests/login_stories_spec.rb index ec14542a..092bc9ef 100644 --- a/spec/requests/login_stories_spec.rb +++ b/spec/requests/login_stories_spec.rb @@ -8,7 +8,7 @@ ' do background do @pw = 'spec12378' - @mentor = create(:mentor, password: @pw, password_confirmation: @pw) + @mentor = create(:mentor, password: @pw, password_confirmation: @pw, terms_of_use_accepted: true) end scenario 'should login the user w/ valid credentials' do diff --git a/spec/requests/mentor_matchings_spec.rb b/spec/requests/mentor_matchings_spec.rb index 5a7b767d..74fa6752 100644 --- a/spec/requests/mentor_matchings_spec.rb +++ b/spec/requests/mentor_matchings_spec.rb @@ -10,8 +10,8 @@ end describe 'mentor matching' do - let(:mentor) { create(:mentor, sex: 'm') } - let(:other_mentor) { create(:mentor, sex: 'm') } + let(:mentor) { create(:mentor, sex: 'm', terms_of_use_accepted: true) } + let(:other_mentor) { create(:mentor, sex: 'm', terms_of_use_accepted: true) } let(:kid) { create(:kid, name: 'Hodler Rolf', sex: 'm', teacher: create(:teacher)) } let(:mentor_matching) { create(:mentor_matching, mentor: mentor, kid: kid, state: 'reserved') } let(:other_mentor_matching) { create(:mentor_matching, mentor: other_mentor, kid: kid, state: 'pending') } @@ -61,8 +61,8 @@ feature 'MentorMatchings As Admin' do let(:kid) { create(:kid, name: 'Hodler Rolf', sex: 'm', longitude: 14.1025379, latitude: 50.1478497, grade: '1', teacher: create(:teacher)) } - let(:admin) { create(:admin) } - let(:mentor) { create(:mentor) } + let(:admin) { create(:admin, terms_of_use_accepted: true) } + let(:mentor) { create(:mentor, terms_of_use_accepted: true) } let!(:mentor_matching) { create(:mentor_matching, mentor: mentor, kid: kid) } describe 'mentor matchings list' do @@ -80,11 +80,11 @@ end feature 'MentorMatchings As Teacher' do - let(:teacher) { create(:teacher) } + let(:teacher) { create(:teacher, terms_of_use_accepted: true) } let(:kid) { create(:kid, name: 'Hodler Rolf', sex: 'm', longitude: 14.1025379, latitude: 50.1478497, grade: '1', teacher: create(:teacher)) } let(:own_kid) { create(:kid, name: 'Hindler Bolf', sex: 'm', longitude: 14.1025379, latitude: 50.1478497, grade: '1', teacher: teacher) } - let(:mentor) { create(:mentor) } - let(:own_mentor) { create(:mentor) } + let(:mentor) { create(:mentor, terms_of_use_accepted: true) } + let(:own_mentor) { create(:mentor, terms_of_use_accepted: true) } let!(:mentor_matching) { create(:mentor_matching, mentor: mentor, kid: kid) } let!(:own_mentor_matching) { create(:mentor_matching, mentor: own_mentor, kid: own_kid) } diff --git a/spec/requests/principals_spec.rb b/spec/requests/principals_spec.rb index f7ff0c3b..3e2e89e7 100644 --- a/spec/requests/principals_spec.rb +++ b/spec/requests/principals_spec.rb @@ -2,7 +2,7 @@ feature 'Principals as Admin' do background do - log_in(create(:admin)) + log_in(create(:admin, terms_of_use_accepted: true)) end scenario 'should be able to create a principal' do diff --git a/spec/requests/self_registrations.rb b/spec/requests/self_registrations.rb index 0ca910ff..b1d278bb 100644 --- a/spec/requests/self_registrations.rb +++ b/spec/requests/self_registrations.rb @@ -2,13 +2,13 @@ feature 'Self registrations' do background do - create(:admin) + create(:admin, terms_of_use_accepted: true) create(:school, name: 'Teacher school', school_kind: :primary_school) create(:school, name: 'Mentor school', school_kind: :high_school) Site.load.update(public_signups_active: true) end scenario 'redirect to admin if already logged in' do - log_in(create(:admin)) + log_in(create(:admin, terms_of_use_accepted: true)) visit new_self_registration_path expect(current_path).to eq root_path end diff --git a/spec/requests/show_kid_mentors_schedules_spec.rb b/spec/requests/show_kid_mentors_schedules_spec.rb index acbdee9e..c3af3f84 100644 --- a/spec/requests/show_kid_mentors_schedules_spec.rb +++ b/spec/requests/show_kid_mentors_schedules_spec.rb @@ -35,9 +35,9 @@ kid.schedules.create(day: 3, hour: 18, minute: 0) kid } - let!(:admin) { create(:admin) } + let!(:admin) { create(:admin, terms_of_use_accepted: true) } let!(:mentor_frederik) { - mentor = create(:mentor, prename: 'Frederik', name: 'Haller', sex: 'm') + mentor = create(:mentor, prename: 'Frederik', name: 'Haller', sex: 'm', terms_of_use_accepted: true) mentor.schedules.create(day: 1, hour: 14, minute: 0) mentor.schedules.create(day: 1, hour: 14, minute: 30) mentor.schedules.create(day: 1, hour: 15, minute: 0) @@ -53,7 +53,7 @@ mentor } let!(:mentor_melanie) { - mentor = create(:mentor, prename: 'Melanie', name:'Rohner', sex: 'f') + mentor = create(:mentor, prename: 'Melanie', name:'Rohner', sex: 'f', terms_of_use_accepted: true) mentor.schedules.create(day: 3, hour: 14, minute: 0) mentor.schedules.create(day: 3, hour: 14, minute: 30) mentor.schedules.create(day: 3, hour: 15, minute: 0) @@ -69,7 +69,7 @@ mentor } let!(:mentor_max) { - mentor =create(:mentor, prename: 'Max', name: 'Steiner', sex: 'm') + mentor =create(:mentor, prename: 'Max', name: 'Steiner', sex: 'm', terms_of_use_accepted: true) mentor.schedules.create(day: 1, hour: 17, minute: 0) mentor.schedules.create(day: 1, hour: 17, minute: 30) mentor.schedules.create(day: 1, hour: 18, minute: 0) @@ -86,7 +86,7 @@ } let!(:mentor_sarah) { - mentor =create(:mentor, prename: 'Sarah', name: 'Koller', sex: 'f') + mentor =create(:mentor, prename: 'Sarah', name: 'Koller', sex: 'f', terms_of_use_accepted: true) mentor.schedules.create(day: 1, hour: 17, minute: 0) mentor.schedules.create(day: 1, hour: 17, minute: 30) mentor.schedules.create(day: 1, hour: 18, minute: 0) @@ -101,15 +101,15 @@ mentor.schedules.create(day: 2, hour: 17, minute: 30) mentor } - let!(:mentor_5) {create(:mentor, prename: 'Mentor 5', name: 'Other')} - let!(:mentor_6) {create(:mentor, prename: 'Mentor 6', name: 'Other')} - let!(:mentor_7) {create(:mentor, prename: 'Mentor 7', name: 'Other')} - let!(:mentor_8) {create(:mentor, prename: 'Mentor 8', name: 'Other')} - let!(:mentor_9) {create(:mentor, prename: 'Mentor 9', name: 'Other')} - let!(:mentor_10) {create(:mentor, prename: 'Mentor 10', name: 'Other')} - let!(:mentor_11) {create(:mentor, prename: 'Mentor 11', name: 'Other')} - let!(:mentor_12) {create(:mentor, prename: 'Mentor 12', name: 'Other')} - let!(:mentor_13) {create(:mentor, prename: 'Mentor 13', name: 'Other')} + let!(:mentor_5) {create(:mentor, prename: 'Mentor 5', name: 'Other', terms_of_use_accepted: true)} + let!(:mentor_6) {create(:mentor, prename: 'Mentor 6', name: 'Other', terms_of_use_accepted: true)} + let!(:mentor_7) {create(:mentor, prename: 'Mentor 7', name: 'Other', terms_of_use_accepted: true)} + let!(:mentor_8) {create(:mentor, prename: 'Mentor 8', name: 'Other', terms_of_use_accepted: true)} + let!(:mentor_9) {create(:mentor, prename: 'Mentor 9', name: 'Other', terms_of_use_accepted: true)} + let!(:mentor_10) {create(:mentor, prename: 'Mentor 10', name: 'Other', terms_of_use_accepted: true)} + let!(:mentor_11) {create(:mentor, prename: 'Mentor 11', name: 'Other', terms_of_use_accepted: true)} + let!(:mentor_12) {create(:mentor, prename: 'Mentor 12', name: 'Other', terms_of_use_accepted: true)} + let!(:mentor_13) {create(:mentor, prename: 'Mentor 13', name: 'Other', terms_of_use_accepted: true)} background do diff --git a/spec/requests/show_mentors_schools_without_dup_spec.rb b/spec/requests/show_mentors_schools_without_dup_spec.rb index e8ecd33e..73988348 100644 --- a/spec/requests/show_mentors_schools_without_dup_spec.rb +++ b/spec/requests/show_mentors_schools_without_dup_spec.rb @@ -4,7 +4,7 @@ background do @pw = 'welcome' - @admin = create(:admin, name: 'first', prename: 'admin', password: @pw, password_confirmation: @pw) + @admin = create(:admin, name: 'first', prename: 'admin', password: @pw, password_confirmation: @pw, terms_of_use_accepted: true) @school1 = create(:school, name: 'School 1') @school2 = create(:school, name: 'School 2') @mentor = create(:mentor, name: 'first', prename: 'mentor') diff --git a/spec/requests/site_configuration_spec.rb b/spec/requests/site_configuration_spec.rb index dc9ac71b..e78356eb 100644 --- a/spec/requests/site_configuration_spec.rb +++ b/spec/requests/site_configuration_spec.rb @@ -2,7 +2,7 @@ feature 'Site' do scenario 'should be able to edit address in page footer' do - log_in(create(:admin)) + log_in(create(:admin, terms_of_use_accepted: true)) visit edit_site_url fill_in 'Adressangaben in Fusszeile', with: 'Adresse im Footer' click_button 'Seitenweite Konfiguration aktualisieren' @@ -11,13 +11,13 @@ end scenario 'should not allow mentors to edit configuration' do - log_in(create(:mentor)) + log_in(create(:mentor, terms_of_use_accepted: true)) expect { visit edit_site_url }.to raise_error(CanCan::AccessDenied) end scenario 'should show teachers reviews when site configuration allows it' do Site.load.update!(teachers_can_access_reviews: true) - @teacher = create(:teacher) + @teacher = create(:teacher, terms_of_use_accepted: true) create(:kid, name: 'last1', prename: 'first1', teacher: @teacher) log_in(@teacher) click_link 'Schüler/in' diff --git a/spec/requests/substitutions_workflow_spec.rb b/spec/requests/substitutions_workflow_spec.rb index 0d2269c8..449bdd58 100644 --- a/spec/requests/substitutions_workflow_spec.rb +++ b/spec/requests/substitutions_workflow_spec.rb @@ -7,9 +7,9 @@ ' do - let!(:admin) { create(:admin) } + let!(:admin) { create(:admin, terms_of_use_accepted: true) } let!(:mentor_frederik) { - create(:mentor, prename: 'Frederik', name: 'Haller', sex: 'm') + create(:mentor, prename: 'Frederik', name: 'Haller', sex: 'm', terms_of_use_accepted: true) } let!(:kid) { create(:kid, mentor: mentor_frederik)} @@ -58,12 +58,12 @@ ' do - let!(:admin) { create(:admin) } + let!(:admin) { create(:admin, terms_of_use_accepted: true) } let!(:mentor_frederik) { - create(:mentor, prename: 'Frederik', name: 'Haller', sex: 'm') + create(:mentor, prename: 'Frederik', name: 'Haller', sex: 'm', terms_of_use_accepted: true) } let!(:mentor_melanie) { - create(:mentor, ects: :currently, prename: 'Melanie', name:'Rohner', sex: 'f') + create(:mentor, ects: :currently, prename: 'Melanie', name:'Rohner', sex: 'f', terms_of_use_accepted: true) } let!(:kid) { create(:kid, mentor: mentor_frederik) } @@ -101,7 +101,7 @@ ' do let!(:mentor) { - create(:mentor, prename: 'Mentor', name: 'Mentor', sex: 'm') + create(:mentor, prename: 'Mentor', name: 'Mentor', sex: 'm', terms_of_use_accepted: true) } background do diff --git a/spec/requests/teacher_navigation_stories_spec.rb b/spec/requests/teacher_navigation_stories_spec.rb index 9290255d..412d7aad 100644 --- a/spec/requests/teacher_navigation_stories_spec.rb +++ b/spec/requests/teacher_navigation_stories_spec.rb @@ -8,7 +8,7 @@ " do background do @pw = 'welcome' - @teacher = create(:teacher, password: @pw, password_confirmation: @pw) + @teacher = create(:teacher, password: @pw, password_confirmation: @pw, terms_of_use_accepted: true) log_in(@teacher) end diff --git a/spec/requests/teachers_spec.rb b/spec/requests/teachers_spec.rb index db889ef0..befd622d 100644 --- a/spec/requests/teachers_spec.rb +++ b/spec/requests/teachers_spec.rb @@ -2,7 +2,7 @@ feature 'Teachers as Admin' do background do - log_in(create(:admin)) + log_in(create(:admin, terms_of_use_accepted: true)) end scenario 'should be able to create a teacher' do diff --git a/spec/requests/termination_assessment_spec.rb b/spec/requests/termination_assessment_spec.rb index fefd2237..133a6837 100644 --- a/spec/requests/termination_assessment_spec.rb +++ b/spec/requests/termination_assessment_spec.rb @@ -6,8 +6,8 @@ So that I can create a new kid ' do background do - @teacher = create(:teacher) - @admin = create(:admin) + @teacher = create(:teacher, terms_of_use_accepted: true) + @admin = create(:admin, terms_of_use_accepted: true) @kid = create(:kid, teacher: @teacher, admin: @admin) log_in(@teacher) visit kid_path(@kid) From b50c66a52a76403163a035a4535bda6abf9193b7 Mon Sep 17 00:00:00 2001 From: Martin Gaher Date: Sun, 20 Mar 2022 19:00:24 +0100 Subject: [PATCH 3/9] tests --- spec/controllers/admins_controller_spec.rb | 10 +++--- .../application_controller_spec.rb | 8 ++--- spec/controllers/comments_controller_spec.rb | 4 +-- spec/controllers/documents_controller_spec.rb | 4 +-- spec/controllers/journals_controller_spec.rb | 8 ++--- .../kid_mentor_relations_controller_spec.rb | 4 +-- spec/controllers/kids_controller_spec.rb | 8 ++--- .../mentor_matchings_controller_spec.rb | 4 +-- spec/controllers/mentors_controller_spec.rb | 12 +++---- .../controllers/principals_controller_spec.rb | 2 +- spec/controllers/reminders_controller_spec.rb | 6 ++-- spec/controllers/reviews_controller_spec.rb | 4 +-- spec/controllers/schools_controller_spec.rb | 2 +- .../self_registrations_controller_spec.rb | 4 +-- spec/controllers/sites_controller_spec.rb | 2 +- spec/controllers/teachers_controller_spec.rb | 28 +++++++-------- spec/factories.rb | 3 ++ spec/requests/admin_updating_school_spec.rb | 2 +- spec/requests/available_kids_spec.rb | 6 ++-- spec/requests/documents_spec.rb | 2 +- .../filter_mentors_on_coaches_spec.rb | 8 ++--- .../filter_mentors_on_meeting_day_spec.rb | 6 ++-- .../filter_mentors_on_schools_spec.rb | 8 ++--- spec/requests/filter_reminders_spec.rb | 2 +- spec/requests/first_year_assessment_spec.rb | 6 ++-- spec/requests/kid_creation_stories_spec.rb | 4 +-- spec/requests/kid_mentor_relations_spec.rb | 8 ++--- spec/requests/kid_spec.rb | 2 +- spec/requests/login_stories_spec.rb | 2 +- spec/requests/mentor_matchings_spec.rb | 14 ++++---- spec/requests/principals_spec.rb | 2 +- spec/requests/self_registrations.rb | 4 +-- .../show_kid_mentors_schedules_spec.rb | 28 +++++++-------- .../show_mentors_schools_without_dup_spec.rb | 2 +- spec/requests/site_configuration_spec.rb | 34 +++++++++++++++++-- spec/requests/substitutions_workflow_spec.rb | 12 +++---- .../teacher_navigation_stories_spec.rb | 2 +- spec/requests/teachers_spec.rb | 2 +- spec/requests/termination_assessment_spec.rb | 4 +-- 39 files changed, 152 insertions(+), 121 deletions(-) diff --git a/spec/controllers/admins_controller_spec.rb b/spec/controllers/admins_controller_spec.rb index 8f70165f..717da1f2 100644 --- a/spec/controllers/admins_controller_spec.rb +++ b/spec/controllers/admins_controller_spec.rb @@ -3,20 +3,20 @@ describe AdminsController do context 'as an admin' do before(:each) do - @admin = create(:admin, terms_of_use_accepted: true) + @admin = create(:admin) sign_in @admin end context 'index' do it 'assigns two admins in the index' do - 2.times { create(:admin, terms_of_use_accepted: true) } + 2.times { create(:admin) } get :index expect(assigns(:admins).size).to eq(3) # 3 including the signed in admin expect(response).to be_successful end it 'excludes inactive admins' do - create(:admin, inactive: true, terms_of_use_accepted: true) + create(:admin, inactive: true) get :index expect(assigns(:admins).size).to eq(1) end @@ -41,8 +41,8 @@ context 'as a mentor' do before(:each) do - @admin = create(:admin, terms_of_use_accepted: true) - @mentor = create(:mentor, terms_of_use_accepted: true) + @admin = create(:admin) + @mentor = create(:mentor) sign_in @mentor end diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb index c2aca6a8..147c260c 100644 --- a/spec/controllers/application_controller_spec.rb +++ b/spec/controllers/application_controller_spec.rb @@ -2,15 +2,15 @@ describe ApplicationController do - let!(:mentor) { create(:mentor, sex: 'f', terms_of_use_accepted: true) } + let!(:mentor) { create(:mentor, sex: 'f') } let!(:kid) { create(:kid, sex: 'f') } let!(:kid2) { create(:kid, sex: 'f') } - let!(:mentor_with_kids) { create(:mentor, sex: 'f', kids: [kid], terms_of_use_accepted: true) } + let!(:mentor_with_kids) { create(:mentor, sex: 'f', kids: [kid]) } let!(:pending_mentor_matching) { create(:mentor_matching, mentor: mentor, kid: kid, state: 'pending') } let!(:reserved_mentor_matching) { create(:mentor_matching, mentor: mentor, kid: kid2, state: 'reserved') } - let!(:teacher_with_pending_matchings) { create(:teacher, kids: [kid], terms_of_use_accepted: true) } - let!(:teacher_without_pending_matchings) { create(:teacher, kids: [kid2], terms_of_use_accepted: true) } + let!(:teacher_with_pending_matchings) { create(:teacher, kids: [kid]) } + let!(:teacher_without_pending_matchings) { create(:teacher, kids: [kid2]) } context 'public signups enabled' do before do diff --git a/spec/controllers/comments_controller_spec.rb b/spec/controllers/comments_controller_spec.rb index c9fcfa0c..56fbd030 100644 --- a/spec/controllers/comments_controller_spec.rb +++ b/spec/controllers/comments_controller_spec.rb @@ -2,8 +2,8 @@ describe CommentsController do before(:each) do - @mentor = create(:mentor, terms_of_use_accepted: true) - @coach = create(:admin, terms_of_use_accepted: true) + @mentor = create(:mentor) + @coach = create(:admin) @kid = create(:kid, mentor: @mentor, admin: @coach) @journal = create(:journal, kid: @kid, mentor: @mentor) end diff --git a/spec/controllers/documents_controller_spec.rb b/spec/controllers/documents_controller_spec.rb index 997409a5..5bc1e48e 100644 --- a/spec/controllers/documents_controller_spec.rb +++ b/spec/controllers/documents_controller_spec.rb @@ -6,7 +6,7 @@ context 'as a mentor' do before(:each) do - sign_in create(:mentor, terms_of_use_accepted: true) + sign_in create(:mentor) build(:document, title: 'a1', category0: 'a').attachment.attach(file).record.save! build(:document, title: 'ax1', category0: 'a', category1: 'x').attachment.attach(file).record.save! end @@ -27,7 +27,7 @@ context 'as an admin' do before(:each) do - sign_in create(:admin, terms_of_use_accepted: true) + sign_in create(:admin) end it 'creates a new document' do diff --git a/spec/controllers/journals_controller_spec.rb b/spec/controllers/journals_controller_spec.rb index 1ca56040..b91297a1 100644 --- a/spec/controllers/journals_controller_spec.rb +++ b/spec/controllers/journals_controller_spec.rb @@ -1,8 +1,8 @@ require 'spec_helper' describe JournalsController do - let(:admin) { create(:admin, terms_of_use_accepted: true) } - let(:mentor) { create(:mentor, terms_of_use_accepted: true) } + let(:admin) { create(:admin) } + let(:mentor) { create(:mentor) } let(:kid) { create(:kid, mentor: mentor) } let(:journal) { create(:journal, kid: kid, mentor: mentor) } let(:secondary_kid) do @@ -22,7 +22,7 @@ end it 'should render assign only selectable mentors' do - foreign_mentor = create(:mentor, terms_of_use_accepted: true) + foreign_mentor = create(:mentor) get :new, params: { kid_id: kid.id } expect(assigns(:mentors)).to eq([mentor]) end @@ -128,7 +128,7 @@ it 'should not be able to create entries for other mentors' do attrs = valid_attributes - attrs[:journal][:mentor_id] = create(:mentor, terms_of_use_accepted: true).id + attrs[:journal][:mentor_id] = create(:mentor).id post :create, params: attrs expect(assigns(:journal).mentor).to eq(mentor) end diff --git a/spec/controllers/kid_mentor_relations_controller_spec.rb b/spec/controllers/kid_mentor_relations_controller_spec.rb index ffef1a48..943b1d99 100644 --- a/spec/controllers/kid_mentor_relations_controller_spec.rb +++ b/spec/controllers/kid_mentor_relations_controller_spec.rb @@ -4,8 +4,8 @@ context 'as a admin' do before(:each) do - @admin = create(:admin, terms_of_use_accepted: true) - @mentor = create(:mentor, terms_of_use_accepted: true) + @admin = create(:admin) + @mentor = create(:mentor) create(:kid, mentor: @mentor) sign_in @admin end diff --git a/spec/controllers/kids_controller_spec.rb b/spec/controllers/kids_controller_spec.rb index fdf4d9ba..3d482877 100644 --- a/spec/controllers/kids_controller_spec.rb +++ b/spec/controllers/kids_controller_spec.rb @@ -3,7 +3,7 @@ describe KidsController do context 'as a mentor' do before(:each) do - @mentor = create(:mentor, terms_of_use_accepted: true) + @mentor = create(:mentor) @kid = create(:kid, mentor: @mentor) sign_in @mentor end @@ -29,7 +29,7 @@ context 'as a admin' do before(:each) do - @admin = create(:admin, terms_of_use_accepted: true) + @admin = create(:admin) @kid = create(:kid) sign_in @admin end @@ -105,7 +105,7 @@ context 'as a teacher' do before(:each) do @school = create(:school) - @teacher = create(:teacher, school: @school, terms_of_use_accepted: true) + @teacher = create(:teacher, school: @school) sign_in @teacher end @@ -120,7 +120,7 @@ end it 'should assign itself as teacher even when secondary teacher set' do - @secondary = create(:teacher, terms_of_use_accepted: true) + @secondary = create(:teacher) post :create, params: { kid: attributes_for(:kid, secondary_teacher_id: @secondary.id, school_id: @school.id) } kid = Kid.find(assigns(:kid).id) expect(kid.teacher).to eq(@teacher) diff --git a/spec/controllers/mentor_matchings_controller_spec.rb b/spec/controllers/mentor_matchings_controller_spec.rb index 4300c2ed..fce7d36e 100644 --- a/spec/controllers/mentor_matchings_controller_spec.rb +++ b/spec/controllers/mentor_matchings_controller_spec.rb @@ -6,8 +6,8 @@ end context 'as a mentor' do - let(:mentor) { create(:mentor, terms_of_use_accepted: true) } - let(:other_mentor) { create(:mentor, terms_of_use_accepted: true) } + let(:mentor) { create(:mentor) } + let(:other_mentor) { create(:mentor) } let(:kid) { create(:kid, sex: 'm') } let(:kid_with_mentor) { create(:kid, mentor: other_mentor, sex: 'm') } let(:pending_mentor_matching) { create(:mentor_matching, mentor: mentor, kid: kid, state: 'pending') } diff --git a/spec/controllers/mentors_controller_spec.rb b/spec/controllers/mentors_controller_spec.rb index e57a59dd..a0b492a3 100644 --- a/spec/controllers/mentors_controller_spec.rb +++ b/spec/controllers/mentors_controller_spec.rb @@ -3,7 +3,7 @@ describe MentorsController do context 'as a mentor' do before(:each) do - @mentor = create(:mentor, terms_of_use_accepted: true) + @mentor = create(:mentor) sign_in @mentor end @@ -52,7 +52,7 @@ end context 'disable_no_kids_reminder' do - let!(:other_mentor) { create(:mentor, terms_of_use_accepted: true) } + let!(:other_mentor) { create(:mentor) } it 'disables no_kids_reminder' do get :disable_no_kids_reminder, params: { id: @mentor.id } expect(@mentor.reload.no_kids_reminder).to eq false @@ -68,20 +68,20 @@ context 'as an admin' do before(:each) do - @admin = create(:admin, terms_of_use_accepted: true) + @admin = create(:admin) sign_in @admin - @mentor = create(:mentor, terms_of_use_accepted: true) + @mentor = create(:mentor) end context 'index' do it 'assigns two mentors in the index' do - create(:mentor, terms_of_use_accepted: true) + create(:mentor) get :index expect(assigns(:mentors).size).to eq(2) end it 'excludes inactive mentors' do - create(:mentor, inactive: true, terms_of_use_accepted: true) + create(:mentor, inactive: true) get :index expect(assigns(:mentors).size).to eq(1) end diff --git a/spec/controllers/principals_controller_spec.rb b/spec/controllers/principals_controller_spec.rb index 0cea0040..e6074abf 100644 --- a/spec/controllers/principals_controller_spec.rb +++ b/spec/controllers/principals_controller_spec.rb @@ -48,7 +48,7 @@ describe 'as an admin' do before(:each) do - @admin = create(:admin, terms_of_use_accepted: true) + @admin = create(:admin) @principal = create(:principal) sign_in @admin end diff --git a/spec/controllers/reminders_controller_spec.rb b/spec/controllers/reminders_controller_spec.rb index bb398e54..00da57dc 100644 --- a/spec/controllers/reminders_controller_spec.rb +++ b/spec/controllers/reminders_controller_spec.rb @@ -3,7 +3,7 @@ describe RemindersController do context 'as admin' do before(:each) do - @admin = create(:admin, terms_of_use_accepted: true) + @admin = create(:admin) @reminder = create(:reminder) sign_in @admin end @@ -40,12 +40,12 @@ end it 'does not allow access to mentors' do - sign_in create(:mentor, terms_of_use_accepted: true) + sign_in create(:mentor) expect { get :index }.to raise_error(CanCan::AccessDenied) end it 'does not allow access to teachers' do - sign_in create(:teacher, terms_of_use_accepted: true) + sign_in create(:teacher) expect { get :index }.to raise_error(CanCan::AccessDenied) end end diff --git a/spec/controllers/reviews_controller_spec.rb b/spec/controllers/reviews_controller_spec.rb index b7bfc5d3..e9f2f705 100644 --- a/spec/controllers/reviews_controller_spec.rb +++ b/spec/controllers/reviews_controller_spec.rb @@ -2,7 +2,7 @@ describe ReviewsController do before(:each) do - @mentor = create(:mentor, terms_of_use_accepted: true) + @mentor = create(:mentor) @kid = create(:kid, mentor: @mentor) end @@ -54,7 +54,7 @@ context 'as an admin' do before(:each) do - sign_in create(:admin, terms_of_use_accepted: true) + sign_in create(:admin) end it 'should record phone coaching' do diff --git a/spec/controllers/schools_controller_spec.rb b/spec/controllers/schools_controller_spec.rb index 8a1211e9..2fa20fb3 100644 --- a/spec/controllers/schools_controller_spec.rb +++ b/spec/controllers/schools_controller_spec.rb @@ -2,7 +2,7 @@ describe SchoolsController do before(:each) do - sign_in @admin = create(:admin, terms_of_use_accepted: true) + sign_in @admin = create(:admin) end context 'new' do diff --git a/spec/controllers/self_registrations_controller_spec.rb b/spec/controllers/self_registrations_controller_spec.rb index 8654506e..9e5fcb7b 100644 --- a/spec/controllers/self_registrations_controller_spec.rb +++ b/spec/controllers/self_registrations_controller_spec.rb @@ -16,8 +16,8 @@ end context 'create' do - let!(:admin) { create(:admin, terms_of_use_accepted: true) } - let!(:admin2) { create(:admin, terms_of_use_accepted: true) } + let!(:admin) { create(:admin) } + let!(:admin2) { create(:admin) } context 'teacher' do let(:params) { { teacher: attributes_for(:teacher).merge(type: 'Teacher', school_id: create(:school).id), terms_of_use: { accepted: "yes" } } } diff --git a/spec/controllers/sites_controller_spec.rb b/spec/controllers/sites_controller_spec.rb index cf87596e..b1fa97b1 100644 --- a/spec/controllers/sites_controller_spec.rb +++ b/spec/controllers/sites_controller_spec.rb @@ -5,7 +5,7 @@ context 'as a admin' do before(:each) do - @admin = create(:admin, terms_of_use_accepted: true) + @admin = create(:admin) @kid = create(:kid) sign_in @admin end diff --git a/spec/controllers/teachers_controller_spec.rb b/spec/controllers/teachers_controller_spec.rb index 8c0ca388..6c2a558b 100644 --- a/spec/controllers/teachers_controller_spec.rb +++ b/spec/controllers/teachers_controller_spec.rb @@ -3,23 +3,23 @@ describe TeachersController do context 'as an admin' do before(:each) do - @admin = create(:admin, terms_of_use_accepted: true) + @admin = create(:admin) sign_in @admin end context 'index' do it 'assigns two teachers in the index' do - 2.times { create(:teacher, terms_of_use_accepted: true) } + 2.times { create(:teacher) } get :index expect(assigns(:teachers).size).to eq(2) end it 'excludes inactive teachers by default' do - create(:teacher, inactive: true, terms_of_use_accepted: true) + create(:teacher, inactive: true) get :index expect(assigns(:teachers).size).to eq(0) end it 'filters for inactive teacher' do - create(:teacher, inactive: true, terms_of_use_accepted: true) + create(:teacher, inactive: true) get :index, params: { inactive: '1' } expect(assigns(:teachers).size).to eq(0) end @@ -27,7 +27,7 @@ context 'show' do it 'renders' do - @teacher = create(:teacher, terms_of_use_accepted: true) + @teacher = create(:teacher) get :show, params: { id: @teacher.id } expect(response).to be_successful end @@ -35,7 +35,7 @@ context 'edit' do it 'renders' do - @teacher = create(:teacher, terms_of_use_accepted: true) + @teacher = create(:teacher) get :edit, params: { id: @teacher.id } expect(response).to be_successful end @@ -43,27 +43,27 @@ context 'update' do it 'can update state' do - @teacher = create(:teacher, terms_of_use_accepted: true) + @teacher = create(:teacher) patch :update, params: { id: @teacher.id, teacher: { state: :declined } } expect(@teacher.reload.state).to eq 'declined' end it 'sends email if state updated to accepted' do - @teacher = create(:teacher, state: :selfservice, terms_of_use_accepted: true) + @teacher = create(:teacher, state: :selfservice) expect { patch :update, params: { id: @teacher.id, teacher: { state: :accepted } } }.to have_enqueued_job(ActionMailer::MailDeliveryJob) end it "doesn't send an email if update other fields than state" do - @teacher = create(:teacher, terms_of_use_accepted: true) + @teacher = create(:teacher) expect { patch :update, params: { id: @teacher.id, mentor: { first_name: 'Karl' } } }.not_to have_enqueued_job(ActionMailer::MailDeliveryJob) end it 'resends email with password with resend password button if user is accepted' do - @teacher = create(:teacher, terms_of_use_accepted: true) + @teacher = create(:teacher) expect { patch :update, params: { id: @teacher.id, commit: I18n.translate('teachers.form.resend_password.btn_text') } }.to have_enqueued_job(ActionMailer::MailDeliveryJob) @@ -72,13 +72,13 @@ context 'destroy' do it 'can destroy inactive' do - @teacher = create(:teacher, inactive: true, terms_of_use_accepted: true) + @teacher = create(:teacher, inactive: true) delete :destroy, params: { id: @teacher.id } expect(Teacher.exists?(@teacher.id)).to be_falsey end it 'cannot destroy active' do - @teacher = create(:teacher, terms_of_use_accepted: true) + @teacher = create(:teacher) expect do delete :destroy, params: { id: @teacher.id } end.to raise_error(CanCan::AccessDenied) @@ -99,7 +99,7 @@ context 'index' do before(:each) do - @teacher = create(:teacher, school: @school, terms_of_use_accepted: true) + @teacher = create(:teacher, school: @school) end it 'renders' do get :index @@ -133,7 +133,7 @@ context 'as a teacher' do before(:each) do @school = create(:school) - @teacher = create(:teacher, school: @school, terms_of_use_accepted: true) + @teacher = create(:teacher, school: @school) sign_in @teacher end diff --git a/spec/factories.rb b/spec/factories.rb index bbfe2aa8..2a95894b 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -25,6 +25,7 @@ factory :admin, class: 'Admin', parent: :user do sequence(:email) { |n| "admin_#{n}@example.com" } + terms_of_use_accepted { true } end factory :mentor, class: 'Mentor', parent: :user do @@ -38,6 +39,7 @@ city { 'city' } dob { '1.1.1990' } phone { '123456798' } + terms_of_use_accepted { true } to_create { |instance| instance.save(validate: false) } end @@ -48,6 +50,7 @@ sequence(:prename) { |n| "Mentor prename#{n}" } association :school phone { '123456798' } + terms_of_use_accepted { true } end factory :principal, class: 'Principal', parent: :user do diff --git a/spec/requests/admin_updating_school_spec.rb b/spec/requests/admin_updating_school_spec.rb index 8118cc4f..f0c10c90 100644 --- a/spec/requests/admin_updating_school_spec.rb +++ b/spec/requests/admin_updating_school_spec.rb @@ -5,7 +5,7 @@ I want to modify an existing school 'do background do - log_in(create(:admin, terms_of_use_accepted: true)) + log_in(create(:admin)) create(:school, name: 'SSIG') end diff --git a/spec/requests/available_kids_spec.rb b/spec/requests/available_kids_spec.rb index 609251d6..cff9214d 100644 --- a/spec/requests/available_kids_spec.rb +++ b/spec/requests/available_kids_spec.rb @@ -10,7 +10,7 @@ context 'AvailableKids as Mentor' do before do - @mentor = create(:mentor, terms_of_use_accepted: true) + @mentor = create(:mentor) @mentor.update!(longitude: 14.0474263, latitude: 50.1873213) log_in(@mentor) end @@ -137,7 +137,7 @@ describe 'Available kids' do before do - log_in(create(:admin, terms_of_use_accepted: true)) + log_in(create(:admin)) visit available_kids_path end @@ -152,7 +152,7 @@ describe 'Available kids' do before do - log_in(create(:teacher, terms_of_use_accepted: true)) + log_in(create(:teacher)) visit available_kids_path end diff --git a/spec/requests/documents_spec.rb b/spec/requests/documents_spec.rb index 18aadb2c..73c29a40 100644 --- a/spec/requests/documents_spec.rb +++ b/spec/requests/documents_spec.rb @@ -2,7 +2,7 @@ feature 'Document Tree', js: true do - let!(:admin) { create(:admin, terms_of_use_accepted: true) } + let!(:admin) { create(:admin) } include ActionDispatch::TestProcess::FixtureFile let(:file) { fixture_file_upload('gespraechsdoku.pdf', 'application/pdf') } diff --git a/spec/requests/filter_mentors_on_coaches_spec.rb b/spec/requests/filter_mentors_on_coaches_spec.rb index ded22ff5..73f7a143 100644 --- a/spec/requests/filter_mentors_on_coaches_spec.rb +++ b/spec/requests/filter_mentors_on_coaches_spec.rb @@ -4,10 +4,10 @@ background do @pw = 'welcome' - @admin1 = create(:admin, name: 'first', prename: 'admin', password: @pw, password_confirmation: @pw, terms_of_use_accepted: true) - @admin2 = create(:admin, name: 'second', prename: 'admin', terms_of_use_accepted: true) - @mentor1 = create(:mentor, name: 'first', prename: 'mentor', transport: 'Halbtax', terms_of_use_accepted: true) - @mentor2 = create(:mentor, name: 'second', prename: 'mentor', transport: 'GA', terms_of_use_accepted: true) + @admin1 = create(:admin, name: 'first', prename: 'admin', password: @pw, password_confirmation: @pw) + @admin2 = create(:admin, name: 'second', prename: 'admin') + @mentor1 = create(:mentor, name: 'first', prename: 'mentor', transport: 'Halbtax') + @mentor2 = create(:mentor, name: 'second', prename: 'mentor', transport: 'GA') @kid1 = create(:kid, mentor: @mentor1, admin: @admin1) @kid2 = create(:kid, mentor: @mentor1, admin: @admin2) @kid3 = create(:kid, mentor: @mentor1, admin: @admin1) diff --git a/spec/requests/filter_mentors_on_meeting_day_spec.rb b/spec/requests/filter_mentors_on_meeting_day_spec.rb index e71cb36b..66695a2c 100644 --- a/spec/requests/filter_mentors_on_meeting_day_spec.rb +++ b/spec/requests/filter_mentors_on_meeting_day_spec.rb @@ -4,9 +4,9 @@ background do @pw = 'welcome' - @admin1 = create(:admin, name: 'first', prename: 'admin', password: @pw, password_confirmation: @pw, terms_of_use_accepted: true) - @mentor1 = create(:mentor, name: 'first', prename: 'mentor', transport: 'Halbtax', terms_of_use_accepted: true) - @mentor2 = create(:mentor, name: 'second', prename: 'mentor', transport: 'GA', terms_of_use_accepted: true) + @admin1 = create(:admin, name: 'first', prename: 'admin', password: @pw, password_confirmation: @pw) + @mentor1 = create(:mentor, name: 'first', prename: 'mentor', transport: 'Halbtax') + @mentor2 = create(:mentor, name: 'second', prename: 'mentor', transport: 'GA') @kid1 = create(:kid, mentor: @mentor1, meeting_day: '1') @kid2 = create(:kid, mentor: @mentor1, meeting_day: '2') @kid3 = create(:kid, mentor: @mentor1, meeting_day: '1') diff --git a/spec/requests/filter_mentors_on_schools_spec.rb b/spec/requests/filter_mentors_on_schools_spec.rb index 954c5b2e..691e9915 100644 --- a/spec/requests/filter_mentors_on_schools_spec.rb +++ b/spec/requests/filter_mentors_on_schools_spec.rb @@ -4,10 +4,10 @@ background do @pw = 'welcome' - @admin1 = create(:admin, name: 'first', prename: 'admin', password: @pw, password_confirmation: @pw, terms_of_use_accepted: true) - @admin2 = create(:admin, name: 'second', prename: 'admin', terms_of_use_accepted: true) - @mentor1 = create(:mentor, name: 'first', prename: 'mentor', transport: 'Halbtax', terms_of_use_accepted: true) - @mentor2 = create(:mentor, name: 'second', prename: 'mentor', transport: 'GA', terms_of_use_accepted: true) + @admin1 = create(:admin, name: 'first', prename: 'admin', password: @pw, password_confirmation: @pw) + @admin2 = create(:admin, name: 'second', prename: 'admin') + @mentor1 = create(:mentor, name: 'first', prename: 'mentor', transport: 'Halbtax') + @mentor2 = create(:mentor, name: 'second', prename: 'mentor', transport: 'GA') @school1 = create(:school, name: 'school1', school_kind: :primary_school) @school2 = create(:school, name: 'school2', school_kind: :primary_school) @kid1 = create(:kid, mentor: @mentor1, admin: @admin1, school: @school1) diff --git a/spec/requests/filter_reminders_spec.rb b/spec/requests/filter_reminders_spec.rb index ff5a442d..caf31bfd 100644 --- a/spec/requests/filter_reminders_spec.rb +++ b/spec/requests/filter_reminders_spec.rb @@ -2,7 +2,7 @@ feature 'reminders index' do background do - @admin = create(:admin, prename: 'admin', terms_of_use_accepted: true) + @admin = create(:admin, prename: 'admin') @school1 = create(:school, name: 'school1') @school2 = create(:school, name: 'school2') @kid1 = create(:kid, school: @school1, name: 'reminder1 kid') diff --git a/spec/requests/first_year_assessment_spec.rb b/spec/requests/first_year_assessment_spec.rb index 67a57e12..830cba8b 100644 --- a/spec/requests/first_year_assessment_spec.rb +++ b/spec/requests/first_year_assessment_spec.rb @@ -6,9 +6,9 @@ So that I can create a new kid ' do background do - @mentor = create(:mentor, terms_of_use_accepted: true) - @teacher = create(:teacher, terms_of_use_accepted: true) - @admin = create(:admin, terms_of_use_accepted: true) + @mentor = create(:mentor) + @teacher = create(:teacher) + @admin = create(:admin) @kid = create(:kid, mentor: @mentor, teacher: @teacher, admin: @admin) log_in(@mentor) visit kid_path(@kid) diff --git a/spec/requests/kid_creation_stories_spec.rb b/spec/requests/kid_creation_stories_spec.rb index 272b05be..2038f34a 100644 --- a/spec/requests/kid_creation_stories_spec.rb +++ b/spec/requests/kid_creation_stories_spec.rb @@ -8,7 +8,7 @@ ' do background do @pw = 'welcome' - @teacher = create(:teacher, password: @pw, password_confirmation: @pw, terms_of_use_accepted: true) + @teacher = create(:teacher, password: @pw, password_confirmation: @pw) log_in(@teacher) end @@ -52,7 +52,7 @@ ' do background do @pw = 'welcome' - @admin = create(:admin, password: @pw, password_confirmation: @pw, terms_of_use_accepted: true) + @admin = create(:admin, password: @pw, password_confirmation: @pw) log_in(@admin) end diff --git a/spec/requests/kid_mentor_relations_spec.rb b/spec/requests/kid_mentor_relations_spec.rb index b3e5974a..4eca1620 100644 --- a/spec/requests/kid_mentor_relations_spec.rb +++ b/spec/requests/kid_mentor_relations_spec.rb @@ -1,11 +1,11 @@ require 'requests/acceptance_helper' feature 'KidMentorRelations as Admin' do - let(:mentor_no_exit) { create(:mentor, name: 'Mentor No', terms_of_use_accepted: true) } - let(:mentor_exit) { create(:mentor, exit_kind: 'exit', name: 'Mentor Later', terms_of_use_accepted: true) } + let(:mentor_no_exit) { create(:mentor, name: 'Mentor No') } + let(:mentor_exit) { create(:mentor, exit_kind: 'exit', name: 'Mentor Later') } before(:each) do - log_in(create(:admin, terms_of_use_accepted: true)) + log_in(create(:admin)) # create many combinations of kids and mentors exiting and not exiting # recognizable by their name @@ -74,7 +74,7 @@ feature 'KidMentorRelations as Mentor' do scenario 'does not allow non admin access' do - log_in(create(:mentor, terms_of_use_accepted: true)) + log_in(create(:mentor)) expect { visit kid_mentor_relations_path }.to raise_error(SecurityError) end end diff --git a/spec/requests/kid_spec.rb b/spec/requests/kid_spec.rb index 80f1fe7f..86b0f558 100644 --- a/spec/requests/kid_spec.rb +++ b/spec/requests/kid_spec.rb @@ -2,7 +2,7 @@ feature 'Kids as Admin' do background do - log_in(create(:admin, terms_of_use_accepted: true)) + log_in(create(:admin)) end before do diff --git a/spec/requests/login_stories_spec.rb b/spec/requests/login_stories_spec.rb index 092bc9ef..ec14542a 100644 --- a/spec/requests/login_stories_spec.rb +++ b/spec/requests/login_stories_spec.rb @@ -8,7 +8,7 @@ ' do background do @pw = 'spec12378' - @mentor = create(:mentor, password: @pw, password_confirmation: @pw, terms_of_use_accepted: true) + @mentor = create(:mentor, password: @pw, password_confirmation: @pw) end scenario 'should login the user w/ valid credentials' do diff --git a/spec/requests/mentor_matchings_spec.rb b/spec/requests/mentor_matchings_spec.rb index 74fa6752..5a7b767d 100644 --- a/spec/requests/mentor_matchings_spec.rb +++ b/spec/requests/mentor_matchings_spec.rb @@ -10,8 +10,8 @@ end describe 'mentor matching' do - let(:mentor) { create(:mentor, sex: 'm', terms_of_use_accepted: true) } - let(:other_mentor) { create(:mentor, sex: 'm', terms_of_use_accepted: true) } + let(:mentor) { create(:mentor, sex: 'm') } + let(:other_mentor) { create(:mentor, sex: 'm') } let(:kid) { create(:kid, name: 'Hodler Rolf', sex: 'm', teacher: create(:teacher)) } let(:mentor_matching) { create(:mentor_matching, mentor: mentor, kid: kid, state: 'reserved') } let(:other_mentor_matching) { create(:mentor_matching, mentor: other_mentor, kid: kid, state: 'pending') } @@ -61,8 +61,8 @@ feature 'MentorMatchings As Admin' do let(:kid) { create(:kid, name: 'Hodler Rolf', sex: 'm', longitude: 14.1025379, latitude: 50.1478497, grade: '1', teacher: create(:teacher)) } - let(:admin) { create(:admin, terms_of_use_accepted: true) } - let(:mentor) { create(:mentor, terms_of_use_accepted: true) } + let(:admin) { create(:admin) } + let(:mentor) { create(:mentor) } let!(:mentor_matching) { create(:mentor_matching, mentor: mentor, kid: kid) } describe 'mentor matchings list' do @@ -80,11 +80,11 @@ end feature 'MentorMatchings As Teacher' do - let(:teacher) { create(:teacher, terms_of_use_accepted: true) } + let(:teacher) { create(:teacher) } let(:kid) { create(:kid, name: 'Hodler Rolf', sex: 'm', longitude: 14.1025379, latitude: 50.1478497, grade: '1', teacher: create(:teacher)) } let(:own_kid) { create(:kid, name: 'Hindler Bolf', sex: 'm', longitude: 14.1025379, latitude: 50.1478497, grade: '1', teacher: teacher) } - let(:mentor) { create(:mentor, terms_of_use_accepted: true) } - let(:own_mentor) { create(:mentor, terms_of_use_accepted: true) } + let(:mentor) { create(:mentor) } + let(:own_mentor) { create(:mentor) } let!(:mentor_matching) { create(:mentor_matching, mentor: mentor, kid: kid) } let!(:own_mentor_matching) { create(:mentor_matching, mentor: own_mentor, kid: own_kid) } diff --git a/spec/requests/principals_spec.rb b/spec/requests/principals_spec.rb index 3e2e89e7..f7ff0c3b 100644 --- a/spec/requests/principals_spec.rb +++ b/spec/requests/principals_spec.rb @@ -2,7 +2,7 @@ feature 'Principals as Admin' do background do - log_in(create(:admin, terms_of_use_accepted: true)) + log_in(create(:admin)) end scenario 'should be able to create a principal' do diff --git a/spec/requests/self_registrations.rb b/spec/requests/self_registrations.rb index b1d278bb..0ca910ff 100644 --- a/spec/requests/self_registrations.rb +++ b/spec/requests/self_registrations.rb @@ -2,13 +2,13 @@ feature 'Self registrations' do background do - create(:admin, terms_of_use_accepted: true) + create(:admin) create(:school, name: 'Teacher school', school_kind: :primary_school) create(:school, name: 'Mentor school', school_kind: :high_school) Site.load.update(public_signups_active: true) end scenario 'redirect to admin if already logged in' do - log_in(create(:admin, terms_of_use_accepted: true)) + log_in(create(:admin)) visit new_self_registration_path expect(current_path).to eq root_path end diff --git a/spec/requests/show_kid_mentors_schedules_spec.rb b/spec/requests/show_kid_mentors_schedules_spec.rb index c3af3f84..acbdee9e 100644 --- a/spec/requests/show_kid_mentors_schedules_spec.rb +++ b/spec/requests/show_kid_mentors_schedules_spec.rb @@ -35,9 +35,9 @@ kid.schedules.create(day: 3, hour: 18, minute: 0) kid } - let!(:admin) { create(:admin, terms_of_use_accepted: true) } + let!(:admin) { create(:admin) } let!(:mentor_frederik) { - mentor = create(:mentor, prename: 'Frederik', name: 'Haller', sex: 'm', terms_of_use_accepted: true) + mentor = create(:mentor, prename: 'Frederik', name: 'Haller', sex: 'm') mentor.schedules.create(day: 1, hour: 14, minute: 0) mentor.schedules.create(day: 1, hour: 14, minute: 30) mentor.schedules.create(day: 1, hour: 15, minute: 0) @@ -53,7 +53,7 @@ mentor } let!(:mentor_melanie) { - mentor = create(:mentor, prename: 'Melanie', name:'Rohner', sex: 'f', terms_of_use_accepted: true) + mentor = create(:mentor, prename: 'Melanie', name:'Rohner', sex: 'f') mentor.schedules.create(day: 3, hour: 14, minute: 0) mentor.schedules.create(day: 3, hour: 14, minute: 30) mentor.schedules.create(day: 3, hour: 15, minute: 0) @@ -69,7 +69,7 @@ mentor } let!(:mentor_max) { - mentor =create(:mentor, prename: 'Max', name: 'Steiner', sex: 'm', terms_of_use_accepted: true) + mentor =create(:mentor, prename: 'Max', name: 'Steiner', sex: 'm') mentor.schedules.create(day: 1, hour: 17, minute: 0) mentor.schedules.create(day: 1, hour: 17, minute: 30) mentor.schedules.create(day: 1, hour: 18, minute: 0) @@ -86,7 +86,7 @@ } let!(:mentor_sarah) { - mentor =create(:mentor, prename: 'Sarah', name: 'Koller', sex: 'f', terms_of_use_accepted: true) + mentor =create(:mentor, prename: 'Sarah', name: 'Koller', sex: 'f') mentor.schedules.create(day: 1, hour: 17, minute: 0) mentor.schedules.create(day: 1, hour: 17, minute: 30) mentor.schedules.create(day: 1, hour: 18, minute: 0) @@ -101,15 +101,15 @@ mentor.schedules.create(day: 2, hour: 17, minute: 30) mentor } - let!(:mentor_5) {create(:mentor, prename: 'Mentor 5', name: 'Other', terms_of_use_accepted: true)} - let!(:mentor_6) {create(:mentor, prename: 'Mentor 6', name: 'Other', terms_of_use_accepted: true)} - let!(:mentor_7) {create(:mentor, prename: 'Mentor 7', name: 'Other', terms_of_use_accepted: true)} - let!(:mentor_8) {create(:mentor, prename: 'Mentor 8', name: 'Other', terms_of_use_accepted: true)} - let!(:mentor_9) {create(:mentor, prename: 'Mentor 9', name: 'Other', terms_of_use_accepted: true)} - let!(:mentor_10) {create(:mentor, prename: 'Mentor 10', name: 'Other', terms_of_use_accepted: true)} - let!(:mentor_11) {create(:mentor, prename: 'Mentor 11', name: 'Other', terms_of_use_accepted: true)} - let!(:mentor_12) {create(:mentor, prename: 'Mentor 12', name: 'Other', terms_of_use_accepted: true)} - let!(:mentor_13) {create(:mentor, prename: 'Mentor 13', name: 'Other', terms_of_use_accepted: true)} + let!(:mentor_5) {create(:mentor, prename: 'Mentor 5', name: 'Other')} + let!(:mentor_6) {create(:mentor, prename: 'Mentor 6', name: 'Other')} + let!(:mentor_7) {create(:mentor, prename: 'Mentor 7', name: 'Other')} + let!(:mentor_8) {create(:mentor, prename: 'Mentor 8', name: 'Other')} + let!(:mentor_9) {create(:mentor, prename: 'Mentor 9', name: 'Other')} + let!(:mentor_10) {create(:mentor, prename: 'Mentor 10', name: 'Other')} + let!(:mentor_11) {create(:mentor, prename: 'Mentor 11', name: 'Other')} + let!(:mentor_12) {create(:mentor, prename: 'Mentor 12', name: 'Other')} + let!(:mentor_13) {create(:mentor, prename: 'Mentor 13', name: 'Other')} background do diff --git a/spec/requests/show_mentors_schools_without_dup_spec.rb b/spec/requests/show_mentors_schools_without_dup_spec.rb index 73988348..e8ecd33e 100644 --- a/spec/requests/show_mentors_schools_without_dup_spec.rb +++ b/spec/requests/show_mentors_schools_without_dup_spec.rb @@ -4,7 +4,7 @@ background do @pw = 'welcome' - @admin = create(:admin, name: 'first', prename: 'admin', password: @pw, password_confirmation: @pw, terms_of_use_accepted: true) + @admin = create(:admin, name: 'first', prename: 'admin', password: @pw, password_confirmation: @pw) @school1 = create(:school, name: 'School 1') @school2 = create(:school, name: 'School 2') @mentor = create(:mentor, name: 'first', prename: 'mentor') diff --git a/spec/requests/site_configuration_spec.rb b/spec/requests/site_configuration_spec.rb index e78356eb..344c0a2f 100644 --- a/spec/requests/site_configuration_spec.rb +++ b/spec/requests/site_configuration_spec.rb @@ -2,7 +2,7 @@ feature 'Site' do scenario 'should be able to edit address in page footer' do - log_in(create(:admin, terms_of_use_accepted: true)) + log_in(create(:admin)) visit edit_site_url fill_in 'Adressangaben in Fusszeile', with: 'Adresse im Footer' click_button 'Seitenweite Konfiguration aktualisieren' @@ -11,13 +11,13 @@ end scenario 'should not allow mentors to edit configuration' do - log_in(create(:mentor, terms_of_use_accepted: true)) + log_in(create(:mentor)) expect { visit edit_site_url }.to raise_error(CanCan::AccessDenied) end scenario 'should show teachers reviews when site configuration allows it' do Site.load.update!(teachers_can_access_reviews: true) - @teacher = create(:teacher, terms_of_use_accepted: true) + @teacher = create(:teacher) create(:kid, name: 'last1', prename: 'first1', teacher: @teacher) log_in(@teacher) click_link 'Schüler/in' @@ -25,4 +25,32 @@ expect(page).to have_css('h1', text: 'last1, first1') expect(page).to have_css('h2', text: 'Gesprächsdokumentationen') end + + scenario 'After edit terms of use other users must accept it after login' do + @teacher = create(:teacher) + log_in(create(:admin)) + visit edit_site_url + fill_in 'Nutzungsbedingungen', with: 'Terms of use' + click_button 'Seitenweite Konfiguration aktualisieren' + click_link 'Abmelden' + + visit new_user_session_path + fill_in 'user_email', with: @teacher.email + fill_in 'user_password', with: @teacher.password + click_button 'Anmelden' + + expect(page).to have_button('Nutzungsbedingungen Akzeptieren') + end + + scenario 'User after login must accept terms of use' do + @teacher = create(:teacher, terms_of_use_accepted: false) + + visit new_user_session_path + fill_in 'user_email', with: @teacher.email + fill_in 'user_password', with: @teacher.password + click_button 'Anmelden' + + click_button 'Nutzungsbedingungen Akzeptieren' + expect(page).to have_content('Erfolgreich angemeldet') + end end diff --git a/spec/requests/substitutions_workflow_spec.rb b/spec/requests/substitutions_workflow_spec.rb index 449bdd58..0d2269c8 100644 --- a/spec/requests/substitutions_workflow_spec.rb +++ b/spec/requests/substitutions_workflow_spec.rb @@ -7,9 +7,9 @@ ' do - let!(:admin) { create(:admin, terms_of_use_accepted: true) } + let!(:admin) { create(:admin) } let!(:mentor_frederik) { - create(:mentor, prename: 'Frederik', name: 'Haller', sex: 'm', terms_of_use_accepted: true) + create(:mentor, prename: 'Frederik', name: 'Haller', sex: 'm') } let!(:kid) { create(:kid, mentor: mentor_frederik)} @@ -58,12 +58,12 @@ ' do - let!(:admin) { create(:admin, terms_of_use_accepted: true) } + let!(:admin) { create(:admin) } let!(:mentor_frederik) { - create(:mentor, prename: 'Frederik', name: 'Haller', sex: 'm', terms_of_use_accepted: true) + create(:mentor, prename: 'Frederik', name: 'Haller', sex: 'm') } let!(:mentor_melanie) { - create(:mentor, ects: :currently, prename: 'Melanie', name:'Rohner', sex: 'f', terms_of_use_accepted: true) + create(:mentor, ects: :currently, prename: 'Melanie', name:'Rohner', sex: 'f') } let!(:kid) { create(:kid, mentor: mentor_frederik) } @@ -101,7 +101,7 @@ ' do let!(:mentor) { - create(:mentor, prename: 'Mentor', name: 'Mentor', sex: 'm', terms_of_use_accepted: true) + create(:mentor, prename: 'Mentor', name: 'Mentor', sex: 'm') } background do diff --git a/spec/requests/teacher_navigation_stories_spec.rb b/spec/requests/teacher_navigation_stories_spec.rb index 412d7aad..9290255d 100644 --- a/spec/requests/teacher_navigation_stories_spec.rb +++ b/spec/requests/teacher_navigation_stories_spec.rb @@ -8,7 +8,7 @@ " do background do @pw = 'welcome' - @teacher = create(:teacher, password: @pw, password_confirmation: @pw, terms_of_use_accepted: true) + @teacher = create(:teacher, password: @pw, password_confirmation: @pw) log_in(@teacher) end diff --git a/spec/requests/teachers_spec.rb b/spec/requests/teachers_spec.rb index befd622d..db889ef0 100644 --- a/spec/requests/teachers_spec.rb +++ b/spec/requests/teachers_spec.rb @@ -2,7 +2,7 @@ feature 'Teachers as Admin' do background do - log_in(create(:admin, terms_of_use_accepted: true)) + log_in(create(:admin)) end scenario 'should be able to create a teacher' do diff --git a/spec/requests/termination_assessment_spec.rb b/spec/requests/termination_assessment_spec.rb index 133a6837..fefd2237 100644 --- a/spec/requests/termination_assessment_spec.rb +++ b/spec/requests/termination_assessment_spec.rb @@ -6,8 +6,8 @@ So that I can create a new kid ' do background do - @teacher = create(:teacher, terms_of_use_accepted: true) - @admin = create(:admin, terms_of_use_accepted: true) + @teacher = create(:teacher) + @admin = create(:admin) @kid = create(:kid, teacher: @teacher, admin: @admin) log_in(@teacher) visit kid_path(@kid) From 0c852e1f66248d176030c9c0adf2adb6e331c63b Mon Sep 17 00:00:00 2001 From: Martin Gaher Date: Sun, 20 Mar 2022 19:27:29 +0100 Subject: [PATCH 4/9] add headline + remove decline button --- app/views/layouts/application.html.haml | 4 ++-- config/locales/future_kids.de.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 2fa8492e..39e025e1 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -50,10 +50,10 @@ - if (user_signed_in? && current_user.terms_of_use_accepted == false) .container .term-of-use + %h1 + = t('activerecord.attributes.site.terms_of_use_accept.terms_of_use_headline') = @content&.html_safe = button_to t('activerecord.attributes.site.terms_of_use_accept.button_accept'), { action: "edit_terms", :controller=>"users", :method => :get }, { class: 'btn btn-xs btn-success term-of-use-button' } - .btn.btn-xs.btn-default.term-of-use-button - = link_to t('activerecord.attributes.site.terms_of_use_accept.button_decline'), destroy_user_session_path, method: :delete -else #sidebar-wrapper diff --git a/config/locales/future_kids.de.yml b/config/locales/future_kids.de.yml index 7f5be1ae..4f9ca52b 100644 --- a/config/locales/future_kids.de.yml +++ b/config/locales/future_kids.de.yml @@ -248,8 +248,8 @@ de: title: Titel des Browsertabs css: Seitenspezifisches CSS terms_of_use_accept: + terms_of_use_headline: "Bitte akzeptieren sie die geändertern Nutzungsbedingungen" button_accept: "Nutzungsbedingungen Akzeptieren" - button_decline: "Nutzungsbedingungen Ablehnen, Abmelden" substitution: kid: "Kind" mentor: "Mentor/in" From de098370590491c8d4c2799453fd9381a283b532 Mon Sep 17 00:00:00 2001 From: Martin Gaher Date: Mon, 21 Mar 2022 19:45:41 +0100 Subject: [PATCH 5/9] Pull request comments repairs --- app/assets/stylesheets/application.css.scss | 2 +- app/controllers/application_controller.rb | 5 ----- app/controllers/sites_controller.rb | 4 ++-- app/controllers/users_controller.rb | 5 ++--- app/views/layouts/application.html.haml | 6 +++--- config/locales/future_kids.de.yml | 4 ++-- spec/requests/site_configuration_spec.rb | 11 +++++++++++ 7 files changed, 21 insertions(+), 16 deletions(-) diff --git a/app/assets/stylesheets/application.css.scss b/app/assets/stylesheets/application.css.scss index 16081746..2765787c 100644 --- a/app/assets/stylesheets/application.css.scss +++ b/app/assets/stylesheets/application.css.scss @@ -229,7 +229,7 @@ form.schedule { .term-of-use-button { margin: 10px; - float:right; + float: right; } .kid-mentor-schedules { diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index c80ceaad..3b1cd212 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -6,7 +6,6 @@ class ApplicationController < ActionController::Base before_action :load_site_configuration before_action :logout_inactive - before_action :terms_of_use before_action :authenticate_user! before_action :intercept_sensitive_params! protect_from_forgery prepend: true, with: :exception @@ -38,10 +37,6 @@ def load_site_configuration @site = Site.load end - def terms_of_use - @content = Site.load.terms_of_use_content_parsed - end - def logout_inactive return true if 'sessions' == controller_name return true if controller_name == 'self_registrations' diff --git a/app/controllers/sites_controller.rb b/app/controllers/sites_controller.rb index 9bb92338..ac794cff 100644 --- a/app/controllers/sites_controller.rb +++ b/app/controllers/sites_controller.rb @@ -19,9 +19,9 @@ def show def update @site.attributes = site_params - if(@site.terms_of_use_content_changed?) + if @site.terms_of_use_content_changed? id = current_user.id - users = User.where("id != ?", id) + users = User.where.not(id: id) users.update_all(terms_of_use_accepted: false) end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 86ab6640..bba43db8 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1,9 +1,8 @@ class UsersController < ApplicationController def edit_terms - if(current_user != nil) - user = User.find_by(id: current_user.id) - user.update(terms_of_use_accepted: true) + if !current_user.nil? + current_user.update(terms_of_use_accepted: true) end if current_user.is_a?(Mentor) && current_user.kids.empty? diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 39e025e1..e364f01b 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -47,15 +47,15 @@ %li.divider %li= link_to 'Abmelden', destroy_user_session_path, method: :delete - - if (user_signed_in? && current_user.terms_of_use_accepted == false) + - if user_signed_in? && current_user.terms_of_use_accepted != true .container .term-of-use %h1 = t('activerecord.attributes.site.terms_of_use_accept.terms_of_use_headline') - = @content&.html_safe + = @site.terms_of_use_content_parsed&.html_safe = button_to t('activerecord.attributes.site.terms_of_use_accept.button_accept'), { action: "edit_terms", :controller=>"users", :method => :get }, { class: 'btn btn-xs btn-success term-of-use-button' } - -else + - else #sidebar-wrapper .container #sidebar.hidden-xs.hidden-sm diff --git a/config/locales/future_kids.de.yml b/config/locales/future_kids.de.yml index 4f9ca52b..47d83aff 100644 --- a/config/locales/future_kids.de.yml +++ b/config/locales/future_kids.de.yml @@ -248,8 +248,8 @@ de: title: Titel des Browsertabs css: Seitenspezifisches CSS terms_of_use_accept: - terms_of_use_headline: "Bitte akzeptieren sie die geändertern Nutzungsbedingungen" - button_accept: "Nutzungsbedingungen Akzeptieren" + terms_of_use_headline: Bitte akzeptieren sie die geändertern Nutzungsbedingungen + button_accept: Nutzungsbedingungen Akzeptieren substitution: kid: "Kind" mentor: "Mentor/in" diff --git a/spec/requests/site_configuration_spec.rb b/spec/requests/site_configuration_spec.rb index 344c0a2f..fb56723e 100644 --- a/spec/requests/site_configuration_spec.rb +++ b/spec/requests/site_configuration_spec.rb @@ -53,4 +53,15 @@ click_button 'Nutzungsbedingungen Akzeptieren' expect(page).to have_content('Erfolgreich angemeldet') end + + scenario "Check terms of use accepted after change term of use" do + @teacher = create(:teacher) + log_in(create(:admin)) + visit edit_site_url + fill_in 'Nutzungsbedingungen', with: 'Terms of use' + click_button 'Seitenweite Konfiguration aktualisieren' + + @teacher.reload + expect(@teacher.terms_of_use_accepted).to eq false + end end From 58aeb9646727b0686a771d46b1ce6ed90b0f0722 Mon Sep 17 00:00:00 2001 From: Martin Gaher Date: Wed, 23 Mar 2022 14:15:09 +0100 Subject: [PATCH 6/9] Repair - after change tos enforce accept for all users --- app/controllers/sites_controller.rb | 5 ++--- app/controllers/users_controller.rb | 2 +- ...20220323125356_add_terms_of_use_accepted_date_to_users.rb | 5 +++++ .../20220323125547_add_terms_of_use_changed_date_to_sites.rb | 5 +++++ 4 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 db/migrate/20220323125356_add_terms_of_use_accepted_date_to_users.rb create mode 100644 db/migrate/20220323125547_add_terms_of_use_changed_date_to_sites.rb diff --git a/app/controllers/sites_controller.rb b/app/controllers/sites_controller.rb index ac794cff..96fbadc0 100644 --- a/app/controllers/sites_controller.rb +++ b/app/controllers/sites_controller.rb @@ -20,9 +20,8 @@ def show def update @site.attributes = site_params if @site.terms_of_use_content_changed? - id = current_user.id - users = User.where.not(id: id) - users.update_all(terms_of_use_accepted: false) + User.update_all(terms_of_use_accepted: false) + @site.terms_of_use_changed_date = DateTime.now end if @site.save diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index bba43db8..640978ee 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -2,7 +2,7 @@ class UsersController < ApplicationController def edit_terms if !current_user.nil? - current_user.update(terms_of_use_accepted: true) + current_user.update(terms_of_use_accepted: true, terms_of_use_accepted_date: DateTime.now) end if current_user.is_a?(Mentor) && current_user.kids.empty? diff --git a/db/migrate/20220323125356_add_terms_of_use_accepted_date_to_users.rb b/db/migrate/20220323125356_add_terms_of_use_accepted_date_to_users.rb new file mode 100644 index 00000000..a95532ea --- /dev/null +++ b/db/migrate/20220323125356_add_terms_of_use_accepted_date_to_users.rb @@ -0,0 +1,5 @@ +class AddTermsOfUseAcceptedDateToUsers < ActiveRecord::Migration[6.1] + def change + add_column :users, :terms_of_use_accepted_date, :datetime + end +end diff --git a/db/migrate/20220323125547_add_terms_of_use_changed_date_to_sites.rb b/db/migrate/20220323125547_add_terms_of_use_changed_date_to_sites.rb new file mode 100644 index 00000000..b83b7948 --- /dev/null +++ b/db/migrate/20220323125547_add_terms_of_use_changed_date_to_sites.rb @@ -0,0 +1,5 @@ +class AddTermsOfUseChangedDateToSites < ActiveRecord::Migration[6.1] + def change + add_column :sites, :terms_of_use_changed_date, :datetime + end +end From b57bafcacd742a52c954e32f9fa90e3209be9d5d Mon Sep 17 00:00:00 2001 From: Martin Gaher Date: Wed, 23 Mar 2022 14:40:27 +0100 Subject: [PATCH 7/9] add footer to page with tos --- app/views/layouts/application.html.haml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index e364f01b..f1fbd5eb 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -54,7 +54,15 @@ = t('activerecord.attributes.site.terms_of_use_accept.terms_of_use_headline') = @site.terms_of_use_content_parsed&.html_safe = button_to t('activerecord.attributes.site.terms_of_use_accept.button_accept'), { action: "edit_terms", :controller=>"users", :method => :get }, { class: 'btn btn-xs btn-success term-of-use-button' } - + #main + .container + - if @site.footer_address.present? || @site.footer_email.present? + #footer + .container + .col-md12 + = @site.footer_address + - if @site.footer_email.present? + = mail_to @site.footer_email, nil, :encode => "hex" - else #sidebar-wrapper .container From a9c9ecc34ab9cf254bb8e8c8d79d2893b1d025e2 Mon Sep 17 00:00:00 2001 From: Martin Gaher Date: Thu, 24 Mar 2022 18:28:20 +0100 Subject: [PATCH 8/9] review repairs Change names tos columns in Db, compute accepted from dates + some small changes --- app/controllers/sites_controller.rb | 3 +-- app/controllers/users_controller.rb | 4 ++-- app/models/user.rb | 4 ++++ app/views/layouts/application.html.haml | 2 +- ...0220324170645_remove_terms_of_use_accepted_from_users.rb | 5 +++++ db/migrate/20220324170919_fix_term_of_use_column_names.rb | 6 ++++++ spec/factories.rb | 6 +++--- spec/requests/site_configuration_spec.rb | 2 +- 8 files changed, 23 insertions(+), 9 deletions(-) create mode 100644 db/migrate/20220324170645_remove_terms_of_use_accepted_from_users.rb create mode 100644 db/migrate/20220324170919_fix_term_of_use_column_names.rb diff --git a/app/controllers/sites_controller.rb b/app/controllers/sites_controller.rb index 96fbadc0..02308aac 100644 --- a/app/controllers/sites_controller.rb +++ b/app/controllers/sites_controller.rb @@ -20,8 +20,7 @@ def show def update @site.attributes = site_params if @site.terms_of_use_content_changed? - User.update_all(terms_of_use_accepted: false) - @site.terms_of_use_changed_date = DateTime.now + @site.terms_of_use_content_changed_at = DateTime.now end if @site.save diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 640978ee..4b0d89de 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -2,13 +2,13 @@ class UsersController < ApplicationController def edit_terms if !current_user.nil? - current_user.update(terms_of_use_accepted: true, terms_of_use_accepted_date: DateTime.now) + current_user.update(terms_of_use_accepted_at: DateTime.now) end if current_user.is_a?(Mentor) && current_user.kids.empty? # if a menotr has no kids yet assigned, go to available kids redirect_to available_kids_path - elsif current_user.is_a?(Teacher) && current_user.mentor_matchings.pluck(:state).include?('pending') + elsif current_user.is_a?(Teacher) && current_user.mentor_matchings.exists?(state: 'pending') # if teacher has some pending requests from mentors redirect_to mentor_matchings_path else diff --git a/app/models/user.rb b/app/models/user.rb index 34f49327..b09294db 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -27,6 +27,10 @@ def display_name [name, prename].reject(&:blank?).join(', ') end + def terms_of_use_accepted + terms_of_use_accepted_at > Site.load.terms_of_use_content_changed_at + end + def human_absence text_format(absence) end diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index f1fbd5eb..f588f176 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -47,7 +47,7 @@ %li.divider %li= link_to 'Abmelden', destroy_user_session_path, method: :delete - - if user_signed_in? && current_user.terms_of_use_accepted != true + - if user_signed_in? && !current_user.terms_of_use_accepted .container .term-of-use %h1 diff --git a/db/migrate/20220324170645_remove_terms_of_use_accepted_from_users.rb b/db/migrate/20220324170645_remove_terms_of_use_accepted_from_users.rb new file mode 100644 index 00000000..a0caa891 --- /dev/null +++ b/db/migrate/20220324170645_remove_terms_of_use_accepted_from_users.rb @@ -0,0 +1,5 @@ +class RemoveTermsOfUseAcceptedFromUsers < ActiveRecord::Migration[6.1] + def change + remove_column :users, :terms_of_use_accepted + end +end diff --git a/db/migrate/20220324170919_fix_term_of_use_column_names.rb b/db/migrate/20220324170919_fix_term_of_use_column_names.rb new file mode 100644 index 00000000..82251dee --- /dev/null +++ b/db/migrate/20220324170919_fix_term_of_use_column_names.rb @@ -0,0 +1,6 @@ +class FixTermOfUseColumnNames < ActiveRecord::Migration[6.1] + def change + rename_column :users, :terms_of_use_accepted_date, :terms_of_use_accepted_at + rename_column :sites, :terms_of_use_changed_date, :terms_of_use_content_changed_at + end +end diff --git a/spec/factories.rb b/spec/factories.rb index 2a95894b..b1c5df30 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -25,7 +25,7 @@ factory :admin, class: 'Admin', parent: :user do sequence(:email) { |n| "admin_#{n}@example.com" } - terms_of_use_accepted { true } + terms_of_use_accepted_at { DateTime.now } end factory :mentor, class: 'Mentor', parent: :user do @@ -39,7 +39,7 @@ city { 'city' } dob { '1.1.1990' } phone { '123456798' } - terms_of_use_accepted { true } + terms_of_use_accepted_at { DateTime.now } to_create { |instance| instance.save(validate: false) } end @@ -50,7 +50,7 @@ sequence(:prename) { |n| "Mentor prename#{n}" } association :school phone { '123456798' } - terms_of_use_accepted { true } + terms_of_use_accepted_at { DateTime.now } end factory :principal, class: 'Principal', parent: :user do diff --git a/spec/requests/site_configuration_spec.rb b/spec/requests/site_configuration_spec.rb index fb56723e..3a60cc09 100644 --- a/spec/requests/site_configuration_spec.rb +++ b/spec/requests/site_configuration_spec.rb @@ -43,7 +43,7 @@ end scenario 'User after login must accept terms of use' do - @teacher = create(:teacher, terms_of_use_accepted: false) + @teacher = create(:teacher, terms_of_use_accepted_at: DateTime.yesterday) visit new_user_session_path fill_in 'user_email', with: @teacher.email From 8b060fa97d41bce08c881b7b7690f7bae4699f6c Mon Sep 17 00:00:00 2001 From: Martin Gaher Date: Thu, 24 Mar 2022 18:44:25 +0100 Subject: [PATCH 9/9] DB defaults on tos dates --- .../20220324174013_fix_term_of_use_column_defaults.rb | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 db/migrate/20220324174013_fix_term_of_use_column_defaults.rb diff --git a/db/migrate/20220324174013_fix_term_of_use_column_defaults.rb b/db/migrate/20220324174013_fix_term_of_use_column_defaults.rb new file mode 100644 index 00000000..c6b58a7e --- /dev/null +++ b/db/migrate/20220324174013_fix_term_of_use_column_defaults.rb @@ -0,0 +1,6 @@ +class FixTermOfUseColumnDefaults < ActiveRecord::Migration[6.1] + def change + change_column_default :users, :terms_of_use_accepted_at, DateTime.now + change_column_default :sites, :terms_of_use_content_changed_at, DateTime.now + end +end