2021-10-27 15:23:28 +05:30
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
FactoryBot.define do
|
2022-03-02 08:16:31 +05:30
|
|
|
factory :work_item_type, class: 'WorkItems::Type' do
|
2021-10-27 15:23:28 +05:30
|
|
|
namespace
|
|
|
|
|
|
|
|
name { generate(:work_item_type_name) }
|
2022-03-02 08:16:31 +05:30
|
|
|
base_type { WorkItems::Type.base_types[:issue] }
|
2021-10-27 15:23:28 +05:30
|
|
|
icon_name { 'issue-type-issue' }
|
|
|
|
|
2021-11-11 11:23:49 +05:30
|
|
|
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?
|
2022-03-02 08:16:31 +05:30
|
|
|
WorkItems::Type.find_or_initialize_by(type_base_attributes).tap { |type| type.assign_attributes(attributes) }
|
2021-11-11 11:23:49 +05:30
|
|
|
else
|
2022-03-02 08:16:31 +05:30
|
|
|
WorkItems::Type.new(attributes)
|
2021-11-11 11:23:49 +05:30
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2021-10-27 15:23:28 +05:30
|
|
|
trait :default do
|
|
|
|
namespace { nil }
|
|
|
|
end
|
|
|
|
|
|
|
|
trait :incident do
|
2022-03-02 08:16:31 +05:30
|
|
|
base_type { WorkItems::Type.base_types[:incident] }
|
2021-10-27 15:23:28 +05:30
|
|
|
icon_name { 'issue-type-incident' }
|
|
|
|
end
|
|
|
|
|
|
|
|
trait :test_case do
|
2022-03-02 08:16:31 +05:30
|
|
|
base_type { WorkItems::Type.base_types[:test_case] }
|
2021-10-27 15:23:28 +05:30
|
|
|
icon_name { 'issue-type-test-case' }
|
|
|
|
end
|
|
|
|
|
|
|
|
trait :requirement do
|
2022-03-02 08:16:31 +05:30
|
|
|
base_type { WorkItems::Type.base_types[:requirement] }
|
2021-10-27 15:23:28 +05:30
|
|
|
icon_name { 'issue-type-requirements' }
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|