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:
Daniel Waterworth
2019-05-07 03:12:20 +00:00
committed by Sam
parent 329969ea20
commit e219588142
258 changed files with 1402 additions and 1364 deletions

View File

@ -13,11 +13,11 @@ describe UserAction do
describe '#stream' do
let(:public_post) { Fabricate(:post) }
fab!(:public_post) { Fabricate(:post) }
let(:public_topic) { public_post.topic }
let(:user) { Fabricate(:user) }
fab!(:user) { Fabricate(:user) }
let(:private_post) { Fabricate(:post) }
fab!(:private_post) { Fabricate(:post) }
let(:private_topic) do
topic = private_post.topic
topic.update_columns(category_id: nil, archetype: Archetype::private_message)
@ -155,9 +155,9 @@ describe UserAction do
describe 'when user likes' do
let(:post) { Fabricate(:post) }
fab!(:post) { Fabricate(:post) }
let(:likee) { post.user }
let(:liker) { Fabricate(:coding_horror) }
fab!(:liker) { Fabricate(:coding_horror) }
def likee_stream
UserAction.stream(user_id: likee.id, guardian: Guardian.new)
@ -191,7 +191,7 @@ describe UserAction do
end
context 'private message' do
let(:post) { Fabricate(:private_message_post) }
fab!(:post) { Fabricate(:private_message_post) }
let(:likee) { post.topic.topic_allowed_users.first.user }
let(:liker) { post.topic.topic_allowed_users.last.user }
@ -295,11 +295,11 @@ describe UserAction do
describe 'secures private messages' do
let(:user) do
fab!(:user) do
Fabricate(:user)
end
let(:user2) do
fab!(:user2) do
Fabricate(:user)
end