debian-mirror-gitlab/spec/support/helpers/markdown_feature.rb

137 lines
3.2 KiB
Ruby
Raw Normal View History

2019-10-12 21:52:04 +05:30
# frozen_string_literal: true
2015-09-11 14:41:01 +05:30
# This is a helper class used by the GitLab Markdown feature spec
#
# Because the feature spec only cares about the output of the Markdown, and the
# test setup and teardown and parsing is fairly expensive, we only want to do it
# once. Unfortunately RSpec will not let you access `let`s in a `before(:all)`
# block, so we fake it by encapsulating all the shared setup in this class.
#
# The class renders `spec/fixtures/markdown.md.erb` using ERB, allowing for
# reference to the factory-created objects.
class MarkdownFeature
2018-03-17 18:26:18 +05:30
include FactoryBot::Syntax::Methods
2015-09-11 14:41:01 +05:30
2018-12-05 23:21:45 +05:30
attr_reader :fixture_path
def initialize(fixture_path = Rails.root.join('spec/fixtures/markdown.md.erb'))
@fixture_path = fixture_path
end
2015-09-11 14:41:01 +05:30
def user
@user ||= create(:user)
end
def group
2015-10-24 18:46:33 +05:30
@group ||= create(:group).tap do |group|
group.add_developer(user)
2015-09-11 14:41:01 +05:30
end
end
# Direct references ----------------------------------------------------------
def project
2017-09-10 17:25:29 +05:30
@project ||= create(:project, :repository, group: group).tap do |project|
2018-11-18 11:00:15 +05:30
project.add_maintainer(user)
2015-10-24 18:46:33 +05:30
end
2015-09-11 14:41:01 +05:30
end
2020-06-23 00:09:42 +05:30
def wiki
@wiki ||= ProjectWiki.new(project, user)
end
2020-06-23 00:09:42 +05:30
def wiki_page
@wiki_page ||= build(:wiki_page, wiki: wiki)
end
2015-09-11 14:41:01 +05:30
def issue
@issue ||= create(:issue, project: project)
end
def merge_request
@merge_request ||= create(:merge_request, :simple, source_project: project)
end
def snippet
@snippet ||= create(:project_snippet, project: project)
end
def commit
@commit ||= project.commit
end
def commit_range
2015-10-24 18:46:33 +05:30
@commit_range ||= begin
2015-09-11 14:41:01 +05:30
commit2 = project.commit('HEAD~3')
2015-10-24 18:46:33 +05:30
CommitRange.new("#{commit.id}...#{commit2.id}", project)
2015-09-11 14:41:01 +05:30
end
end
def simple_label
@simple_label ||= create(:label, name: 'gfm', project: project)
end
def label
@label ||= create(:label, name: 'awaiting feedback', project: project)
end
2016-06-02 11:05:42 +05:30
def simple_milestone
@simple_milestone ||= create(:milestone, name: 'gfm-milestone', project: project)
end
def milestone
2016-06-02 11:05:42 +05:30
@milestone ||= create(:milestone, name: 'next goal', project: project)
end
2017-09-10 17:25:29 +05:30
def group_milestone
@group_milestone ||= create(:milestone, name: 'group-milestone', group: group)
end
2015-09-11 14:41:01 +05:30
# Cross-references -----------------------------------------------------------
def xproject
2015-10-24 18:46:33 +05:30
@xproject ||= begin
2017-08-17 22:00:37 +05:30
group = create(:group, :nested)
create(:project, :repository, namespace: group) do |project|
2018-03-17 18:26:18 +05:30
project.add_developer(user)
2015-10-24 18:46:33 +05:30
end
2015-09-11 14:41:01 +05:30
end
end
def xissue
@xissue ||= create(:issue, project: xproject)
end
def xmerge_request
@xmerge_request ||= create(:merge_request, :simple, source_project: xproject)
end
def xsnippet
@xsnippet ||= create(:project_snippet, project: xproject)
end
def xcommit
@xcommit ||= xproject.commit
end
def xcommit_range
2015-10-24 18:46:33 +05:30
@xcommit_range ||= begin
2015-09-11 14:41:01 +05:30
xcommit2 = xproject.commit('HEAD~2')
2015-10-24 18:46:33 +05:30
CommitRange.new("#{xcommit.id}...#{xcommit2.id}", xproject)
2015-09-11 14:41:01 +05:30
end
end
def xmilestone
@xmilestone ||= create(:milestone, project: xproject)
end
2015-12-23 02:04:40 +05:30
def urls
2016-06-02 11:05:42 +05:30
Gitlab::Routing.url_helpers
2015-12-23 02:04:40 +05:30
end
2015-09-11 14:41:01 +05:30
def raw_markdown
2018-12-05 23:21:45 +05:30
markdown = File.read(fixture_path)
2015-09-25 12:07:36 +05:30
ERB.new(markdown).result(binding)
2015-09-11 14:41:01 +05:30
end
end