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

work_item_types.rb « work_items « factories « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: d36cb6260c62388c6ef2043965d39ce3b0c88634 (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
46
# frozen_string_literal: true

FactoryBot.define do
  factory :work_item_type, class: 'WorkItems::Type' do
    namespace

    name      { generate(:work_item_type_name) }
    base_type { WorkItems::Type.base_types[:issue] }
    icon_name { 'issue-type-issue' }

    initialize_with do
      type_base_attributes = attributes.with_indifferent_access.slice(:base_type, :namespace, :namespace_id)

      # Expect base_types to exist on the DB
      if type_base_attributes.slice(:namespace, :namespace_id).compact.empty?
        WorkItems::Type.find_or_initialize_by(type_base_attributes)
      else
        WorkItems::Type.new(attributes)
      end
    end

    trait :default do
      namespace { nil }
    end

    trait :incident do
      base_type { WorkItems::Type.base_types[:incident] }
      icon_name { 'issue-type-incident' }
    end

    trait :test_case do
      base_type { WorkItems::Type.base_types[:test_case] }
      icon_name { 'issue-type-test-case' }
    end

    trait :requirement do
      base_type { WorkItems::Type.base_types[:requirement] }
      icon_name { 'issue-type-requirements' }
    end

    trait :task do
      base_type { WorkItems::Type.base_types[:task] }
      icon_name { 'issue-type-task' }
    end
  end
end