Files
grecia/spec/models/admin_notification_spec.rb
Javi Martín d7563be8b3 Fix admin notification with relative URLs
The test was passing because it was using the rack driver, but on real
browsers it wasn't generating the expected URL.
2021-03-31 14:03:26 +02:00

100 lines
2.9 KiB
Ruby

require "rails_helper"
describe AdminNotification do
let(:admin_notification) { build(:admin_notification) }
it_behaves_like "globalizable", :admin_notification
it "is valid" do
expect(admin_notification).to be_valid
end
it "is not valid without a title" do
admin_notification.title = nil
expect(admin_notification).not_to be_valid
end
it "is not valid without a body" do
admin_notification.body = nil
expect(admin_notification).not_to be_valid
end
it "is not valid without a segment_recipient" do
admin_notification.segment_recipient = nil
expect(admin_notification).not_to be_valid
end
describe "#complete_link_url" do
it "does not change link if there is no value" do
expect(admin_notification.link).to be_nil
end
it "fixes a link without http://" do
admin_notification.link = "lol.consul.dev"
expect(admin_notification).to be_valid
expect(admin_notification.link).to eq("http://lol.consul.dev")
end
it "fixes a link with wwww. but without http://" do
admin_notification.link = "www.lol.consul.dev"
expect(admin_notification).to be_valid
expect(admin_notification.link).to eq("http://www.lol.consul.dev")
end
it "does not modify a relative link" do
admin_notification.link = "/proposals"
expect(admin_notification).to be_valid
expect(admin_notification.link).to eq("/proposals")
end
it "does not modify a link with http://" do
admin_notification.link = "http://lol.consul.dev"
expect(admin_notification).to be_valid
expect(admin_notification.link).to eq("http://lol.consul.dev")
end
it "does not modify a link with https://" do
admin_notification.link = "https://lol.consul.dev"
expect(admin_notification).to be_valid
expect(admin_notification.link).to eq("https://lol.consul.dev")
end
it "does not modify a link with http://wwww." do
admin_notification.link = "http://www.lol.consul.dev"
expect(admin_notification).to be_valid
expect(admin_notification.link).to eq("http://www.lol.consul.dev")
end
end
describe "#valid_segment_recipient?" do
it "is false when segment_recipient value is invalid" do
admin_notification.segment_recipient = "invalid_segment_name"
error = "The user recipients segment is invalid"
expect(admin_notification).not_to be_valid
expect(admin_notification.errors.messages[:segment_recipient]).to include(error)
end
end
describe "#list_of_recipients" do
let(:erased_user) { create(:user, username: "erased_user") }
before do
2.times { create(:user) }
erased_user.erase
admin_notification.update!(segment_recipient: "all_users")
end
it "returns list of all active users" do
expect(admin_notification.list_of_recipients.count).to eq(2)
expect(admin_notification.list_of_recipients).not_to include(erased_user)
end
end
end