mirror of
https://github.com/discourse/discourse.git
synced 2025-06-03 19:39:30 +08:00
DEV: Prefabrication (test optimization) (#7414)
* Introduced fab!, a helper that creates database state for a group It's almost identical to let_it_be, except: 1. It creates a new object for each test by default, 2. You can disable it using PREFABRICATION=0
This commit is contained in:
@ -3,11 +3,11 @@
|
||||
require 'rails_helper'
|
||||
|
||||
describe GroupsController do
|
||||
let(:user) { Fabricate(:user) }
|
||||
fab!(:user) { Fabricate(:user) }
|
||||
let(:group) { Fabricate(:group, users: [user]) }
|
||||
let(:moderator_group_id) { Group::AUTO_GROUPS[:moderators] }
|
||||
let(:admin) { Fabricate(:admin) }
|
||||
let(:moderator) { Fabricate(:moderator) }
|
||||
fab!(:admin) { Fabricate(:admin) }
|
||||
fab!(:moderator) { Fabricate(:moderator) }
|
||||
|
||||
describe '#index' do
|
||||
let(:staff_group) do
|
||||
@ -161,7 +161,7 @@ describe GroupsController do
|
||||
end
|
||||
|
||||
context 'viewing as an admin' do
|
||||
let(:admin) { Fabricate(:admin) }
|
||||
fab!(:admin) { Fabricate(:admin) }
|
||||
|
||||
before do
|
||||
sign_in(admin)
|
||||
@ -673,7 +673,7 @@ describe GroupsController do
|
||||
)
|
||||
end
|
||||
|
||||
let(:user3) do
|
||||
fab!(:user3) do
|
||||
Fabricate(:user,
|
||||
last_seen_at: nil,
|
||||
last_posted_at: nil,
|
||||
@ -681,7 +681,7 @@ describe GroupsController do
|
||||
)
|
||||
end
|
||||
|
||||
let(:bot) { Fabricate(:user, id: -999) }
|
||||
fab!(:bot) { Fabricate(:user, id: -999) }
|
||||
|
||||
let(:group) { Fabricate(:group, users: [user1, user2, user3, bot]) }
|
||||
|
||||
@ -793,7 +793,7 @@ describe GroupsController do
|
||||
end
|
||||
|
||||
describe "#edit" do
|
||||
let(:group) { Fabricate(:group) }
|
||||
fab!(:group) { Fabricate(:group) }
|
||||
|
||||
context 'when user is not signed in' do
|
||||
it 'should be fobidden' do
|
||||
@ -835,7 +835,7 @@ describe GroupsController do
|
||||
end
|
||||
|
||||
context 'when user is an admin' do
|
||||
let(:user) { Fabricate(:admin) }
|
||||
fab!(:user) { Fabricate(:admin) }
|
||||
let(:group) { Fabricate(:group, users: [user], automatic: true) }
|
||||
|
||||
before do
|
||||
@ -853,7 +853,7 @@ describe GroupsController do
|
||||
end
|
||||
|
||||
describe "membership edits" do
|
||||
let(:admin) { Fabricate(:admin) }
|
||||
fab!(:admin) { Fabricate(:admin) }
|
||||
|
||||
before do
|
||||
sign_in(admin)
|
||||
@ -884,8 +884,8 @@ describe GroupsController do
|
||||
end
|
||||
|
||||
context "is able to add several members to a group" do
|
||||
let(:user1) { Fabricate(:user) }
|
||||
let(:user2) { Fabricate(:user, username: "UsEr2") }
|
||||
fab!(:user1) { Fabricate(:user) }
|
||||
fab!(:user2) { Fabricate(:user, username: "UsEr2") }
|
||||
|
||||
it "adds by username" do
|
||||
expect do
|
||||
@ -963,7 +963,7 @@ describe GroupsController do
|
||||
end
|
||||
|
||||
context 'public group' do
|
||||
let(:other_user) { Fabricate(:user) }
|
||||
fab!(:other_user) { Fabricate(:user) }
|
||||
|
||||
before do
|
||||
group.update!(
|
||||
@ -1068,7 +1068,7 @@ describe GroupsController do
|
||||
end
|
||||
|
||||
context 'public group' do
|
||||
let(:other_user) { Fabricate(:user) }
|
||||
fab!(:other_user) { Fabricate(:user) }
|
||||
let(:group) { Fabricate(:public_group, users: [other_user]) }
|
||||
|
||||
context "admin" do
|
||||
@ -1106,8 +1106,8 @@ describe GroupsController do
|
||||
|
||||
context '#remove_members' do
|
||||
context "is able to remove several members from a group" do
|
||||
let(:user1) { Fabricate(:user) }
|
||||
let(:user2) { Fabricate(:user, username: "UsEr2") }
|
||||
fab!(:user1) { Fabricate(:user) }
|
||||
fab!(:user2) { Fabricate(:user, username: "UsEr2") }
|
||||
let(:group1) { Fabricate(:group, users: [user1, user2]) }
|
||||
|
||||
it "removes by username" do
|
||||
@ -1218,7 +1218,7 @@ describe GroupsController do
|
||||
end
|
||||
|
||||
context 'when user is an admin' do
|
||||
let(:admin) { Fabricate(:admin) }
|
||||
fab!(:admin) { Fabricate(:admin) }
|
||||
|
||||
before do
|
||||
sign_in(admin)
|
||||
@ -1263,7 +1263,7 @@ describe GroupsController do
|
||||
end
|
||||
|
||||
describe '#request_membership' do
|
||||
let(:new_user) { Fabricate(:user) }
|
||||
fab!(:new_user) { Fabricate(:user) }
|
||||
|
||||
it 'requires the user to log in' do
|
||||
post "/groups/#{group.name}/request_membership.json"
|
||||
@ -1322,7 +1322,7 @@ describe GroupsController do
|
||||
end
|
||||
|
||||
describe '#search ' do
|
||||
let(:hidden_group) do
|
||||
fab!(:hidden_group) do
|
||||
Fabricate(:group,
|
||||
visibility_level: Group.visibility_levels[:owners],
|
||||
name: 'KingOfTheNorth'
|
||||
|
Reference in New Issue
Block a user