Skip to content

Commit e4f8113

Browse files
stefannibrasilcompwron
authored andcommitted
Add coverage for CreateAllCasaAdminService
CreateAllCasaAdminService creates system-wide admin users but has a placeholder spec only. This commit adds coverage for it since creating users is a critical functionality of the app.
1 parent f939d40 commit e4f8113

1 file changed

Lines changed: 65 additions & 2 deletions

File tree

Lines changed: 65 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,70 @@
1+
# frozen_string_literal: true
2+
13
require "rails_helper"
24

35
RSpec.describe CreateAllCasaAdminService, type: :service do
4-
# TODO: Add tests for CreateAllCasaAdminService
6+
let(:user) { build(:user) }
7+
let(:params) do
8+
ActionController::Parameters.new(
9+
{
10+
all_casa_admin: {
11+
email: "casa_admin23@example.com"
12+
}
13+
}
14+
).permit!
15+
end
16+
17+
describe "#build" do
18+
it "initializes an AllCasaAdmin with the given params and a password" do
19+
allow(SecureRandom).to receive(:hex).with(10).and_return("12345678910")
20+
21+
admin = CreateAllCasaAdminService.new(params, user)
22+
23+
all_casa_admin = admin.build
24+
25+
expect(all_casa_admin).to be_instance_of(AllCasaAdmin)
26+
expect(all_casa_admin).not_to be_persisted
27+
expect(all_casa_admin).to have_attributes(
28+
email: params[:all_casa_admin][:email],
29+
password: "12345678910"
30+
)
31+
end
32+
end
33+
34+
describe "#create!" do
35+
it "creates an AllCasaAdmin with the given params and sends an invite" do
36+
admin = CreateAllCasaAdminService.new(params, user)
37+
admin.build
38+
39+
expect do
40+
admin.create!
41+
end.to change(AllCasaAdmin, :count).by(1)
42+
43+
casa_admin = AllCasaAdmin.last
44+
expect(casa_admin.invited_by_id).to eq(user.id)
45+
expect(casa_admin.invited_by_type).to eq("User")
46+
expect(casa_admin).to have_attributes(
47+
email: params[:all_casa_admin][:email]
48+
)
49+
end
50+
51+
context "when there are errors" do
52+
it "does not create an AllCasaAdmin and returns the errors" do
53+
params = ActionController::Parameters.new(
54+
{
55+
all_casa_admin: {
56+
email: "invalid_email_format"
57+
}
58+
}
59+
).permit!
60+
61+
admin = CreateAllCasaAdminService.new(params, user)
62+
admin.build
563

6-
pending "add some tests for CreateAllCasaAdminService"
64+
expect do
65+
admin.create!
66+
end.to raise_error(ActiveRecord::RecordInvalid, /email is invalid/i)
67+
end
68+
end
69+
end
770
end

0 commit comments

Comments
 (0)