mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
89 lines
2.8 KiB
Ruby
89 lines
2.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "spec_helper"
|
|
|
|
RSpec.describe "/admin" do
|
|
let(:enterprise) { create(:supplier_enterprise, name: "Feedme") }
|
|
let(:enterprise_user) { create(:user, enterprise_limit: 1) }
|
|
|
|
before do
|
|
enterprise_user.enterprise_roles.build(enterprise:).save
|
|
sign_in enterprise_user
|
|
end
|
|
|
|
describe "GET /admin" do
|
|
before do
|
|
mocked_tos = double(TermsOfServiceFile, updated_at: 2.hours.ago)
|
|
allow(TermsOfServiceFile).to receive(:current).and_return(mocked_tos)
|
|
# Mock current_url so we don't have to set up a complicated TermsOfServiceFile mock
|
|
# with attachement
|
|
allow(TermsOfServiceFile).to receive(:current_url).and_return("tmp/tos.pdf")
|
|
end
|
|
|
|
it "loads the dashboard page" do
|
|
get "/admin"
|
|
|
|
expect(response).to render_template("spree/admin/overview/single_enterprise_dashboard")
|
|
end
|
|
|
|
# The banner will show on all admin page, we are just testing it here
|
|
describe "terms of service updated banner" do
|
|
context "when terms of service has been updated" do
|
|
before { Spree::Config.enterprises_require_tos = true }
|
|
|
|
it "shows accept new ToS banner" do
|
|
enterprise_user.update(terms_of_service_accepted_at: nil)
|
|
|
|
get "/admin"
|
|
|
|
expect(response.body).to include("Terms of Service have been updated")
|
|
end
|
|
|
|
context "when user has accepted new terms of service" do
|
|
it "doesn't show accept new ToS banner" do
|
|
enterprise_user.update(terms_of_service_accepted_at: 1.hour.ago)
|
|
|
|
get "/admin"
|
|
|
|
expect(response.body).not_to include("Terms of Service have been updated")
|
|
end
|
|
end
|
|
|
|
# Shouldn't be possible
|
|
context "when user has accepted new terms of service in the future" do
|
|
it "shows accept new ToS banner" do
|
|
enterprise_user.update(terms_of_service_accepted_at: 1.hour.from_now)
|
|
|
|
get "/admin"
|
|
|
|
expect(response.body).to include("Terms of Service have been updated")
|
|
end
|
|
end
|
|
|
|
context "when no ToS has been uploaded" do
|
|
it "doesn't show accept new ToS banner" do
|
|
allow(TermsOfServiceFile).to receive(:current).and_return(nil)
|
|
|
|
get "/admin"
|
|
|
|
expect(response.body).not_to include("Terms of Service have been updated")
|
|
end
|
|
end
|
|
|
|
context "when enterprises don't need to accept ToS" do
|
|
before do
|
|
Spree::Config.enterprises_require_tos = false
|
|
enterprise_user.update(terms_of_service_accepted_at: nil)
|
|
end
|
|
|
|
it "doesn't show accept new ToS banner" do
|
|
get "/admin"
|
|
|
|
expect(response.body).not_to include("Terms of Service have been updated")
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|