docbrown/spec/models/user_visit_context_spec.rb
Ben Halpern 1da43d9027
Add language when new user visit context is detected (#20263)
* Add language when new user visit context is detected

* Finalize tests
2023-10-20 15:35:41 -04:00

41 lines
1.4 KiB
Ruby

require "rails_helper"
RSpec.describe UserVisitContext do
describe "associations" do
it { is_expected.to belong_to(:user) }
it { is_expected.to have_many(:ahoy_visits).class_name("Ahoy::Visit").dependent(:nullify) }
end
describe "callbacks" do
let(:user) { create(:user) }
let(:user_visit_context) { build(:user_visit_context, user: user) }
it "calls set_user_language after create" do
allow(user_visit_context).to receive(:set_user_language)
user_visit_context.save!
expect(user_visit_context).to have_received(:set_user_language)
end
end
describe "#set_user_language" do
let(:user) { create(:user) }
let(:user_visit_context) { build(:user_visit_context, user: user, accept_language: "en-US;q=0.9,fr-FR;q=0.8") }
it "creates UserLanguage records" do
expect { user_visit_context.set_user_language }
.to change(UserLanguage, :count).by(2)
end
it "logs an error if something goes wrong" do
allow(UserLanguage).to receive(:where).and_raise(StandardError)
allow(Rails.logger).to receive(:error).with(instance_of(StandardError))
user_visit_context.set_user_language
expect(Rails.logger).to have_received(:error).with(instance_of(StandardError))
end
it "matches specific languages" do
user_visit_context.set_user_language
expect(UserLanguage.pluck(:language)).to match_array(%w[en fr])
end
end
end