Skip to content

Commit

Permalink
Merge pull request #38 from zaikio/Add-workstep
Browse files Browse the repository at this point in the history
Add Workstep
  • Loading branch information
YannIsCoding authored Nov 13, 2023
2 parents ddb508a + 69d6c91 commit 0c421c8
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 0 deletions.
21 changes: 21 additions & 0 deletions config/data/worksteps.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
Ctp:
plate:
required: true
Cutting:
product:
required: true
Folding:
fold:
required: true
Lamination:
laminated_sheet:
required: true
Printing:
sheet:
required: false
roll:
required: false
ThreadSewing:
book_block:
required: true

3 changes: 3 additions & 0 deletions lib/zaikio/mission_control.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
# Finishings
require "zaikio/mission_control/finishings/base"

# Worksteps
require "zaikio/mission_control/worksteps/base"

# Intermediate products
require "zaikio/mission_control/intermediate_products/base"

Expand Down
25 changes: 25 additions & 0 deletions lib/zaikio/mission_control/worksteps/base.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
module Zaikio
module MissionControl
module Worksteps
class Base < Zaikio::MissionControl::Base
require "yaml"
RELATIVE_PATH_TO_JOBS_YML = "../../../../config/data/worksteps.yml"
worksteps = YAML.safe_load_file(File.join(File.dirname(__FILE__), RELATIVE_PATH_TO_JOBS_YML), symbolize_names: true)
worksteps.each do |klass_name, intermediate_products|
Zaikio::MissionControl::Worksteps.const_set(klass_name.to_s.classify, Class.new(Base))
Zaikio::MissionControl::Worksteps.const_get(klass_name.to_s.classify).instance_variable_set(:@intermediate_products, intermediate_products)
end

class << self
def intermediate_products
@intermediate_products.flat_map do |product, option|
return [product] if option[:required]

product.to_s.concat("_maybe").to_sym
end
end
end
end
end
end
end
32 changes: 32 additions & 0 deletions test/zaikio/mission_control/worksteps/worksteps_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
require_relative "../../../test_helper"

class Zaikio::MissionControl::WorkstepsTest < ActiveSupport::TestCase
test "@parts, return what it should" do
expected = {
Ctp: {
plate: { required: true }
},
Cutting: {
product: { required: true }
},
Folding: {
fold: { required: true }
},
Lamination: {
laminated_sheet: { required: true }
},
Printing: {
sheet: { required: false },
roll: { required: false }
},
ThreadSewing: {
book_block: { required: true }
}
}

Zaikio::MissionControl::Worksteps.constants.reject { _1 == Base } .each do |job_klass|
assert_equal expected[job_klass],
Zaikio::MissionControl::Worksteps.const_get(job_klass).instance_variable_get(:@intermediate_products)
end
end
end

0 comments on commit 0c421c8

Please sign in to comment.