Browse Source

redefine form model to use filepaths instead

pull/46/head
MadeTech Dushan 4 years ago
parent
commit
ff655ba34c
  1. 7
      app/models/form.rb
  2. 9
      app/models/form_handler.rb
  3. 0
      spec/fixtures/forms/test_form.json
  4. 6
      spec/models/form_handler_spec.rb

7
app/models/form.rb

@ -1,11 +1,10 @@
class Form class Form
attr_reader :form_definition attr_reader :form_definition
def initialize(filename) def initialize(form_path)
form_json = "config/forms/#{filename}.json" raise "No form definition file exists for given year".freeze unless File.exist?(form_path)
raise "No form definition file exists for given year".freeze unless File.exist?(form_json)
@form_definition = JSON.parse(File.open(form_json).read) @form_definition = JSON.parse(File.open(form_path).read)
end end
# Returns a hash with sections as keys # Returns a hash with sections as keys

9
app/models/form_handler.rb

@ -3,6 +3,7 @@ class FormHandler
def initialize def initialize
@forms = {} @forms = {}
get_all_forms
end end
def get_form(form) def get_form(form)
@ -11,11 +12,15 @@ class FormHandler
end end
def get_all_forms def get_all_forms
Dir.foreach("config/forms") do |filename| directories = ["config/forms", "spec/fixtures/forms"]
directories.each do |directory|
Dir.foreach(directory) do |filename|
next if (filename == ".") || (filename == "..") next if (filename == ".") || (filename == "..")
form_name = filename.sub(".json", "") form_name = filename.sub(".json", "")
@forms[form_name] = Form.new(form_name) form_path = "#{directory}/#{filename}"
@forms[form_name] = Form.new(form_path)
end
end end
@forms @forms
end end

0
config/forms/test_form.json → spec/fixtures/forms/test_form.json vendored

6
spec/models/form_handler_spec.rb

@ -6,16 +6,16 @@ RSpec.describe FormHandler do
form_handler = FormHandler.instance form_handler = FormHandler.instance
all_forms = form_handler.get_all_forms all_forms = form_handler.get_all_forms
expect(all_forms.count).to be >= 1 expect(all_forms.count).to be >= 1
expect(all_forms["2021_2022"]).to be_a(Form) expect(all_forms["test_form"]).to be_a(Form)
end end
end end
describe "Get specific form" do describe "Get specific form" do
it "should be able to load a specific form" do it "should be able to load a specific form" do
form_handler = FormHandler.instance form_handler = FormHandler.instance
form = form_handler.get_form("2021_2022") form = form_handler.get_form("test_form")
expect(form).to be_a(Form) expect(form).to be_a(Form)
expect(form.all_pages.count).to eq(43) expect(form.all_pages.count).to eq(18)
end end
end end

Loading…
Cancel
Save