Allow fast checkout without re-accepting old terms

We did that for the shop's terms already and now do it for the platform
terms as well.
This commit is contained in:
Maikel Linke
2021-04-23 15:35:16 +10:00
parent 17a3d23d68
commit af314cbbdf
6 changed files with 65 additions and 2 deletions

View File

@@ -200,6 +200,32 @@ feature "As a consumer I want to check out my cart", js: true do
uncheck "Terms of service"
expect(page).to have_button("Place order now", disabled: true)
end
context "when the terms have been accepted in the past" do
before do
TermsOfServiceFile.create!(
attachment: File.open(Rails.root.join("public/Terms-of-service.pdf")),
updated_at: 1.day.ago,
)
customer = create(:customer, enterprise: order.distributor, user: user)
customer.update(terms_and_conditions_accepted_at: Time.zone.now)
end
it "remembers the acceptance" do
visit checkout_path
within "#checkout_form" do
expect(page).to have_link("Terms of service")
expect(page).to have_button("Place order now", disabled: false)
end
uncheck "Terms of service"
expect(page).to have_button("Place order now", disabled: true)
check "Terms of service"
expect(page).to have_button("Place order now", disabled: false)
end
end
end
context "when the seller's terms and the platform's terms have to be accepted" do

View File

@@ -33,4 +33,22 @@ describe TermsOfServiceFile do
expect(subject).to match /^\/system\/terms_of_service_files\/attachments.*Terms-of-service\.pdf\?\d+$/
end
end
describe ".updated_at" do
let(:subject) { TermsOfServiceFile.updated_at }
it "gives the most conservative time if not known" do
Timecop.freeze do
expect(subject).to eq Time.zone.now
end
end
it "returns the time when the terms were last updated" do
update_time = 1.day.ago
file = TermsOfServiceFile.create!(attachment: pdf, updated_at: update_time)
# The database isn't as precise as Ruby's time and rounds.
expect(subject).to be_within(0.001).of(update_time)
end
end
end