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

@ -8,8 +8,8 @@ describe Admin::ReportsController do
end
context 'while logged in as an admin' do
let(:admin) { Fabricate(:admin) }
let(:user) { Fabricate(:user) }
fab!(:admin) { Fabricate(:admin) }
fab!(:user) { Fabricate(:user) }
before do
sign_in(admin)
@ -80,9 +80,9 @@ describe Admin::ReportsController do
end
describe 'when report is scoped to a category' do
let(:category) { Fabricate(:category) }
let!(:topic) { Fabricate(:topic, category: category) }
let!(:other_topic) { Fabricate(:topic) }
fab!(:category) { Fabricate(:category) }
fab!(:topic) { Fabricate(:topic, category: category) }
fab!(:other_topic) { Fabricate(:topic) }
it 'should render the report as JSON' do
get "/admin/reports/topics.json", params: { category_id: category.id }
@ -97,9 +97,9 @@ describe Admin::ReportsController do
end
describe 'when report is scoped to a group' do
let(:user) { Fabricate(:user) }
let!(:other_user) { Fabricate(:user) }
let(:group) { Fabricate(:group) }
fab!(:user) { Fabricate(:user) }
fab!(:other_user) { Fabricate(:user) }
fab!(:group) { Fabricate(:group) }
it 'should render the report as JSON' do
group.add(user)