summaryrefslogtreecommitdiff
path: root/spec/factories/work_items/work_item_types.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/factories/work_items/work_item_types.rb')
-rw-r--r--spec/factories/work_items/work_item_types.rb41
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