diff options
Diffstat (limited to 'spec/factories/work_items/work_item_types.rb')
-rw-r--r-- | spec/factories/work_items/work_item_types.rb | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/spec/factories/work_items/work_item_types.rb b/spec/factories/work_items/work_item_types.rb new file mode 100644 index 00000000000..0920b36bcbd --- /dev/null +++ b/spec/factories/work_items/work_item_types.rb @@ -0,0 +1,41 @@ +# 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).tap { |type| type.assign_attributes(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 + end +end |