Add /admin/users/:id/accept_terms_or_service end point

Plus specs
This commit is contained in:
Gaetan Craig-Riou
2023-11-10 13:05:23 +11:00
committed by Konrad
parent a234f1ace6
commit ee79fd88d2
3 changed files with 40 additions and 2 deletions

View File

@@ -57,6 +57,14 @@ module Spree
end
end
def accept_terms_of_services
if @user.update(terms_of_service_accepted_at: DateTime.now)
head :ok
else
head :unprocessable_entity
end
end
protected
def collection

View File

@@ -48,8 +48,11 @@ Spree::Core::Engine.routes.draw do
get '/search/known_users' => "search#known_users", :as => :search_known_users
get '/search/customers' => 'search#customers', :as => :search_customers
resources :users
resources :users do
member do
post :accept_terms_of_services
end
end
constraints FeatureToggleConstraint.new(:admin_style_v3, negate: true) do
# Show old bulk products screen

View File

@@ -38,4 +38,31 @@ describe Spree::Admin::UsersController do
expect(response).to redirect_to('/unauthorized')
end
end
describe "#accept_terms_of_services" do
let(:user) { create(:user) }
before do
allow(controller).to receive_messages spree_current_user: user
user.spree_roles << Spree::Role.find_or_create_by(name: 'admin')
end
it "updates terms_of_service_accepted_at" do
spree_post :accept_terms_of_services, id: user.id
expect(response).to have_http_status(:ok)
end
context "when something goes wrong" do
it "returns unprocessable entity" do
# mock update to make it fails
allow(user).to receive(:update).and_return(false)
allow(Spree::User).to receive(:find).and_return(user)
spree_post :accept_terms_of_services, id: user.id
expect(response).to have_http_status(:unprocessable_entity)
end
end
end
end