Don't create schemas in model tests unless needed
Creating a schema takes about 3-4 seconds on my machine, so omitting the callbacks makes tests much faster. To do so, we're using the `insert!` method added in Rails 6.0, which inserts a record without executing callbacks or validations. To make the tests look consistent, we're adding a FactoryBot strategy which uses `insert!` instead of `create!`. Note this strategy is useless in most cases because it doesn't work when models have translatable attributes or associations. However, IMHO it's worth it even if we only use it for tenants. We could also use `Tenant.insert!` instead, but then we would have to add all the mandatory attributes, and in this case the code is clearer if we only add the attributes we need for the test.
This commit is contained in:
@@ -193,11 +193,10 @@ describe Setting do
|
||||
end
|
||||
|
||||
it "returns the tenant name for other tenants" do
|
||||
create(:tenant, schema: "new", name: "New Institution")
|
||||
insert(:tenant, schema: "new", name: "New Institution")
|
||||
allow(Tenant).to receive(:current_schema).and_return("new")
|
||||
|
||||
Tenant.switch("new") do
|
||||
expect(Setting.default_org_name).to eq "New Institution"
|
||||
end
|
||||
expect(Setting.default_org_name).to eq "New Institution"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user