PERF: Make tests faster by prefabricating more things (#15392)

This commit is contained in:
Daniel Waterworth 2021-12-22 11:09:43 -06:00 committed by GitHub
parent 28400f1cbe
commit 5ff0b86b57
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 21 additions and 132 deletions

View File

@ -1884,7 +1884,6 @@ describe Guardian do
it 'returns true for a group member with reviewable status' do it 'returns true for a group member with reviewable status' do
SiteSetting.enable_category_group_moderation = true SiteSetting.enable_category_group_moderation = true
group = Fabricate(:group)
GroupUser.create!(group_id: group.id, user_id: user.id) GroupUser.create!(group_id: group.id, user_id: user.id)
topic.category.update!(reviewable_by_group_id: group.id) topic.category.update!(reviewable_by_group_id: group.id)
expect(Guardian.new(user).can_review_topic?(topic)).to eq(true) expect(Guardian.new(user).can_review_topic?(topic)).to eq(true)
@ -1906,7 +1905,6 @@ describe Guardian do
it 'returns true for a group member with reviewable status' do it 'returns true for a group member with reviewable status' do
SiteSetting.enable_category_group_moderation = true SiteSetting.enable_category_group_moderation = true
group = Fabricate(:group)
GroupUser.create!(group_id: group.id, user_id: user.id) GroupUser.create!(group_id: group.id, user_id: user.id)
topic.category.update!(reviewable_by_group_id: group.id) topic.category.update!(reviewable_by_group_id: group.id)
expect(Guardian.new(user).can_close_topic?(topic)).to eq(true) expect(Guardian.new(user).can_close_topic?(topic)).to eq(true)
@ -1928,7 +1926,6 @@ describe Guardian do
it 'returns true for a group member with reviewable status' do it 'returns true for a group member with reviewable status' do
SiteSetting.enable_category_group_moderation = true SiteSetting.enable_category_group_moderation = true
group = Fabricate(:group)
GroupUser.create!(group_id: group.id, user_id: user.id) GroupUser.create!(group_id: group.id, user_id: user.id)
topic.category.update!(reviewable_by_group_id: group.id) topic.category.update!(reviewable_by_group_id: group.id)
expect(Guardian.new(user).can_archive_topic?(topic)).to eq(true) expect(Guardian.new(user).can_archive_topic?(topic)).to eq(true)
@ -1950,7 +1947,6 @@ describe Guardian do
it 'returns true for a group member with reviewable status' do it 'returns true for a group member with reviewable status' do
SiteSetting.enable_category_group_moderation = true SiteSetting.enable_category_group_moderation = true
group = Fabricate(:group)
GroupUser.create!(group_id: group.id, user_id: user.id) GroupUser.create!(group_id: group.id, user_id: user.id)
topic.category.update!(reviewable_by_group_id: group.id) topic.category.update!(reviewable_by_group_id: group.id)
expect(Guardian.new(user).can_edit_staff_notes?(topic)).to eq(true) expect(Guardian.new(user).can_edit_staff_notes?(topic)).to eq(true)
@ -2156,7 +2152,6 @@ describe Guardian do
it "returns true for category moderators" do it "returns true for category moderators" do
SiteSetting.enable_category_group_moderation = true SiteSetting.enable_category_group_moderation = true
group = Fabricate(:group)
GroupUser.create(group: group, user: user) GroupUser.create(group: group, user: user)
category = Fabricate(:category, reviewable_by_group_id: group.id) category = Fabricate(:category, reviewable_by_group_id: group.id)
post.topic.update!(category: category) post.topic.update!(category: category)

View File

@ -7,6 +7,7 @@ require 'topic_subtype'
describe PostCreator do describe PostCreator do
fab!(:user) { Fabricate(:user) } fab!(:user) { Fabricate(:user) }
fab!(:admin) { Fabricate(:admin) }
fab!(:coding_horror) { Fabricate(:coding_horror) } fab!(:coding_horror) { Fabricate(:coding_horror) }
fab!(:evil_trout) { Fabricate(:evil_trout) } fab!(:evil_trout) { Fabricate(:evil_trout) }
let(:topic) { Fabricate(:topic, user: user) } let(:topic) { Fabricate(:topic, user: user) }
@ -119,7 +120,6 @@ describe PostCreator do
end end
it "does not notify on system messages" do it "does not notify on system messages" do
admin = Fabricate(:admin)
messages = MessageBus.track_publish do messages = MessageBus.track_publish do
p = PostCreator.create(admin, basic_topic_params.merge(post_type: Post.types[:moderator_action])) p = PostCreator.create(admin, basic_topic_params.merge(post_type: Post.types[:moderator_action]))
PostCreator.create(admin, basic_topic_params.merge(topic_id: p.topic_id, post_type: Post.types[:moderator_action])) PostCreator.create(admin, basic_topic_params.merge(topic_id: p.topic_id, post_type: Post.types[:moderator_action]))
@ -866,7 +866,6 @@ describe PostCreator do
end end
it 'creates the topic if the user is a staff member' do it 'creates the topic if the user is a staff member' do
admin = Fabricate(:admin)
post_creator = PostCreator.new(admin, raw: 'test reply', topic_id: topic.id, reply_to_post_number: 4) post_creator = PostCreator.new(admin, raw: 'test reply', topic_id: topic.id, reply_to_post_number: 4)
TopicUser.create!(user: admin, topic: topic, last_posted_at: 10.minutes.ago) TopicUser.create!(user: admin, topic: topic, last_posted_at: 10.minutes.ago)
@ -961,7 +960,6 @@ describe PostCreator do
UserArchivedMessage.create(user_id: target_user2.id, topic_id: post.topic_id) UserArchivedMessage.create(user_id: target_user2.id, topic_id: post.topic_id)
# if an admin replies they should be added to the allowed user list # if an admin replies they should be added to the allowed user list
admin = Fabricate(:admin)
PostCreator.create!(admin, PostCreator.create!(admin,
raw: 'hi there welcome topic, I am a mod', raw: 'hi there welcome topic, I am a mod',
topic_id: post.topic_id topic_id: post.topic_id
@ -1064,8 +1062,6 @@ describe PostCreator do
it 'closes private messages that have more than N posts' do it 'closes private messages that have more than N posts' do
SiteSetting.auto_close_messages_post_count = 2 SiteSetting.auto_close_messages_post_count = 2
admin = Fabricate(:admin)
post1 = create_post(archetype: Archetype.private_message, post1 = create_post(archetype: Archetype.private_message,
target_usernames: [admin.username]) target_usernames: [admin.username])
@ -1325,7 +1321,6 @@ describe PostCreator do
it "automatically watches topic based on preference" do it "automatically watches topic based on preference" do
user.user_option.notification_level_when_replying = 3 user.user_option.notification_level_when_replying = 3
admin = Fabricate(:admin)
topic = PostCreator.create(admin, topic = PostCreator.create(admin,
title: "this is the title of a topic created by an admin for watching notification", title: "this is the title of a topic created by an admin for watching notification",
raw: "this is the content of a topic created by an admin for keeping a watching notification state on a topic ;)" raw: "this is the content of a topic created by an admin for keeping a watching notification state on a topic ;)"
@ -1342,7 +1337,6 @@ describe PostCreator do
it "topic notification level remains tracking based on preference" do it "topic notification level remains tracking based on preference" do
user.user_option.notification_level_when_replying = 2 user.user_option.notification_level_when_replying = 2
admin = Fabricate(:admin)
topic = PostCreator.create(admin, topic = PostCreator.create(admin,
title: "this is the title of a topic created by an admin for tracking notification", title: "this is the title of a topic created by an admin for tracking notification",
raw: "this is the content of a topic created by an admin for keeping a tracking notification state on a topic ;)" raw: "this is the content of a topic created by an admin for keeping a tracking notification state on a topic ;)"
@ -1359,7 +1353,6 @@ describe PostCreator do
it "topic notification level is normal based on preference" do it "topic notification level is normal based on preference" do
user.user_option.notification_level_when_replying = 1 user.user_option.notification_level_when_replying = 1
admin = Fabricate(:admin)
topic = PostCreator.create(admin, topic = PostCreator.create(admin,
title: "this is the title of a topic created by an admin for tracking notification", title: "this is the title of a topic created by an admin for tracking notification",
raw: "this is the content of a topic created by an admin for keeping a tracking notification state on a topic ;)" raw: "this is the content of a topic created by an admin for keeping a tracking notification state on a topic ;)"
@ -1376,7 +1369,6 @@ describe PostCreator do
it "user preferences for notification level when replying doesn't affect PMs" do it "user preferences for notification level when replying doesn't affect PMs" do
user.user_option.update!(notification_level_when_replying: 1) user.user_option.update!(notification_level_when_replying: 1)
admin = Fabricate(:admin)
pm = Fabricate(:private_message_topic, user: admin) pm = Fabricate(:private_message_topic, user: admin)
pm.invite(admin, user.username) pm.invite(admin, user.username)

View File

@ -5,6 +5,7 @@ require 'rails_helper'
describe Search do describe Search do
fab!(:admin) { Fabricate(:admin) } fab!(:admin) { Fabricate(:admin) }
fab!(:topic) { Fabricate(:topic) }
before do before do
SearchIndexer.enable SearchIndexer.enable
@ -671,7 +672,6 @@ describe Search do
end end
it 'displays multiple results within a topic' do it 'displays multiple results within a topic' do
topic = Fabricate(:topic)
topic2 = Fabricate(:topic) topic2 = Fabricate(:topic)
new_post('this is the other post I am posting', topic2, created_at: 6.minutes.ago) new_post('this is the other post I am posting', topic2, created_at: 6.minutes.ago)
@ -1086,7 +1086,6 @@ describe Search do
it 'can use tag as a search context' do it 'can use tag as a search context' do
tag = Fabricate(:tag, name: 'important-stuff') tag = Fabricate(:tag, name: 'important-stuff')
topic = Fabricate(:topic)
topic_no_tag = Fabricate(:topic) topic_no_tag = Fabricate(:topic)
Fabricate(:topic_tag, tag: tag, topic: topic) Fabricate(:topic_tag, tag: tag, topic: topic)
@ -1151,7 +1150,6 @@ describe Search do
describe 'Advanced search' do describe 'Advanced search' do
it 'supports pinned' do it 'supports pinned' do
topic = Fabricate(:topic)
Fabricate(:post, raw: 'hi this is a test 123 123', topic: topic) Fabricate(:post, raw: 'hi this is a test 123 123', topic: topic)
_post = Fabricate(:post, raw: 'boom boom shake the room', topic: topic) _post = Fabricate(:post, raw: 'boom boom shake the room', topic: topic)
@ -1162,7 +1160,6 @@ describe Search do
end end
it 'supports wiki' do it 'supports wiki' do
topic = Fabricate(:topic)
topic_2 = Fabricate(:topic) topic_2 = Fabricate(:topic)
post = Fabricate(:post, raw: 'this is a test 248', wiki: true, topic: topic) post = Fabricate(:post, raw: 'this is a test 248', wiki: true, topic: topic)
Fabricate(:post, raw: 'this is a test 248', wiki: false, topic: topic_2) Fabricate(:post, raw: 'this is a test 248', wiki: false, topic: topic_2)
@ -1173,7 +1170,6 @@ describe Search do
end end
it 'supports searching for posts that the user has seen/unseen' do it 'supports searching for posts that the user has seen/unseen' do
topic = Fabricate(:topic)
topic_2 = Fabricate(:topic) topic_2 = Fabricate(:topic)
post = Fabricate(:post, raw: 'logan is longan', topic: topic) post = Fabricate(:post, raw: 'logan is longan', topic: topic)
post_2 = Fabricate(:post, raw: 'longan is logan', topic: topic_2) post_2 = Fabricate(:post, raw: 'longan is logan', topic: topic_2)
@ -1231,7 +1227,6 @@ describe Search do
end end
it 'supports in:first, user:, @username' do it 'supports in:first, user:, @username' do
topic = Fabricate(:topic)
post_1 = Fabricate(:post, raw: 'hi this is a test 123 123', topic: topic) post_1 = Fabricate(:post, raw: 'hi this is a test 123 123', topic: topic)
post_2 = Fabricate(:post, raw: 'boom boom shake the room test', topic: topic) post_2 = Fabricate(:post, raw: 'boom boom shake the room test', topic: topic)
@ -1569,7 +1564,6 @@ describe Search do
end end
it 'can find posts with non-latin tag' do it 'can find posts with non-latin tag' do
topic = Fabricate(:topic)
topic.tags = [Fabricate(:tag, name: 'さようなら')] topic.tags = [Fabricate(:tag, name: 'さようなら')]
post = Fabricate(:post, raw: 'Testing post', topic: topic) post = Fabricate(:post, raw: 'Testing post', topic: topic)
@ -1577,7 +1571,6 @@ describe Search do
end end
it 'can find posts with thai tag' do it 'can find posts with thai tag' do
topic = Fabricate(:topic)
topic.tags = [Fabricate(:tag, name: 'เรซิ่น')] topic.tags = [Fabricate(:tag, name: 'เรซิ่น')]
post = Fabricate(:post, raw: 'Testing post', topic: topic) post = Fabricate(:post, raw: 'Testing post', topic: topic)

View File

@ -3,6 +3,7 @@
require 'rails_helper' require 'rails_helper'
describe SvgSprite do describe SvgSprite do
fab!(:theme) { Fabricate(:theme) }
before do before do
SvgSprite.expire_cache SvgSprite.expire_cache
@ -50,7 +51,6 @@ describe SvgSprite do
end end
it 'version should be based on bundled output, not requested icons' do it 'version should be based on bundled output, not requested icons' do
theme = Fabricate(:theme)
fname = "custom-theme-icon-sprite.svg" fname = "custom-theme-icon-sprite.svg"
upload = UploadCreator.new(file_from_fixtures(fname), fname, for_theme: true).create_for(-1) upload = UploadCreator.new(file_from_fixtures(fname), fname, for_theme: true).create_for(-1)
@ -92,8 +92,6 @@ describe SvgSprite do
end end
it 'includes icons defined in theme settings' do it 'includes icons defined in theme settings' do
theme = Fabricate(:theme)
# Works for default settings: # Works for default settings:
theme.set_field(target: :settings, name: :yaml, value: "custom_icon: dragon") theme.set_field(target: :settings, name: :yaml, value: "custom_icon: dragon")
theme.save! theme.save!
@ -138,7 +136,6 @@ describe SvgSprite do
end end
it 'includes icons defined in theme modifiers' do it 'includes icons defined in theme modifiers' do
theme = Fabricate(:theme)
child_theme = Fabricate(:theme, component: true) child_theme = Fabricate(:theme, component: true)
theme.add_relative_theme!(:child, child_theme) theme.add_relative_theme!(:child, child_theme)
@ -173,7 +170,6 @@ describe SvgSprite do
end end
it 'includes svg sprites in themes stored in s3' do it 'includes svg sprites in themes stored in s3' do
theme = Fabricate(:theme)
theme.set_field(target: :common, name: SvgSprite.theme_sprite_variable_name, upload_id: upload_s3.id, type: :theme_upload_var) theme.set_field(target: :common, name: SvgSprite.theme_sprite_variable_name, upload_id: upload_s3.id, type: :theme_upload_var)
theme.save! theme.save!
@ -253,7 +249,6 @@ describe SvgSprite do
end end
it 'includes custom icons in a theme' do it 'includes custom icons in a theme' do
theme = Fabricate(:theme)
fname = "custom-theme-icon-sprite.svg" fname = "custom-theme-icon-sprite.svg"
upload = UploadCreator.new(file_from_fixtures(fname), fname, for_theme: true).create_for(-1) upload = UploadCreator.new(file_from_fixtures(fname), fname, for_theme: true).create_for(-1)
@ -266,7 +261,6 @@ describe SvgSprite do
end end
it 'does not fail on bad XML in custom icon sprite' do it 'does not fail on bad XML in custom icon sprite' do
theme = Fabricate(:theme)
fname = "bad-xml-icon-sprite.svg" fname = "bad-xml-icon-sprite.svg"
upload = UploadCreator.new(file_from_fixtures(fname), fname, for_theme: true).create_for(-1) upload = UploadCreator.new(file_from_fixtures(fname), fname, for_theme: true).create_for(-1)
@ -279,7 +273,6 @@ describe SvgSprite do
end end
it 'includes custom icons in a child theme' do it 'includes custom icons in a child theme' do
theme = Fabricate(:theme)
fname = "custom-theme-icon-sprite.svg" fname = "custom-theme-icon-sprite.svg"
child_theme = Fabricate(:theme, component: true) child_theme = Fabricate(:theme, component: true)
theme.add_relative_theme!(:child, child_theme) theme.add_relative_theme!(:child, child_theme)

View File

@ -3,6 +3,7 @@
require 'rails_helper' require 'rails_helper'
describe Notification do describe Notification do
fab!(:user) { Fabricate(:user) }
fab!(:coding_horror) { Fabricate(:coding_horror) } fab!(:coding_horror) { Fabricate(:coding_horror) }
before do before do
@ -269,8 +270,6 @@ describe Notification do
describe 'saw_regular_notification_id' do describe 'saw_regular_notification_id' do
it 'correctly updates the read state' do it 'correctly updates the read state' do
user = Fabricate(:user)
t = Fabricate(:topic) t = Fabricate(:topic)
Notification.create!(read: false, Notification.create!(read: false,
@ -308,8 +307,6 @@ describe Notification do
describe 'mark_posts_read' do describe 'mark_posts_read' do
it "marks multiple posts as read if needed" do it "marks multiple posts as read if needed" do
user = Fabricate(:user)
(1..3).map do |i| (1..3).map do |i|
Notification.create!(read: false, user_id: user.id, topic_id: 2, post_number: i, data: '{}', notification_type: 1) Notification.create!(read: false, user_id: user.id, topic_id: 2, post_number: i, data: '{}', notification_type: 1)
end end
@ -345,7 +342,6 @@ describe Notification do
end end
it 'does not delete chat_message notifications' do it 'does not delete chat_message notifications' do
user = Fabricate(:user)
Notification.create!(read: false, user_id: user.id, topic_id: nil, post_number: nil, data: '[]', Notification.create!(read: false, user_id: user.id, topic_id: nil, post_number: nil, data: '[]',
notification_type: Notification.types[:chat_mention]) notification_type: Notification.types[:chat_mention])
@ -357,7 +353,6 @@ describe Notification do
describe "do not disturb" do describe "do not disturb" do
it "calls NotificationEmailer.process_notification when user is not in 'do not disturb'" do it "calls NotificationEmailer.process_notification when user is not in 'do not disturb'" do
user = Fabricate(:user)
notification = Notification.new(read: false, user_id: user.id, topic_id: 2, post_number: 1, data: '{}', notification_type: 1) notification = Notification.new(read: false, user_id: user.id, topic_id: 2, post_number: 1, data: '{}', notification_type: 1)
NotificationEmailer.expects(:process_notification).with(notification) NotificationEmailer.expects(:process_notification).with(notification)
notification.save! notification.save!
@ -365,7 +360,6 @@ describe Notification do
it "doesn't call NotificationEmailer.process_notification when user is in 'do not disturb'" do it "doesn't call NotificationEmailer.process_notification when user is in 'do not disturb'" do
freeze_time freeze_time
user = Fabricate(:user)
Fabricate(:do_not_disturb_timing, user: user, starts_at: Time.zone.now, ends_at: 1.day.from_now) Fabricate(:do_not_disturb_timing, user: user, starts_at: Time.zone.now, ends_at: 1.day.from_now)
notification = Notification.new(read: false, user_id: user.id, topic_id: 2, post_number: 1, data: '{}', notification_type: 1) notification = Notification.new(read: false, user_id: user.id, topic_id: 2, post_number: 1, data: '{}', notification_type: 1)

View File

@ -3,6 +3,7 @@
require 'rails_helper' require 'rails_helper'
describe PostTiming do describe PostTiming do
fab!(:post) { Fabricate(:post) }
it { is_expected.to validate_presence_of :post_number } it { is_expected.to validate_presence_of :post_number }
it { is_expected.to validate_presence_of :msecs } it { is_expected.to validate_presence_of :msecs }
@ -61,7 +62,6 @@ describe PostTiming do
describe 'safeguard' do describe 'safeguard' do
it "doesn't store timings that are larger than the account lifetime" do it "doesn't store timings that are larger than the account lifetime" do
user = Fabricate(:user, created_at: 3.minutes.ago) user = Fabricate(:user, created_at: 3.minutes.ago)
post = Fabricate(:post)
PostTiming.process_timings(user, post.topic_id, 1, [[post.post_number, 123]]) PostTiming.process_timings(user, post.topic_id, 1, [[post.post_number, 123]])
msecs = PostTiming.where(post_number: post.post_number, user_id: user.id).pluck(:msecs)[0] msecs = PostTiming.where(post_number: post.post_number, user_id: user.id).pluck(:msecs)[0]
@ -81,7 +81,6 @@ describe PostTiming do
it 'processes timings correctly' do it 'processes timings correctly' do
PostActionNotifier.enable PostActionNotifier.enable
post = Fabricate(:post)
(2..5).each do |i| (2..5).each do |i|
Fabricate(:post, topic: post.topic, post_number: i) Fabricate(:post, topic: post.topic, post_number: i)
end end
@ -131,17 +130,16 @@ describe PostTiming do
describe 'recording' do describe 'recording' do
before do before do
@post = Fabricate(:post) @topic = post.topic
@topic = @post.topic
@coding_horror = Fabricate(:coding_horror) @coding_horror = Fabricate(:coding_horror)
@timing_attrs = { msecs: 1234, topic_id: @post.topic_id, user_id: @coding_horror.id, post_number: @post.post_number } @timing_attrs = { msecs: 1234, topic_id: post.topic_id, user_id: @coding_horror.id, post_number: post.post_number }
end end
it 'adds a view to the post' do it 'adds a view to the post' do
expect { expect {
PostTiming.record_timing(@timing_attrs) PostTiming.record_timing(@timing_attrs)
@post.reload post.reload
}.to change(@post, :reads).by(1) }.to change(post, :reads).by(1)
end end
it "doesn't update the posts read count if the topic is a PM" do it "doesn't update the posts read count if the topic is a PM" do
@ -157,7 +155,7 @@ describe PostTiming do
it 'correctly works' do it 'correctly works' do
PostTiming.record_timing(@timing_attrs) PostTiming.record_timing(@timing_attrs)
PostTiming.record_timing(@timing_attrs) PostTiming.record_timing(@timing_attrs)
timing = PostTiming.find_by(topic_id: @post.topic_id, user_id: @coding_horror.id, post_number: @post.post_number) timing = PostTiming.find_by(topic_id: post.topic_id, user_id: @coding_horror.id, post_number: post.post_number)
expect(timing).to be_present expect(timing).to be_present
expect(timing.msecs).to eq(2468) expect(timing.msecs).to eq(2468)
@ -192,7 +190,6 @@ describe PostTiming do
describe '.destroy_last_for' do describe '.destroy_last_for' do
it 'updates first unread for a user correctly when topic is public' do it 'updates first unread for a user correctly when topic is public' do
post = Fabricate(:post)
post.topic.update!(updated_at: 10.minutes.ago) post.topic.update!(updated_at: 10.minutes.ago)
PostTiming.process_timings(post.user, post.topic_id, 1, [[post.post_number, 100]]) PostTiming.process_timings(post.user, post.topic_id, 1, [[post.post_number, 100]])

View File

@ -4,13 +4,10 @@
require 'rails_helper' require 'rails_helper'
describe ThemeField do describe ThemeField do
after do fab!(:theme) { Fabricate(:theme) }
ThemeField.destroy_all
end
describe "scope: find_by_theme_ids" do describe "scope: find_by_theme_ids" do
it "returns result in the specified order" do it "returns result in the specified order" do
theme = Fabricate(:theme)
theme2 = Fabricate(:theme) theme2 = Fabricate(:theme)
theme3 = Fabricate(:theme) theme3 = Fabricate(:theme)
@ -159,7 +156,6 @@ HTML
end end
it "allows importing scss files" do it "allows importing scss files" do
theme = Fabricate(:theme)
main_field = theme.set_field(target: :common, name: :scss, value: ".class1{color: red}\n@import 'rootfile1';\n@import 'rootfile3';") main_field = theme.set_field(target: :common, name: :scss, value: ".class1{color: red}\n@import 'rootfile1';\n@import 'rootfile3';")
theme.set_field(target: :extra_scss, name: "rootfile1", value: ".class2{color:green}\n@import 'foldername/subfile1';") theme.set_field(target: :extra_scss, name: "rootfile1", value: ".class2{color:green}\n@import 'foldername/subfile1';")
theme.set_field(target: :extra_scss, name: "rootfile2", value: ".class3{color:green} ") theme.set_field(target: :extra_scss, name: "rootfile2", value: ".class3{color:green} ")
@ -179,7 +175,6 @@ HTML
end end
it "correctly handles extra JS fields" do it "correctly handles extra JS fields" do
theme = Fabricate(:theme)
js_field = theme.set_field(target: :extra_js, name: "discourse/controllers/discovery.js.es6", value: "import 'discourse/lib/ajax'; console.log('hello from .js.es6');") js_field = theme.set_field(target: :extra_js, name: "discourse/controllers/discovery.js.es6", value: "import 'discourse/lib/ajax'; console.log('hello from .js.es6');")
js_2_field = theme.set_field(target: :extra_js, name: "discourse/controllers/discovery-2.js", value: "import 'discourse/lib/ajax'; console.log('hello from .js');") js_2_field = theme.set_field(target: :extra_js, name: "discourse/controllers/discovery-2.js", value: "import 'discourse/lib/ajax'; console.log('hello from .js');")
hbs_field = theme.set_field(target: :extra_js, name: "discourse/templates/discovery.hbs", value: "{{hello-world}}") hbs_field = theme.set_field(target: :extra_js, name: "discourse/templates/discovery.hbs", value: "{{hello-world}}")
@ -235,7 +230,6 @@ HTML
let(:key) { "themes.settings_errors" } let(:key) { "themes.settings_errors" }
it "forces re-transpilation of theme JS when settings YAML changes" do it "forces re-transpilation of theme JS when settings YAML changes" do
theme = Fabricate(:theme)
settings_field = ThemeField.create!(theme: theme, target_id: Theme.targets[:settings], name: "yaml", value: "setting: 5") settings_field = ThemeField.create!(theme: theme, target_id: Theme.targets[:settings], name: "yaml", value: "setting: 5")
html = <<~HTML html = <<~HTML

View File

@ -4,9 +4,7 @@ require 'rails_helper'
describe TopicTrackingState do describe TopicTrackingState do
fab!(:user) do fab!(:user) { Fabricate(:user) }
Fabricate(:user)
end
let(:post) do let(:post) do
create_post create_post
@ -335,8 +333,6 @@ describe TopicTrackingState do
end end
it "correctly handles muted categories" do it "correctly handles muted categories" do
user = Fabricate(:user)
post post
report = TopicTrackingState.report(user) report = TopicTrackingState.report(user)
@ -359,7 +355,6 @@ describe TopicTrackingState do
end end
it "correctly handles category_users with null notification level" do it "correctly handles category_users with null notification level" do
user = Fabricate(:user)
post post
report = TopicTrackingState.report(user) report = TopicTrackingState.report(user)
@ -374,7 +369,6 @@ describe TopicTrackingState do
it "works when categories are default muted" do it "works when categories are default muted" do
SiteSetting.mute_all_categories_by_default = true SiteSetting.mute_all_categories_by_default = true
user = Fabricate(:user)
post post
report = TopicTrackingState.report(user) report = TopicTrackingState.report(user)
@ -394,7 +388,6 @@ describe TopicTrackingState do
context 'muted tags' do context 'muted tags' do
it "remove_muted_tags_from_latest is set to always" do it "remove_muted_tags_from_latest is set to always" do
SiteSetting.remove_muted_tags_from_latest = 'always' SiteSetting.remove_muted_tags_from_latest = 'always'
user = Fabricate(:user)
tag1 = Fabricate(:tag) tag1 = Fabricate(:tag)
tag2 = Fabricate(:tag) tag2 = Fabricate(:tag)
Fabricate(:topic_tag, tag: tag1, topic: topic) Fabricate(:topic_tag, tag: tag1, topic: topic)
@ -420,7 +413,6 @@ describe TopicTrackingState do
it "remove_muted_tags_from_latest is set to only_muted" do it "remove_muted_tags_from_latest is set to only_muted" do
SiteSetting.remove_muted_tags_from_latest = 'only_muted' SiteSetting.remove_muted_tags_from_latest = 'only_muted'
user = Fabricate(:user)
tag1 = Fabricate(:tag) tag1 = Fabricate(:tag)
tag2 = Fabricate(:tag) tag2 = Fabricate(:tag)
Fabricate(:topic_tag, tag: tag1, topic: topic) Fabricate(:topic_tag, tag: tag1, topic: topic)
@ -454,7 +446,6 @@ describe TopicTrackingState do
it "remove_muted_tags_from_latest is set to never" do it "remove_muted_tags_from_latest is set to never" do
SiteSetting.remove_muted_tags_from_latest = 'never' SiteSetting.remove_muted_tags_from_latest = 'never'
user = Fabricate(:user)
tag1 = Fabricate(:tag) tag1 = Fabricate(:tag)
Fabricate(:topic_tag, tag: tag1, topic: topic) Fabricate(:topic_tag, tag: tag1, topic: topic)
post post
@ -474,7 +465,7 @@ describe TopicTrackingState do
it "correctly handles dismissed topics" do it "correctly handles dismissed topics" do
freeze_time 1.minute.ago freeze_time 1.minute.ago
user = Fabricate(:user) user.update!(created_at: Time.now)
post post
report = TopicTrackingState.report(user) report = TopicTrackingState.report(user)
@ -492,8 +483,6 @@ describe TopicTrackingState do
end end
it "correctly handles capping" do it "correctly handles capping" do
user = Fabricate(:user)
post1 = create_post post1 = create_post
Fabricate(:post, topic: post1.topic) Fabricate(:post, topic: post1.topic)

View File

@ -4,6 +4,7 @@ require 'rails_helper'
require 'discourse_ip_info' require 'discourse_ip_info'
describe UserAuthToken do describe UserAuthToken do
fab!(:user) { Fabricate(:user) }
it "can remove old expired tokens" do it "can remove old expired tokens" do
@ -12,7 +13,6 @@ describe UserAuthToken do
freeze_time Time.zone.now freeze_time Time.zone.now
SiteSetting.maximum_session_age = 1 SiteSetting.maximum_session_age = 1
user = Fabricate(:user)
token = UserAuthToken.generate!(user_id: user.id, token = UserAuthToken.generate!(user_id: user.id,
user_agent: "some user agent 2", user_agent: "some user agent 2",
client_ip: "1.1.2.3") client_ip: "1.1.2.3")
@ -35,8 +35,6 @@ describe UserAuthToken do
end end
it "can lookup hashed" do it "can lookup hashed" do
user = Fabricate(:user)
token = UserAuthToken.generate!(user_id: user.id, token = UserAuthToken.generate!(user_id: user.id,
user_agent: "some user agent 2", user_agent: "some user agent 2",
client_ip: "1.1.2.3") client_ip: "1.1.2.3")
@ -51,9 +49,6 @@ describe UserAuthToken do
end end
it "can validate token was seen at lookup time" do it "can validate token was seen at lookup time" do
user = Fabricate(:user)
user_token = UserAuthToken.generate!(user_id: user.id, user_token = UserAuthToken.generate!(user_id: user.id,
user_agent: "some user agent 2", user_agent: "some user agent 2",
client_ip: "1.1.2.3") client_ip: "1.1.2.3")
@ -68,9 +63,6 @@ describe UserAuthToken do
end end
it "can rotate with no params maintaining data" do it "can rotate with no params maintaining data" do
user = Fabricate(:user)
user_token = UserAuthToken.generate!(user_id: user.id, user_token = UserAuthToken.generate!(user_id: user.id,
user_agent: "some user agent 2", user_agent: "some user agent 2",
client_ip: "1.1.2.3") client_ip: "1.1.2.3")
@ -84,7 +76,6 @@ describe UserAuthToken do
it "expires correctly" do it "expires correctly" do
freeze_time Time.zone.now freeze_time Time.zone.now
user = Fabricate(:user)
user_token = UserAuthToken.generate!(user_id: user.id, user_token = UserAuthToken.generate!(user_id: user.id,
user_agent: "some user agent 2", user_agent: "some user agent 2",
client_ip: "1.1.2.3") client_ip: "1.1.2.3")
@ -110,7 +101,6 @@ describe UserAuthToken do
it "can properly rotate tokens" do it "can properly rotate tokens" do
freeze_time 3.days.ago freeze_time 3.days.ago
user = Fabricate(:user)
user_token = UserAuthToken.generate!(user_id: user.id, user_token = UserAuthToken.generate!(user_id: user.id,
user_agent: "some user agent 2", user_agent: "some user agent 2",
@ -164,9 +154,6 @@ describe UserAuthToken do
end end
it "keeps prev token valid for 1 minute after it is confirmed" do it "keeps prev token valid for 1 minute after it is confirmed" do
user = Fabricate(:user)
token = UserAuthToken.generate!(user_id: user.id, token = UserAuthToken.generate!(user_id: user.id,
user_agent: "some user agent", user_agent: "some user agent",
client_ip: "1.1.2.3") client_ip: "1.1.2.3")
@ -189,8 +176,6 @@ describe UserAuthToken do
it "can correctly log auth tokens" do it "can correctly log auth tokens" do
SiteSetting.verbose_auth_token_logging = true SiteSetting.verbose_auth_token_logging = true
user = Fabricate(:user)
token = UserAuthToken.generate!(user_id: user.id, token = UserAuthToken.generate!(user_id: user.id,
user_agent: "some user agent", user_agent: "some user agent",
client_ip: "1.1.2.3") client_ip: "1.1.2.3")
@ -256,8 +241,6 @@ describe UserAuthToken do
it "calls before_destroy" do it "calls before_destroy" do
SiteSetting.verbose_auth_token_logging = true SiteSetting.verbose_auth_token_logging = true
user = Fabricate(:user)
token = UserAuthToken.generate!(user_id: user.id, token = UserAuthToken.generate!(user_id: user.id,
user_agent: "some user agent", user_agent: "some user agent",
client_ip: "1.1.2.3") client_ip: "1.1.2.3")
@ -273,8 +256,6 @@ describe UserAuthToken do
end end
it "will not mark token unseen when prev and current are the same" do it "will not mark token unseen when prev and current are the same" do
user = Fabricate(:user)
token = UserAuthToken.generate!(user_id: user.id, token = UserAuthToken.generate!(user_id: user.id,
user_agent: "some user agent", user_agent: "some user agent",
client_ip: "1.1.2.3") client_ip: "1.1.2.3")
@ -286,8 +267,6 @@ describe UserAuthToken do
end end
context "suspicious login" do context "suspicious login" do
fab!(:user) { Fabricate(:user) }
fab!(:admin) { Fabricate(:admin) } fab!(:admin) { Fabricate(:admin) }
it "is not checked when generated for non-staff" do it "is not checked when generated for non-staff" do

View File

@ -4,6 +4,7 @@ require 'rails_helper'
describe GroupsController do describe GroupsController do
fab!(:user) { Fabricate(:user) } fab!(:user) { Fabricate(:user) }
fab!(:user2) { Fabricate(:user) }
fab!(:other_user) { Fabricate(:user) } fab!(:other_user) { Fabricate(:user) }
let(:group) { Fabricate(:group, users: [user]) } let(:group) { Fabricate(:group, users: [user]) }
let(:moderator_group_id) { Group::AUTO_GROUPS[:moderators] } let(:moderator_group_id) { Group::AUTO_GROUPS[:moderators] }
@ -877,7 +878,6 @@ describe GroupsController do
it "should update default notification preference for existing users" do it "should update default notification preference for existing users" do
group.update!(default_notification_level: NotificationLevels.all[:watching]) group.update!(default_notification_level: NotificationLevels.all[:watching])
user1 = Fabricate(:user) user1 = Fabricate(:user)
user2 = Fabricate(:user)
group.add(user1) group.add(user1)
group.add(user2) group.add(user2)
group_user1 = user1.group_users.first group_user1 = user1.group_users.first
@ -937,7 +937,6 @@ describe GroupsController do
it "should update category & tag notification preferences for existing users" do it "should update category & tag notification preferences for existing users" do
user1 = Fabricate(:user) user1 = Fabricate(:user)
user2 = Fabricate(:user)
CategoryUser.create!(user: user1, category: category, notification_level: 4) CategoryUser.create!(user: user1, category: category, notification_level: 4)
TagUser.create!(user: user1, tag: tag, notification_level: 4) TagUser.create!(user: user1, tag: tag, notification_level: 4)
TagUser.create!(user: user2, tag: tag, notification_level: 4) TagUser.create!(user: user2, tag: tag, notification_level: 4)
@ -1317,8 +1316,6 @@ describe GroupsController do
end end
it "can make incremental adds" do it "can make incremental adds" do
user2 = Fabricate(:user)
expect do expect do
put "/groups/#{group.id}/members.json", params: { usernames: user2.username } put "/groups/#{group.id}/members.json", params: { usernames: user2.username }
end.to change { group.users.count }.by(1) end.to change { group.users.count }.by(1)
@ -1340,8 +1337,6 @@ describe GroupsController do
end end
it "does not notify users when the param is not present" do it "does not notify users when the param is not present" do
user2 = Fabricate(:user)
expect { expect {
put "/groups/#{group.id}/members.json", params: { usernames: user2.username } put "/groups/#{group.id}/members.json", params: { usernames: user2.username }
}.to change { Topic.where(archetype: "private_message").count }.by(0) }.to change { Topic.where(archetype: "private_message").count }.by(0)
@ -1350,8 +1345,6 @@ describe GroupsController do
end end
it "notifies users when the param is present" do it "notifies users when the param is present" do
user2 = Fabricate(:user)
expect { expect {
put "/groups/#{group.id}/members.json", params: { usernames: user2.username, notify_users: true } put "/groups/#{group.id}/members.json", params: { usernames: user2.username, notify_users: true }
}.to change { Topic.where(archetype: "private_message").count }.by(1) }.to change { Topic.where(archetype: "private_message").count }.by(1)

View File

@ -4,6 +4,7 @@ require 'rails_helper'
describe UserBadgesController do describe UserBadgesController do
fab!(:user) { Fabricate(:user) } fab!(:user) { Fabricate(:user) }
fab!(:admin) { Fabricate(:admin) }
fab!(:badge) { Fabricate(:badge) } fab!(:badge) { Fabricate(:badge) }
context 'index' do context 'index' do
@ -107,7 +108,6 @@ describe UserBadgesController do
end end
it 'grants badges from staff' do it 'grants badges from staff' do
admin = Fabricate(:admin)
post_1 = create_post post_1 = create_post
sign_in(admin) sign_in(admin)
@ -169,7 +169,6 @@ describe UserBadgesController do
end end
it 'does not grant badge when external link is used in reason' do it 'does not grant badge when external link is used in reason' do
admin = Fabricate(:admin)
post = create_post post = create_post
sign_in(admin) sign_in(admin)
@ -184,7 +183,6 @@ describe UserBadgesController do
end end
it 'does not grant badge if invalid discourse post/topic link is used in reason' do it 'does not grant badge if invalid discourse post/topic link is used in reason' do
admin = Fabricate(:admin)
post = create_post post = create_post
sign_in(admin) sign_in(admin)
@ -199,7 +197,6 @@ describe UserBadgesController do
end end
it 'grants badge when valid post/topic link is given in reason' do it 'grants badge when valid post/topic link is given in reason' do
admin = Fabricate(:admin)
post = create_post post = create_post
sign_in(admin) sign_in(admin)
@ -217,7 +214,6 @@ describe UserBadgesController do
it 'grants badge when valid post/topic link is given in reason' do it 'grants badge when valid post/topic link is given in reason' do
set_subfolder "/discuss" set_subfolder "/discuss"
admin = Fabricate(:admin)
post = create_post post = create_post
sign_in(admin) sign_in(admin)
@ -248,7 +244,6 @@ describe UserBadgesController do
end end
it 'revokes the badge' do it 'revokes the badge' do
admin = Fabricate(:admin)
sign_in(admin) sign_in(admin)
delete "/user_badges/#{user_badge.id}.json" delete "/user_badges/#{user_badge.id}.json"

View File

@ -4,6 +4,7 @@ require 'rails_helper'
require 'rotp' require 'rotp'
describe UsersController do describe UsersController do
fab!(:user) { Fabricate(:user) }
fab!(:user1) { Fabricate(:user) } fab!(:user1) { Fabricate(:user) }
fab!(:another_user) { Fabricate(:user) } fab!(:another_user) { Fabricate(:user) }
fab!(:invitee) { Fabricate(:user) } fab!(:invitee) { Fabricate(:user) }
@ -1930,7 +1931,6 @@ describe UsersController do
it "allows staff to edit the field" do it "allows staff to edit the field" do
sign_in(admin) sign_in(admin)
user = Fabricate(:user)
put "/u/#{user.username}.json", params: { put "/u/#{user.username}.json", params: {
name: 'Jim Tom', name: 'Jim Tom',
title: "foobar", title: "foobar",
@ -2346,7 +2346,6 @@ describe UsersController do
describe 'when user does not have a valid session' do describe 'when user does not have a valid session' do
it 'should not be valid' do it 'should not be valid' do
user = Fabricate(:user)
post "/u/action/send_activation_email.json", params: { post "/u/action/send_activation_email.json", params: {
username: user.username username: user.username
} }
@ -2867,7 +2866,6 @@ describe UsersController do
end end
it "returns emails and associated_accounts for self" do it "returns emails and associated_accounts for self" do
user = Fabricate(:user)
Fabricate(:email_change_request, user: user1) Fabricate(:email_change_request, user: user1)
sign_in(user) sign_in(user)
@ -2882,7 +2880,6 @@ describe UsersController do
end end
it "returns emails and associated_accounts when you're allowed to see them" do it "returns emails and associated_accounts when you're allowed to see them" do
user = Fabricate(:user)
Fabricate(:email_change_request, user: user1) Fabricate(:email_change_request, user: user1)
sign_in_admin sign_in_admin
@ -3189,7 +3186,6 @@ describe UsersController do
describe '#summary' do describe '#summary' do
it "generates summary info" do it "generates summary info" do
user = Fabricate(:user)
create_post(user: user) create_post(user: user)
get "/u/#{user.username_lower}/summary.json" get "/u/#{user.username_lower}/summary.json"
@ -3467,8 +3463,6 @@ describe UsersController do
end end
it "raises an error when the new email is taken" do it "raises an error when the new email is taken" do
user = Fabricate(:user)
put "/u/update-activation-email.json", params: { put "/u/update-activation-email.json", params: {
username: inactive_user.username, username: inactive_user.username,
password: 'qwerqwer123', password: 'qwerqwer123',

View File

@ -3,15 +3,15 @@
require 'rails_helper' require 'rails_helper'
describe UserUpdater do describe UserUpdater do
fab!(:user) { Fabricate(:user) }
fab!(:u1) { Fabricate(:user) }
fab!(:u2) { Fabricate(:user) }
fab!(:u3) { Fabricate(:user) }
let(:acting_user) { Fabricate.build(:user) } let(:acting_user) { Fabricate.build(:user) }
describe '#update_muted_users' do describe '#update_muted_users' do
it 'has no cross talk' do it 'has no cross talk' do
u1 = Fabricate(:user)
u2 = Fabricate(:user)
u3 = Fabricate(:user)
updater = UserUpdater.new(u1, u1) updater = UserUpdater.new(u1, u1)
updater.update_muted_users("#{u2.username},#{u3.username}") updater.update_muted_users("#{u2.username},#{u3.username}")
@ -27,8 +27,6 @@ describe UserUpdater do
end end
it 'excludes acting user' do it 'excludes acting user' do
u1 = Fabricate(:user)
u2 = Fabricate(:user)
updater = UserUpdater.new(u1, u1) updater = UserUpdater.new(u1, u1)
updater.update_muted_users("#{u1.username},#{u2.username}") updater.update_muted_users("#{u1.username},#{u2.username}")
@ -51,7 +49,6 @@ describe UserUpdater do
end end
it 'can update categories and tags' do it 'can update categories and tags' do
user = Fabricate(:user)
updater = UserUpdater.new(user, user) updater = UserUpdater.new(user, user)
updater.update(watched_tags: "#{tag.name},#{tag2.name}", muted_category_ids: [category.id]) updater.update(watched_tags: "#{tag.name},#{tag2.name}", muted_category_ids: [category.id])
@ -110,7 +107,6 @@ describe UserUpdater do
end end
it "doesn't remove notification prefs when updating something else" do it "doesn't remove notification prefs when updating something else" do
user = Fabricate(:user)
TagUser.create!(user: user, tag: tag, notification_level: TagUser.notification_levels[:watching]) TagUser.create!(user: user, tag: tag, notification_level: TagUser.notification_levels[:watching])
CategoryUser.create!(user: user, category: category, notification_level: CategoryUser.notification_levels[:muted]) CategoryUser.create!(user: user, category: category, notification_level: CategoryUser.notification_levels[:muted])
@ -122,7 +118,6 @@ describe UserUpdater do
end end
it 'updates various fields' do it 'updates various fields' do
user = Fabricate(:user)
updater = UserUpdater.new(acting_user, user) updater = UserUpdater.new(acting_user, user)
date_of_birth = Time.zone.now date_of_birth = Time.zone.now
SiteSetting.disable_mailing_list_mode = false SiteSetting.disable_mailing_list_mode = false
@ -194,7 +189,6 @@ describe UserUpdater do
end end
it "disables email_digests when enabling mailing_list_mode" do it "disables email_digests when enabling mailing_list_mode" do
user = Fabricate(:user)
updater = UserUpdater.new(acting_user, user) updater = UserUpdater.new(acting_user, user)
SiteSetting.disable_mailing_list_mode = false SiteSetting.disable_mailing_list_mode = false
@ -208,7 +202,6 @@ describe UserUpdater do
end end
it "filters theme_ids blank values before updating preferences" do it "filters theme_ids blank values before updating preferences" do
user = Fabricate(:user)
user.user_option.update!(theme_ids: [1]) user.user_option.update!(theme_ids: [1])
updater = UserUpdater.new(acting_user, user) updater = UserUpdater.new(acting_user, user)
@ -251,8 +244,6 @@ describe UserUpdater do
} }
context 'with user_notification_schedule' do context 'with user_notification_schedule' do
fab!(:user) { Fabricate(:user) }
it "allows users to create their notification schedule when it doesn't exist previously" do it "allows users to create their notification schedule when it doesn't exist previously" do
expect(user.user_notification_schedule).to be_nil expect(user.user_notification_schedule).to be_nil
updater = UserUpdater.new(acting_user, user) updater = UserUpdater.new(acting_user, user)
@ -307,7 +298,6 @@ describe UserUpdater do
SiteSetting.enable_discourse_connect = true SiteSetting.enable_discourse_connect = true
SiteSetting.discourse_connect_overrides_bio = true SiteSetting.discourse_connect_overrides_bio = true
user = Fabricate(:user)
updater = UserUpdater.new(acting_user, user) updater = UserUpdater.new(acting_user, user)
expect(updater.update(bio_raw: "new bio")).to be_truthy expect(updater.update(bio_raw: "new bio")).to be_truthy
@ -323,7 +313,6 @@ describe UserUpdater do
SiteSetting.enable_discourse_connect = true SiteSetting.enable_discourse_connect = true
SiteSetting.discourse_connect_overrides_location = true SiteSetting.discourse_connect_overrides_location = true
user = Fabricate(:user)
updater = UserUpdater.new(acting_user, user) updater = UserUpdater.new(acting_user, user)
expect(updater.update(location: "new location")).to be_truthy expect(updater.update(location: "new location")).to be_truthy
@ -339,7 +328,6 @@ describe UserUpdater do
SiteSetting.enable_discourse_connect = true SiteSetting.enable_discourse_connect = true
SiteSetting.discourse_connect_overrides_website = true SiteSetting.discourse_connect_overrides_website = true
user = Fabricate(:user)
updater = UserUpdater.new(acting_user, user) updater = UserUpdater.new(acting_user, user)
expect(updater.update(website: "https://google.com")).to be_truthy expect(updater.update(website: "https://google.com")).to be_truthy
@ -351,7 +339,6 @@ describe UserUpdater do
context 'when updating primary group' do context 'when updating primary group' do
let(:new_group) { Group.create(name: 'new_group') } let(:new_group) { Group.create(name: 'new_group') }
let(:user) { Fabricate(:user) }
it 'updates when setting is enabled' do it 'updates when setting is enabled' do
SiteSetting.user_selected_primary_groups = true SiteSetting.user_selected_primary_groups = true
@ -406,7 +393,6 @@ describe UserUpdater do
context 'when updating flair group' do context 'when updating flair group' do
let(:group) { Fabricate(:group, name: "Group", flair_bg_color: "#111111", flair_color: "#999999", flair_icon: "icon") } let(:group) { Fabricate(:group, name: "Group", flair_bg_color: "#111111", flair_color: "#999999", flair_icon: "icon") }
let(:user) { Fabricate(:user) }
it 'updates when setting is enabled' do it 'updates when setting is enabled' do
group.add(user) group.add(user)
@ -421,7 +407,6 @@ describe UserUpdater do
context 'when update fails' do context 'when update fails' do
it 'returns false' do it 'returns false' do
user = Fabricate(:user)
user.stubs(save: false) user.stubs(save: false)
updater = UserUpdater.new(acting_user, user) updater = UserUpdater.new(acting_user, user)
@ -505,7 +490,6 @@ describe UserUpdater do
context 'when website includes http' do context 'when website includes http' do
it 'does not add http before updating' do it 'does not add http before updating' do
user = Fabricate(:user)
updater = UserUpdater.new(acting_user, user) updater = UserUpdater.new(acting_user, user)
updater.update(website: 'http://example.com') updater.update(website: 'http://example.com')
@ -516,7 +500,6 @@ describe UserUpdater do
context 'when website does not include http' do context 'when website does not include http' do
it 'adds http before updating' do it 'adds http before updating' do
user = Fabricate(:user)
updater = UserUpdater.new(acting_user, user) updater = UserUpdater.new(acting_user, user)
updater.update(website: 'example.com') updater.update(website: 'example.com')
@ -527,7 +510,6 @@ describe UserUpdater do
context 'when website is invalid' do context 'when website is invalid' do
it 'returns an error' do it 'returns an error' do
user = Fabricate(:user)
updater = UserUpdater.new(acting_user, user) updater = UserUpdater.new(acting_user, user)
expect(updater.update(website: 'ʔ<')).to eq nil expect(updater.update(website: 'ʔ<')).to eq nil
@ -536,7 +518,6 @@ describe UserUpdater do
context 'when custom_fields is empty string' do context 'when custom_fields is empty string' do
it "update is successful" do it "update is successful" do
user = Fabricate(:user)
user.custom_fields = { 'import_username' => 'my_old_username' } user.custom_fields = { 'import_username' => 'my_old_username' }
user.save user.save
updater = UserUpdater.new(acting_user, user) updater = UserUpdater.new(acting_user, user)