diff --git a/app/controllers/spree/admin/users_controller.rb b/app/controllers/spree/admin/users_controller.rb index 34714ba233..4b07df4d69 100644 --- a/app/controllers/spree/admin/users_controller.rb +++ b/app/controllers/spree/admin/users_controller.rb @@ -57,6 +57,15 @@ module Spree end end + def accept_terms_of_services + spree_current_user.update(terms_of_service_accepted_at: DateTime.now) + + respond_to do |format| + format.html { redirect_back(fallback_location: spree.admin_dashboard_path) } + format.turbo_stream { render turbo_stream: turbo_stream.remove('banner-container') } + end + end + protected def collection diff --git a/app/reflexes/user_reflex.rb b/app/reflexes/user_reflex.rb deleted file mode 100644 index d4b5f59be5..0000000000 --- a/app/reflexes/user_reflex.rb +++ /dev/null @@ -1,9 +0,0 @@ -# frozen_string_literal: true - -class UserReflex < ApplicationReflex - def accept_terms_of_services - current_user.update(terms_of_service_accepted_at: DateTime.now) - - morph "#banner-container", "" - end -end diff --git a/app/views/admin/_terms_of_service_banner.html.haml b/app/views/admin/_terms_of_service_banner.html.haml index 3adbba2f93..ce39e5da1c 100644 --- a/app/views/admin/_terms_of_service_banner.html.haml +++ b/app/views/admin/_terms_of_service_banner.html.haml @@ -3,6 +3,6 @@ .column-left %p= t("admin.terms_of_service_have_been_updated_html", tos_link: link_to(t("admin.terms_of_service"), TermsOfServiceFile.current_url, target: "_blank")) .column-right - %button{ data: { reflex: "click->user#accept_terms_of_services" } } + = button_to admin_accept_terms_of_services_path, data: { turbo_method: :post }, form: { data: { turbo: true } } do = t("admin.accept_terms_of_service") diff --git a/config/routes/spree.rb b/config/routes/spree.rb index cb3ee2506a..9723315c78 100644 --- a/config/routes/spree.rb +++ b/config/routes/spree.rb @@ -49,6 +49,7 @@ Spree::Core::Engine.routes.draw do get '/search/customers' => 'search#customers', :as => :search_customers resources :users + post 'accept_terms_of_services', to: 'users#accept_terms_of_services' constraints FeatureToggleConstraint.new(:admin_style_v3, negate: true) do # Show old bulk products screen diff --git a/spec/controllers/spree/admin/users_controller_spec.rb b/spec/controllers/spree/admin/users_controller_spec.rb index 11d4b969c4..73c5074776 100644 --- a/spec/controllers/spree/admin/users_controller_spec.rb +++ b/spec/controllers/spree/admin/users_controller_spec.rb @@ -38,4 +38,19 @@ RSpec.describe Spree::Admin::UsersController do expect(response).to redirect_to('/unauthorized') end end + + context '#accept_terms_of_services' do + before(:each) { controller_login_as_admin } + it "updates terms_of_service_accepted_at" do + expect { + spree_post :accept_terms_of_services, format: :turbo_stream + @admin_user.reload + }.to change{ @admin_user.terms_of_service_accepted_at } + end + + it "removes banner from the page" do + spree_post :accept_terms_of_services, format: :turbo_stream + expect(response.body).not_to have_selector("#banner-container") + end + end end diff --git a/spec/reflexes/user_reflex_spec.rb b/spec/reflexes/user_reflex_spec.rb deleted file mode 100644 index 36fba0c599..0000000000 --- a/spec/reflexes/user_reflex_spec.rb +++ /dev/null @@ -1,23 +0,0 @@ -# frozen_string_literal: true - -require "reflex_helper" - -RSpec.describe UserReflex, type: :reflex do - let(:current_user) { create(:user) } - let(:context) { { url: spree.admin_dashboard_url, connection: { current_user: } } } - - describe "#accept_terms_of_services" do - subject(:reflex) { build_reflex(method_name: :accept_terms_of_services, **context) } - - it "updates terms_of_service_accepted_at" do - expect { - reflex.run(:accept_terms_of_services) - current_user.reload - }.to change{ current_user.terms_of_service_accepted_at } - end - - it "removes banner from the page" do - expect(reflex.run(:accept_terms_of_services)).to morph("#banner-container").with("") - end - end -end