discourse/spec/support/helpers.rb

89 lines
2.2 KiB
Ruby
Raw Normal View History

2013-09-05 19:22:15 +08:00
module Helpers
2016-12-13 09:59:38 +08:00
extend ActiveSupport::Concern
2013-09-05 19:22:15 +08:00
def self.next_seq
@next_seq = (@next_seq || 0) + 1
end
2017-07-28 09:20:09 +08:00
def log_in(fabricator = nil)
2013-09-05 19:22:15 +08:00
user = Fabricate(fabricator || :user)
log_in_user(user)
user
end
def log_in_user(user)
provider = Discourse.current_user_provider.new(request.env)
2017-07-28 09:20:09 +08:00
provider.log_on_user(user, session, cookies)
2013-09-05 19:22:15 +08:00
end
def fixture_file(filename)
return '' if filename.blank?
file_path = File.expand_path(Rails.root + 'spec/fixtures/' + filename)
File.read(file_path)
end
def build(*args)
Fabricate.build(*args)
end
2017-07-28 09:20:09 +08:00
def create_topic(args = {})
2013-09-05 19:22:15 +08:00
args[:title] ||= "This is my title #{Helpers.next_seq}"
user = args.delete(:user) || Fabricate(:user)
guardian = Guardian.new(user)
args[:category] = args[:category].id if args[:category].is_a?(Category)
2013-09-05 19:22:15 +08:00
TopicCreator.create(user, guardian, args)
end
2017-07-28 09:20:09 +08:00
def create_post(args = {})
2013-09-05 19:22:15 +08:00
args[:title] ||= "This is my title #{Helpers.next_seq}"
args[:raw] ||= "This is the raw body of my post, it is cool #{Helpers.next_seq}"
args[:topic_id] = args[:topic].id if args[:topic]
user = args.delete(:user) || Fabricate(:user)
args[:category] = args[:category].id if args[:category].is_a?(Category)
creator = PostCreator.new(user, args)
post = creator.create
if creator.errors.present?
raise StandardError.new(creator.errors.full_messages.join(" "))
end
post
2013-09-05 19:22:15 +08:00
end
2017-07-28 09:20:09 +08:00
def generate_username(length = 10)
2013-09-05 19:22:15 +08:00
range = [*'a'..'z']
2017-07-28 09:20:09 +08:00
Array.new(length) { range.sample }.join
2013-09-05 19:22:15 +08:00
end
def stub_guardian(user)
guardian = Guardian.new(user)
yield(guardian) if block_given?
Guardian.stubs(new: guardian).with(user)
end
2014-11-12 07:27:34 +08:00
2017-08-23 22:41:47 +08:00
def wait_for(on_fail: nil, &blk)
2014-11-12 07:27:34 +08:00
i = 0
result = false
while !result && i < 1000
2014-11-12 07:27:34 +08:00
result = blk.call
i += 1
sleep 0.001
end
2017-08-23 22:41:47 +08:00
on_fail&.call
expect(result).to eq(true)
2014-11-12 07:27:34 +08:00
end
2015-12-16 08:31:19 +08:00
def fill_email(mail, from, to, body = nil, subject = nil, cc = nil)
result = mail.gsub("FROM", from).gsub("TO", to)
result.gsub!(/Hey.*/m, body) if body
result.sub!(/We .*/, subject) if subject
result.sub!("CC", cc.presence || "")
result
end
def email(email_name)
fixture_file("emails/#{email_name}.eml")
end
2013-09-05 19:22:15 +08:00
end