mirror of
https://github.com/discourse/discourse.git
synced 2025-05-31 22:35:03 +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:
@ -4,7 +4,7 @@ require 'rails_helper'
|
||||
require_dependency 'validators/post_validator'
|
||||
|
||||
describe Validators::PostValidator do
|
||||
let(:topic) { Fabricate(:topic) }
|
||||
fab!(:topic) { Fabricate(:topic) }
|
||||
let(:post) { build(:post, topic: topic) }
|
||||
let(:validator) { Validators::PostValidator.new({}) }
|
||||
|
||||
@ -26,8 +26,8 @@ describe Validators::PostValidator do
|
||||
end
|
||||
|
||||
describe "when post's topic is a PM between a human and a non human user" do
|
||||
let(:robot) { Fabricate(:user, id: -3) }
|
||||
let(:user) { Fabricate(:user) }
|
||||
fab!(:robot) { Fabricate(:user, id: -3) }
|
||||
fab!(:user) { Fabricate(:user) }
|
||||
|
||||
let(:topic) do
|
||||
Fabricate(:private_message_topic, topic_allowed_users: [
|
||||
@ -189,8 +189,8 @@ describe Validators::PostValidator do
|
||||
end
|
||||
|
||||
describe "unique_post_validator" do
|
||||
let(:user) { Fabricate(:user, id: 999) }
|
||||
let(:post) { Fabricate(:post, user: user, topic: topic) }
|
||||
fab!(:user) { Fabricate(:user, id: 999) }
|
||||
fab!(:post) { Fabricate(:post, user: user, topic: topic) }
|
||||
|
||||
before do
|
||||
SiteSetting.unique_posts_mins = 5
|
||||
@ -240,9 +240,9 @@ describe Validators::PostValidator do
|
||||
|
||||
context "force_edit_last_validator" do
|
||||
|
||||
let(:user) { Fabricate(:user) }
|
||||
let(:other_user) { Fabricate(:user) }
|
||||
let(:topic) { Fabricate(:topic) }
|
||||
fab!(:user) { Fabricate(:user) }
|
||||
fab!(:other_user) { Fabricate(:user) }
|
||||
fab!(:topic) { Fabricate(:topic) }
|
||||
|
||||
before do
|
||||
SiteSetting.max_consecutive_replies = 2
|
||||
|
@ -7,7 +7,7 @@ describe Validators::UploadValidator do
|
||||
subject(:validator) { described_class.new }
|
||||
|
||||
describe 'validate' do
|
||||
let(:user) { Fabricate(:user) }
|
||||
fab!(:user) { Fabricate(:user) }
|
||||
let(:filename) { "discourse.csv" }
|
||||
let(:csv_file) { file_from_fixtures(filename, "csv") }
|
||||
|
||||
@ -57,7 +57,7 @@ describe Validators::UploadValidator do
|
||||
end
|
||||
|
||||
describe 'upload for site settings' do
|
||||
let(:user) { Fabricate(:admin) }
|
||||
fab!(:user) { Fabricate(:admin) }
|
||||
|
||||
let(:upload) do
|
||||
Fabricate.build(:upload,
|
||||
@ -85,7 +85,7 @@ describe Validators::UploadValidator do
|
||||
end
|
||||
|
||||
describe 'for normal user' do
|
||||
let(:user) { Fabricate(:user) }
|
||||
fab!(:user) { Fabricate(:user) }
|
||||
|
||||
it 'should not allow the upload' do
|
||||
expect(subject.validate(upload)).to eq(nil)
|
||||
|
@ -21,8 +21,8 @@ describe UsernameSettingValidator do
|
||||
end
|
||||
|
||||
context "regex support" do
|
||||
let!(:darthvader) { Fabricate(:user, username: 'darthvader') }
|
||||
let!(:luke) { Fabricate(:user, username: 'luke') }
|
||||
fab!(:darthvader) { Fabricate(:user, username: 'darthvader') }
|
||||
fab!(:luke) { Fabricate(:user, username: 'luke') }
|
||||
|
||||
it "returns false if regex doesn't match" do
|
||||
v = described_class.new(regex: 'darth')
|
||||
|
Reference in New Issue
Block a user