Welcome to mirror list, hosted at ThFree Co, Russian Federation.

design_management_test_helpers.rb « helpers « support « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: bf41e2f5079830aa4a4b66df9016598020209cea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# frozen_string_literal: true

module DesignManagementTestHelpers
  def enable_design_management(enabled = true, ref_filter = true)
    stub_lfs_setting(enabled: enabled)
    stub_feature_flags(design_management_reference_filter_gfm_pipeline: ref_filter)
  end

  def delete_designs(*designs)
    act_on_designs(designs) { ::DesignManagement::Action.deletion }
  end

  def restore_designs(*designs)
    act_on_designs(designs) { ::DesignManagement::Action.creation }
  end

  def modify_designs(*designs)
    act_on_designs(designs) { ::DesignManagement::Action.modification }
  end

  def path_for_design(design)
    path_options = { vueroute: design.filename }
    Gitlab::Routing.url_helpers.designs_project_issue_path(design.project, design.issue, path_options)
  end

  def url_for_design(design)
    path_options = { vueroute: design.filename }
    Gitlab::Routing.url_helpers.designs_project_issue_url(design.project, design.issue, path_options)
  end

  def url_for_designs(issue)
    Gitlab::Routing.url_helpers.designs_project_issue_url(issue.project, issue)
  end

  private

  def act_on_designs(designs, &block)
    issue = designs.first.issue
    version = build(:design_version, :empty, issue: issue).tap { |v| v.save(validate: false) }
    designs.each do |d|
      yield.create(design: d, version: version)
    end
    version
  end
end