ecom_core 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +28 -0
  4. data/Rakefile +24 -0
  5. data/app/controllers/concerns/ecom/core/resource_typeable.rb +43 -0
  6. data/app/controllers/ecom/core/application_controller.rb +7 -0
  7. data/app/controllers/ecom/core/crew_types_controller.rb +7 -0
  8. data/app/models/ecom/core/application_module.rb +7 -0
  9. data/app/models/ecom/core/application_record.rb +7 -0
  10. data/app/models/ecom/core/crew.rb +14 -0
  11. data/app/models/ecom/core/crew_time.rb +9 -0
  12. data/app/models/ecom/core/crew_type.rb +6 -0
  13. data/app/models/ecom/core/currency.rb +7 -0
  14. data/app/models/ecom/core/equipment_type.rb +6 -0
  15. data/app/models/ecom/core/material_type.rb +6 -0
  16. data/app/models/ecom/core/menu.rb +10 -0
  17. data/app/models/ecom/core/product_type.rb +10 -0
  18. data/app/models/ecom/core/project.rb +15 -0
  19. data/app/models/ecom/core/resource_type.rb +9 -0
  20. data/app/models/ecom/core/stakeholder.rb +11 -0
  21. data/app/models/ecom/core/stakeholder_type.rb +7 -0
  22. data/app/models/ecom/core/task.rb +10 -0
  23. data/app/models/ecom/core/task_template.rb +34 -0
  24. data/app/models/ecom/core/task_template_type.rb +7 -0
  25. data/app/models/ecom/core/user.rb +18 -0
  26. data/app/models/ecom/core/user_role.rb +12 -0
  27. data/app/models/ecom/core/work_component.rb +14 -0
  28. data/app/models/ecom/core/work_component_template.rb +11 -0
  29. data/app/models/ecom/core/work_product.rb +70 -0
  30. data/app/models/ecom/core/work_product_template.rb +14 -0
  31. data/app/serializers/ecom/core/resource_type_serializer.rb +8 -0
  32. data/config/database.ci.yml +12 -0
  33. data/config/routes.rb +3 -0
  34. data/db/migrate/20191119010518_create_ecom_core_task_template_types.rb +13 -0
  35. data/db/migrate/20191119012030_create_ecom_core_task_templates.rb +15 -0
  36. data/db/migrate/20191119013236_create_ecom_core_work_product_templates.rb +15 -0
  37. data/db/migrate/20191119144141_create_ecom_core_stakeholder_types.rb +10 -0
  38. data/db/migrate/20191119144618_create_ecom_core_stakeholders.rb +19 -0
  39. data/db/migrate/20191119145711_create_ecom_core_resource_types.rb +15 -0
  40. data/db/migrate/20191201131341_create_ecom_core_product_types.rb +14 -0
  41. data/db/migrate/20191201134420_create_ecom_core_work_component_templates.rb +23 -0
  42. data/db/migrate/20191201145816_create_ecom_core_currencies.rb +10 -0
  43. data/db/migrate/20191201145848_create_ecom_core_projects.rb +34 -0
  44. data/db/migrate/20191202103735_create_ecom_core_tasks.rb +17 -0
  45. data/db/migrate/20191202105355_create_task_templates_resource_types.rb +16 -0
  46. data/db/migrate/20191202220752_create_ecom_core_application_modules.rb +10 -0
  47. data/db/migrate/20191202220832_create_ecom_core_users.rb +24 -0
  48. data/db/migrate/20191202220953_create_ecom_core_user_roles.rb +22 -0
  49. data/db/migrate/20191202221423_create_ecom_core_menus.rb +25 -0
  50. data/db/migrate/20191202235434_create_ecom_core_work_products.rb +35 -0
  51. data/db/migrate/20191206104247_create_ecom_core_work_components.rb +30 -0
  52. data/db/migrate/20191225100054_create_ecom_core_crews.rb +17 -0
  53. data/db/migrate/20191225211712_create_ecom_core_crew_times.rb +16 -0
  54. data/lib/ecom/core/engine.rb +25 -0
  55. data/lib/ecom/core/version.rb +5 -0
  56. data/lib/ecom/core.rb +4 -0
  57. data/lib/ecom_core.rb +5 -0
  58. data/lib/tasks/ecom_core_tasks.rake +4 -0
  59. data/spec/factories/ecom/core/application_modules.rb +6 -0
  60. data/spec/factories/ecom/core/crew_times.rb +10 -0
  61. data/spec/factories/ecom/core/crew_types.rb +5 -0
  62. data/spec/factories/ecom/core/crews.rb +12 -0
  63. data/spec/factories/ecom/core/currencies.rb +6 -0
  64. data/spec/factories/ecom/core/equipment_types.rb +5 -0
  65. data/spec/factories/ecom/core/material_types.rb +5 -0
  66. data/spec/factories/ecom/core/menus.rb +9 -0
  67. data/spec/factories/ecom/core/product_types.rb +7 -0
  68. data/spec/factories/ecom/core/projects.rb +23 -0
  69. data/spec/factories/ecom/core/resource_types.rb +8 -0
  70. data/spec/factories/ecom/core/stakeholder_types.rb +5 -0
  71. data/spec/factories/ecom/core/stakeholders.rb +13 -0
  72. data/spec/factories/ecom/core/task_template_types.rb +6 -0
  73. data/spec/factories/ecom/core/task_templates.rb +15 -0
  74. data/spec/factories/ecom/core/tasks.rb +10 -0
  75. data/spec/factories/ecom/core/user_roles.rb +6 -0
  76. data/spec/factories/ecom/core/users.rb +9 -0
  77. data/spec/factories/ecom/core/work_component_templates.rb +11 -0
  78. data/spec/factories/ecom/core/work_components.rb +18 -0
  79. data/spec/factories/ecom/core/work_product_templates.rb +9 -0
  80. data/spec/factories/ecom/core/work_products.rb +22 -0
  81. metadata +291 -0
@@ -0,0 +1,10 @@
1
+ class CreateEcomCoreCurrencies < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_currencies do |t|
4
+ t.string :code, unique: true
5
+ t.string :name, unique: true
6
+
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,34 @@
1
+ class CreateEcomCoreProjects < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_projects do |t|
4
+ t.string :name, null: false
5
+ t.string :description
6
+ t.string :location, null: false
7
+ t.string :objective
8
+ t.string :project_scope
9
+ t.references :employer, index: { name: 'employer_on_projects_indx' }
10
+ t.references :contractor, index: { name: 'employer_on_contractor_indx' }
11
+ t.references :consultant, index: { name: 'employer_on_consultant_indx' }
12
+ t.references :project_manager, index: { name: 'employer_on_pm_indx' }
13
+ t.references :task_template, index: { name: 'employer_on_tt_indx' }
14
+ t.string :contract_number, null: false
15
+ t.date :date_contract_signed, null: false
16
+ t.date :commencement_date, null: false
17
+ t.date :completion_date, null: false
18
+ t.float :contract_amount, null: false
19
+ t.float :advance_payment, null: false
20
+ t.float :retention, null: false
21
+ t.string :remark
22
+ t.references :currency, index: { name: 'employer_on_currency_indx' }
23
+
24
+ t.timestamps
25
+ end
26
+
27
+ add_foreign_key :ecom_core_projects, :ecom_core_stakeholders, column: :employer_id
28
+ add_foreign_key :ecom_core_projects, :ecom_core_stakeholders, column: :contractor_id
29
+ add_foreign_key :ecom_core_projects, :ecom_core_stakeholders, column: :consultant_id
30
+ add_foreign_key :ecom_core_projects, :ecom_core_stakeholders, column: :project_manager_id
31
+ add_foreign_key :ecom_core_projects, :ecom_core_task_templates, column: :task_template_id
32
+ add_foreign_key :ecom_core_projects, :ecom_core_currencies, column: :currency_id
33
+ end
34
+ end
@@ -0,0 +1,17 @@
1
+ class CreateEcomCoreTasks < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_tasks do |t|
4
+ t.string :code, null: false
5
+ t.string :name, null: false
6
+ t.string :description
7
+ t.string :ancestry
8
+ t.references :project, index: { name: 'tasks_on_project_indx' }
9
+ t.references :task_template, index: { name: 'tt_on_project_indx' }
10
+
11
+ t.timestamps
12
+ end
13
+
14
+ add_foreign_key :ecom_core_tasks, :ecom_core_projects, column: :project_id
15
+ add_foreign_key :ecom_core_tasks, :ecom_core_task_templates, column: :task_template_id
16
+ end
17
+ end
@@ -0,0 +1,16 @@
1
+ class CreateTaskTemplatesResourceTypes < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_task_templates_resource_types, id: false do |t|
4
+ t.references :task_template, index: false
5
+ t.references :resource_type, index: false
6
+ end
7
+
8
+ add_index :ecom_core_task_templates_resource_types, %i[task_template_id resource_type_id],
9
+ unique: true, name: 'ttr_on_tt_rt_indx'
10
+
11
+ add_foreign_key :ecom_core_task_templates_resource_types, :ecom_core_task_templates,
12
+ column: :task_template_id
13
+ add_foreign_key :ecom_core_task_templates_resource_types, :ecom_core_resource_types,
14
+ column: :resource_type_id
15
+ end
16
+ end
@@ -0,0 +1,10 @@
1
+ class CreateEcomCoreApplicationModules < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_application_modules do |t|
4
+ t.string :code, unique: true
5
+ t.string :name, unique: true
6
+
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,24 @@
1
+ class CreateEcomCoreUsers < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_users do |t|
4
+ t.string :first_name, null: false
5
+ t.string :last_name, null: false
6
+ t.string :email, null: false
7
+ t.boolean :active, null: false, default: true
8
+ t.string :password_digest
9
+
10
+ t.timestamps
11
+ end
12
+
13
+ create_table :ecom_core_application_modules_users, id: false do |t|
14
+ t.references :user, index: false
15
+ t.references :application_module, index: false
16
+ end
17
+
18
+ add_index :ecom_core_application_modules_users, %i[user_id application_module_id], name: 'am_on_users_indx'
19
+
20
+ add_foreign_key :ecom_core_application_modules_users, :ecom_core_users, column: :user_id
21
+ add_foreign_key :ecom_core_application_modules_users, :ecom_core_application_modules,
22
+ column: :application_module_id
23
+ end
24
+ end
@@ -0,0 +1,22 @@
1
+ class CreateEcomCoreUserRoles < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_user_roles do |t|
4
+ t.string :name, index: false
5
+ t.references :application_module, index: { name: 'ur_on_am_indx' }
6
+
7
+ t.timestamps
8
+ end
9
+ add_index :ecom_core_user_roles, %i[name application_module_id], unique: true, name: 'am_name_indx'
10
+ add_foreign_key :ecom_core_user_roles, :ecom_core_application_modules,
11
+ column: :application_module_id
12
+
13
+ create_table :ecom_core_users_user_roles, id: false do |t|
14
+ t.references :user, index: false
15
+ t.references :user_role, index: false
16
+ end
17
+
18
+ add_index :ecom_core_users_user_roles, %i[user_id user_role_id], unique: true, name: 'users_user_roles_indx'
19
+ add_foreign_key :ecom_core_users_user_roles, :ecom_core_users, column: :user_id
20
+ add_foreign_key :ecom_core_users_user_roles, :ecom_core_user_roles, column: :user_role_id
21
+ end
22
+ end
@@ -0,0 +1,25 @@
1
+ class CreateEcomCoreMenus < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_menus do |t|
4
+ t.string :label, null: false
5
+ t.string :icon
6
+ t.string :route, null: false
7
+ t.references :parent, index: { name: 'menus_on_menus_indx' }
8
+ t.references :application_module, index: { name: 'menus_on_am_indx' }
9
+
10
+ t.timestamps
11
+ end
12
+
13
+ add_foreign_key :ecom_core_menus, :ecom_core_menus, column: :parent_id
14
+ add_foreign_key :ecom_core_menus, :ecom_core_application_modules, column: :application_module_id
15
+
16
+ create_table :ecom_core_menus_user_roles, id: false do |t|
17
+ t.references :menu, index: false
18
+ t.references :user_role, index: false
19
+ end
20
+
21
+ add_index :ecom_core_menus_user_roles, %i[menu_id user_role_id], unique: true, name: 'menus_user_roles_indx'
22
+ add_foreign_key :ecom_core_menus_user_roles, :ecom_core_menus, column: :menu_id
23
+ add_foreign_key :ecom_core_menus_user_roles, :ecom_core_user_roles, column: :user_role_id
24
+ end
25
+ end
@@ -0,0 +1,35 @@
1
+ class CreateEcomCoreWorkProducts < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_work_products do |t|
4
+ t.string :code, null: false
5
+ t.string :name, null: false
6
+ t.string :description
7
+ t.string :design_reference_no, unique: true
8
+ t.json :dimension
9
+ t.references :task, index: { name: 'task_on_wp_indx' }
10
+ t.references :work_product_template, index: { name: 'wpt_on_wp_indx' }
11
+ t.references :project, index: { name: 'projects_on_wp_indx' }
12
+ t.string :assignment_status, default: 'UNASSIGNED'
13
+ t.string :task_status, default: 'NEW'
14
+ t.integer :percent_completed
15
+ t.string :remark
16
+ t.references :performer, index: { name: 'pr_on_work_product_indx' }
17
+ t.references :approver, index: { name: 'app_on_work_product_indx' }
18
+ t.references :supervisor, index: { name: 'sup_on_work_product_indx' }
19
+ t.references :quality_controller, index: { name: 'qut_ctr_on_work_product_indx' }
20
+ t.datetime :start_date
21
+ t.datetime :completion_date
22
+
23
+ t.timestamps
24
+ end
25
+ add_index :ecom_core_work_products, %i[code project_id], unique: true
26
+ add_foreign_key :ecom_core_work_products, :ecom_core_tasks, column: :task_id
27
+ add_foreign_key :ecom_core_work_products, :ecom_core_work_product_templates,
28
+ column: :work_product_template_id
29
+ add_foreign_key :ecom_core_work_products, :ecom_core_projects, column: :project_id
30
+ add_foreign_key :ecom_core_work_products, :ecom_core_users, column: :performer_id
31
+ add_foreign_key :ecom_core_work_products, :ecom_core_users, column: :approver_id
32
+ add_foreign_key :ecom_core_work_products, :ecom_core_users, column: :supervisor_id
33
+ add_foreign_key :ecom_core_work_products, :ecom_core_users, column: :quality_controller_id
34
+ end
35
+ end
@@ -0,0 +1,30 @@
1
+ class CreateEcomCoreWorkComponents < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_work_components do |t|
4
+ t.string :name, null: false
5
+ t.json :dimension
6
+ t.string :assignment_status, null: false, default: :unassigned
7
+ t.string :task_status, null: false, default: :new
8
+ t.integer :percent_completed, null: false, default: 0
9
+ t.string :remark
10
+ t.references :performer, index: { name: 'wc_on_performer_indx' }
11
+ t.references :approver, index: { name: 'wc_on_approver_indx' }
12
+ t.references :supervisor, index: { name: 'wc_on_supervisor_indx' }
13
+ t.references :quality_controller, index: { name: 'wc_on_qc_indx' }
14
+ t.date :start_date
15
+ t.date :completion_date
16
+ t.references :work_component_template, index: { name: 'wct_on_wc_indx' }
17
+ t.references :work_product, index: { name: 'wp_on_wc_indx' }
18
+
19
+ t.timestamps
20
+ end
21
+
22
+ add_foreign_key :ecom_core_work_components, :ecom_core_users, column: :performer_id
23
+ add_foreign_key :ecom_core_work_components, :ecom_core_users, column: :approver_id
24
+ add_foreign_key :ecom_core_work_components, :ecom_core_users, column: :supervisor_id
25
+ add_foreign_key :ecom_core_work_components, :ecom_core_users, column: :quality_controller_id
26
+ add_foreign_key :ecom_core_work_components, :ecom_core_work_component_templates,
27
+ column: :work_component_template_id
28
+ add_foreign_key :ecom_core_work_components, :ecom_core_work_products, column: :work_product_id
29
+ end
30
+ end
@@ -0,0 +1,17 @@
1
+ class CreateEcomCoreCrews < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_crews do |t|
4
+ t.string :name, null: false
5
+ t.string :phone
6
+ t.string :email
7
+ t.string :qualification, null: false
8
+ t.string :employment, null: false
9
+ t.float :wage
10
+ t.references :crew_type, index: { name: 'crew_on_ct_indx' }
11
+
12
+ t.timestamps
13
+ end
14
+
15
+ add_foreign_key :ecom_core_crews, :ecom_core_resource_types, column: :crew_type_id
16
+ end
17
+ end
@@ -0,0 +1,16 @@
1
+ class CreateEcomCoreCrewTimes < ActiveRecord::Migration[6.0]
2
+ def change
3
+ create_table :ecom_core_crew_times do |t|
4
+ t.date :date, null: false
5
+ t.time :checkin_time
6
+ t.time :checkout_time
7
+ t.references :crew, index: { name: 'ct_on_crew_indx' }
8
+ t.string :remark
9
+ t.boolean :overtime, null: false, default: false
10
+
11
+ t.timestamps
12
+ end
13
+
14
+ add_foreign_key :ecom_core_crew_times, :ecom_core_crews, column: :crew_id
15
+ end
16
+ end
@@ -0,0 +1,25 @@
1
+ module Ecom
2
+ module Core
3
+ class Engine < ::Rails::Engine
4
+ isolate_namespace Ecom::Core
5
+ config.generators.api_only = true
6
+
7
+ config.generators do |g|
8
+ g.test_framework :rspec
9
+ g.fixture_replacement :factory_bot
10
+ g.factory_bot dir: 'spec/factories'
11
+ end
12
+
13
+ initializer 'ecom_core.factories', after: 'factory_bot.set_factory_paths' do
14
+ FactoryBot.definition_file_paths << File.expand_path('../../../spec/factories', __dir__) if defined?(FactoryBot)
15
+ end
16
+
17
+ initializer :append_migrations do |app|
18
+ unless app.root.to_s.match(root.to_s + File::SEPARATOR)
19
+ app.config.paths['db/migrate'].concat(config.paths['db/migrate'].expanded)
20
+ end
21
+ end
22
+
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,5 @@
1
+ module Ecom
2
+ module Core
3
+ VERSION = '1.0.0'.freeze
4
+ end
5
+ end
data/lib/ecom/core.rb ADDED
@@ -0,0 +1,4 @@
1
+ module Ecom
2
+ module Core
3
+ end
4
+ end
data/lib/ecom_core.rb ADDED
@@ -0,0 +1,5 @@
1
+ require 'ecom/core'
2
+ require 'ecom/core/engine'
3
+ require 'ancestry'
4
+ require 'aasm'
5
+ require 'fast_jsonapi'
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :ecom_core do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1,6 @@
1
+ FactoryBot.define do
2
+ factory :application_module, class: 'Ecom::Core::ApplicationModule' do
3
+ code { FFaker::Name.name }
4
+ name { FFaker::Name.name }
5
+ end
6
+ end
@@ -0,0 +1,10 @@
1
+ FactoryBot.define do
2
+ factory :crew_time, class: 'Ecom::Core::CrewTime' do
3
+ date { Date.today }
4
+ checkin_time { Time.now }
5
+ checkout_time { Time.now + 2 * 60 * 60 }
6
+ association :crew
7
+ remark { FFaker::Name.name }
8
+ overtime { false }
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ FactoryBot.define do
2
+ factory :crew_type, class: 'Ecom::Core::CrewType', parent: :resource_type do
3
+ type { 'Ecom::Core::CrewType' }
4
+ end
5
+ end
@@ -0,0 +1,12 @@
1
+ FactoryBot.define do
2
+ factory :crew, class: 'Ecom::Core::Crew' do
3
+ name { FFaker::Name.name }
4
+ phone { FFaker::Name.name }
5
+ email { FFaker::Name.name }
6
+ qualification { FFaker::Name.name }
7
+ employment { Ecom::Core::Crew::PERMANENT }
8
+ wage { FFaker::Random.rand(1000..5000) }
9
+
10
+ association :crew_type
11
+ end
12
+ end
@@ -0,0 +1,6 @@
1
+ FactoryBot.define do
2
+ factory :currency, class: 'Ecom::Core::Currency' do
3
+ code { FFaker::Currency.code }
4
+ name { FFaker::Currency.name }
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ FactoryBot.define do
2
+ factory :equipment_type, class: 'Ecom::Core::EquipmentType', parent: :resource_type do
3
+ type { 'Ecom::Core::EquipmentType' }
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ FactoryBot.define do
2
+ factory :material_type, class: 'Ecom::Core::MaterialType', parent: :resource_type do
3
+ type { 'Ecom::Core::MaterialType' }
4
+ end
5
+ end
@@ -0,0 +1,9 @@
1
+ FactoryBot.define do
2
+ factory :menu, class: 'Ecom::Core::Menu' do
3
+ label { FFaker::Name.name }
4
+ icon { FFaker::Name.name }
5
+ route { FFaker::Name.name }
6
+ parent { nil }
7
+ association :application_module
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ FactoryBot.define do
2
+ factory :product_type, class: 'Ecom::Core::ProductType' do
3
+ name { FFaker::Name.name }
4
+ association :work_product_template
5
+ dimension { [{ name: 'length', label: 'length' }, { name: 'width', label: 'width' }] }
6
+ end
7
+ end
@@ -0,0 +1,23 @@
1
+ FactoryBot.define do
2
+ factory :project, class: 'Ecom::Core::Project' do
3
+ name { FFaker::Name.name }
4
+ description { FFaker::Name.name }
5
+ location { FFaker::Name.name }
6
+ objective { FFaker::Name.name }
7
+ project_scope { FFaker::Name.name }
8
+ association :employer, factory: :stakeholder
9
+ association :contractor, factory: :stakeholder
10
+ association :consultant, factory: :stakeholder
11
+ association :project_manager, factory: :stakeholder
12
+ association :task_template
13
+ contract_number { FFaker::Name.name }
14
+ date_contract_signed { 30.days.ago }
15
+ commencement_date { 1.day.ago }
16
+ completion_date { Time.now.next_month }
17
+ contract_amount { FFaker::Random.rand(1_000_000..9_999_999) }
18
+ advance_payment { FFaker::Random.rand(0..100) }
19
+ retention { FFaker::Random.rand(0..100) }
20
+ remark { FFaker::Name.name }
21
+ association :currency
22
+ end
23
+ end
@@ -0,0 +1,8 @@
1
+ FactoryBot.define do
2
+ factory :resource_type, class: 'Ecom::Core::ResourceType' do
3
+ code { FFaker::Name.name }
4
+ name { FFaker::Name.name }
5
+ base_unit { FFaker::Name.name }
6
+ type { 'Ecom::Core::CrewType' }
7
+ end
8
+ end
@@ -0,0 +1,5 @@
1
+ FactoryBot.define do
2
+ factory :stakeholder_type, class: 'Ecom::Core::StakeholderType' do
3
+ name { FFaker::Name.name }
4
+ end
5
+ end
@@ -0,0 +1,13 @@
1
+ FactoryBot.define do
2
+ factory :stakeholder, class: 'Ecom::Core::Stakeholder' do
3
+ name { FFaker::Name.unique.name }
4
+ type_of_business { FFaker::Name.name }
5
+ address { FFaker::Name.name }
6
+ license_no { FFaker::Name.name }
7
+ tin_no { FFaker::Name.name }
8
+ contact_name { FFaker::Name.name }
9
+ contact_phone { FFaker::Name.name }
10
+ contact_email { FFaker::Name.name }
11
+ association :stakeholder_type
12
+ end
13
+ end
@@ -0,0 +1,6 @@
1
+ FactoryBot.define do
2
+ factory :task_template_type, class: 'Ecom::Core::TaskTemplateType' do
3
+ code { FFaker::Name.unique.name }
4
+ name { FFaker::Name.unique.name }
5
+ end
6
+ end
@@ -0,0 +1,15 @@
1
+ FactoryBot.define do
2
+ factory :task_template, class: 'Ecom::Core::TaskTemplate' do
3
+ code { FFaker::Name.name }
4
+ name { FFaker::Name.name }
5
+ description { FFaker::Name.name }
6
+ association :task_template_type
7
+
8
+ factory :task_template_with_product_template do
9
+ after :create do |task_template, _|
10
+ create(:work_product_template, task_template: task_template)
11
+ end
12
+ end
13
+
14
+ end
15
+ end
@@ -0,0 +1,10 @@
1
+ FactoryBot.define do
2
+ factory :task, class: 'Ecom::Core::Task' do
3
+ code { FFaker::Name.name }
4
+ name { FFaker::Name.name }
5
+ description { FFaker::Name.name }
6
+ ancestry { FFaker::Name.name }
7
+ association :project
8
+ association :task_template
9
+ end
10
+ end
@@ -0,0 +1,6 @@
1
+ FactoryBot.define do
2
+ factory :user_role, class: 'Ecom::Core::UserRole' do
3
+ name { FFaker::Name.name }
4
+ association :application_module
5
+ end
6
+ end
@@ -0,0 +1,9 @@
1
+ FactoryBot.define do
2
+ factory :user, class: 'Ecom::Core::User' do
3
+ first_name { FFaker::Name.name }
4
+ last_name { FFaker::Name.name }
5
+ email { FFaker::Internet.email }
6
+ active { true }
7
+ password { FFaker::Internet.password }
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ FactoryBot.define do
2
+ factory :work_component_template, class: 'Ecom::Core::WorkComponentTemplate' do
3
+ code { FFaker::Name.name }
4
+ name { FFaker::Name.name }
5
+ description { FFaker::Name.name }
6
+ relative_percentage { FFaker::Random.rand(0..100) }
7
+ dimension { [{ label: 'Length', name: 'length' }, { label: 'Width', name: 'width' }] }
8
+ association :work_product_template
9
+ association :task_template
10
+ end
11
+ end
@@ -0,0 +1,18 @@
1
+ FactoryBot.define do
2
+ factory :work_component, class: 'Ecom::Core::WorkComponent' do
3
+ name { FFaker::Name.name }
4
+ dimension { [{ label: 'Length', name: 'length', value: 10 }] }
5
+ assignment_status { :unassigned }
6
+ task_status { :new }
7
+ percent_completed { FFaker::Random.rand(1..100) }
8
+ remark { FFaker::Name.name }
9
+ association :performer, factory: :user
10
+ association :approver, factory: :user
11
+ association :supervisor, factory: :user
12
+ association :quality_controller, factory: :user
13
+ start_date { 1.day.ago }
14
+ completion_date { Time.now.next_week }
15
+ association :work_component_template
16
+ association :work_product
17
+ end
18
+ end
@@ -0,0 +1,9 @@
1
+ FactoryBot.define do
2
+ factory :work_product_template, class: 'Ecom::Core::WorkProductTemplate' do
3
+ code { FFaker::Name.unique.name }
4
+ name { FFaker::Name.unique.name }
5
+ description { FFaker::Name.name }
6
+ remark { FFaker::Name.name }
7
+ association :task_template
8
+ end
9
+ end
@@ -0,0 +1,22 @@
1
+ FactoryBot.define do
2
+ factory :work_product, class: 'Ecom::Core::WorkProduct' do
3
+ code { FFaker::Name.unique.name }
4
+ name { FFaker::Name.name }
5
+ description { FFaker::Name.name }
6
+ design_reference_no { FFaker::Name.name }
7
+ dimension { [{ label: 'Length', name: 'length', value: 12 }] }
8
+ association :task
9
+ association :work_product_template
10
+ association :project
11
+ assignment_status { :unassigned }
12
+ task_status { :new }
13
+ percent_completed { FFaker::Random.rand(1..100) }
14
+ remark { FFaker::Name.name }
15
+ association :performer, factory: :user
16
+ association :approver, factory: :user
17
+ association :supervisor, factory: :user
18
+ association :quality_controller, factory: :user
19
+ start_date { 1.day.ago }
20
+ completion_date { Time.now.next_week }
21
+ end
22
+ end