Browse Source

Refactor

pull/3011/head
Kat 1 month ago
parent
commit
9a7f23b146
  1. 42
      app/services/documentation_generator.rb
  2. 31
      lib/tasks/generate_lettings_documentation.rake
  3. 31
      lib/tasks/generate_sales_documentation.rake
  4. 4
      spec/lib/tasks/generate_lettings_documentation_spec.rb
  5. 4
      spec/lib/tasks/generate_sales_documentation_spec.rb

42
app/services/documentation_generator.rb

@ -94,6 +94,48 @@ class DocumentationGenerator
end
end
def get_all_sales_methods
validation_classes = [Validations::Sales::SetupValidations,
Validations::Sales::HouseholdValidations,
Validations::Sales::PropertyValidations,
Validations::Sales::FinancialValidations,
Validations::Sales::SaleInformationValidations,
Validations::SharedValidations,
Validations::LocalAuthorityValidations]
all_validation_methods = validation_classes.map(&:instance_methods).flatten.select { |method| method.starts_with?("validate_") }.uniq
all_methods = validation_classes.map { |x| x.instance_methods + x.private_instance_methods }.flatten.uniq
all_helper_methods = all_methods - all_validation_methods
[all_validation_methods, all_helper_methods]
end
def get_soft_sales_methods
all_helper_methods = Validations::SoftValidations.private_instance_methods + Validations::Sales::SoftValidations.private_instance_methods
all_validation_methods = Validations::SoftValidations.instance_methods + Validations::Sales::SoftValidations.instance_methods
[all_helper_methods, all_validation_methods]
end
def get_all_lettings_methods
validation_classes = [Validations::SetupValidations,
Validations::HouseholdValidations,
Validations::PropertyValidations,
Validations::FinancialValidations,
Validations::TenancyValidations,
Validations::DateValidations,
Validations::LocalAuthorityValidations]
all_validation_methods = validation_classes.map(&:instance_methods).flatten.select { |method| method.starts_with?("validate_") }.uniq
all_methods = validation_classes.map { |x| x.instance_methods + x.private_instance_methods }.flatten.uniq
all_helper_methods = all_methods - all_validation_methods
[all_validation_methods, all_helper_methods]
end
def get_soft_lettings_methods
all_helper_methods = Validations::SoftValidations.private_instance_methods
all_validation_methods = Validations::SoftValidations.instance_methods
[all_helper_methods, all_validation_methods]
end
private
def describe_hard_validation(client, meth, validation_source, helper_methods_source, form, file_path)

31
lib/tasks/generate_lettings_documentation.rake

@ -8,29 +8,15 @@ namespace :generate_lettings_documentation do
raise "No form found for given year" if form.blank?
client = OpenAI::Client.new(access_token: ENV["OPENAI_API_KEY"])
include Validations::SetupValidations
include Validations::HouseholdValidations
include Validations::PropertyValidations
include Validations::FinancialValidations
include Validations::TenancyValidations
include Validations::DateValidations
include Validations::LocalAuthorityValidations
all_validation_methods = public_methods.select { |method| method.starts_with?("validate_") }
all_methods = [Validations::SetupValidations,
Validations::HouseholdValidations,
Validations::PropertyValidations,
Validations::FinancialValidations,
Validations::TenancyValidations,
Validations::DateValidations,
Validations::LocalAuthorityValidations].map { |x| x.instance_methods + x.private_instance_methods }.flatten
all_helper_methods = all_methods - all_validation_methods
DocumentationGenerator.new.describe_hard_validations(client, form, all_validation_methods, all_helper_methods, "lettings")
documentation_generator = DocumentationGenerator.new
all_validation_methods, all_helper_methods = documentation_generator.get_all_lettings_methods
documentation_generator.describe_hard_validations(client, form, all_validation_methods, all_helper_methods, "lettings")
end
desc "Generate documentation for soft lettings validations"
task :describe_soft_lettings_validations, %i[year] => :environment do |_task, args|
include Validations::SoftValidations
form_year = args[:year]&.to_i
raise "Usage: rake generate_lettings_documentation:describe_soft_lettings_validations['year']" if form_year.blank?
@ -38,11 +24,10 @@ namespace :generate_lettings_documentation do
raise "No form found for given year" if form.blank?
client = OpenAI::Client.new(access_token: ENV["OPENAI_API_KEY"])
documentation_generator = DocumentationGenerator.new
all_helper_methods, all_validation_methods = documentation_generator.get_soft_lettings_methods
all_helper_methods = Validations::SoftValidations.private_instance_methods
all_validation_methods = Validations::SoftValidations.instance_methods
DocumentationGenerator.new.describe_soft_validations(client, form, all_validation_methods, all_helper_methods, "lettings")
documentation_generator.describe_soft_validations(client, form, all_validation_methods, all_helper_methods, "lettings")
end
desc "Generate documentation for hard bu lettings validations"

31
lib/tasks/generate_sales_documentation.rake

@ -8,31 +8,14 @@ namespace :generate_sales_documentation do
raise "No form found for given year" if form.blank?
client = OpenAI::Client.new(access_token: ENV["OPENAI_API_KEY"])
include Validations::Sales::SetupValidations
include Validations::Sales::HouseholdValidations
include Validations::Sales::PropertyValidations
include Validations::Sales::FinancialValidations
include Validations::Sales::SaleInformationValidations
include Validations::SharedValidations
include Validations::LocalAuthorityValidations
all_validation_methods = public_methods.select { |method| method.starts_with?("validate_") }
all_methods = [Validations::Sales::SetupValidations,
Validations::Sales::HouseholdValidations,
Validations::Sales::PropertyValidations,
Validations::Sales::FinancialValidations,
Validations::Sales::SaleInformationValidations,
Validations::SharedValidations,
Validations::LocalAuthorityValidations].map { |x| x.instance_methods + x.private_instance_methods }.flatten
all_helper_methods = all_methods - all_validation_methods
DocumentationGenerator.new.describe_hard_validations(client, form, all_validation_methods, all_helper_methods, "sales")
documentation_generator = DocumentationGenerator.new
all_validation_methods, all_helper_methods = documentation_generator.get_all_sales_methods
documentation_generator.describe_hard_validations(client, form, all_validation_methods, all_helper_methods, "sales")
end
desc "Generate documentation for soft sales validations"
task :describe_soft_sales_validations, %i[year] => :environment do |_task, args|
include Validations::SoftValidations
include Validations::Sales::SoftValidations
form_year = args[:year]&.to_i
raise "Usage: rake generate_sales_documentation:describe_soft_sales_validations['year']" if form_year.blank?
@ -40,10 +23,10 @@ namespace :generate_sales_documentation do
raise "No form found for given year" if form.blank?
client = OpenAI::Client.new(access_token: ENV["OPENAI_API_KEY"])
all_helper_methods = Validations::SoftValidations.private_instance_methods + Validations::Sales::SoftValidations.private_instance_methods
all_validation_methods = Validations::SoftValidations.instance_methods + Validations::Sales::SoftValidations.instance_methods
documentation_generator = DocumentationGenerator.new
all_helper_methods, all_validation_methods = documentation_generator.get_soft_sales_methods
DocumentationGenerator.new.describe_soft_validations(client, form, all_validation_methods, all_helper_methods, "sales")
documentation_generator.describe_soft_validations(client, form, all_validation_methods, all_helper_methods, "sales")
end
desc "Generate documentation for hard bu sales validations"

4
spec/lib/tasks/generate_lettings_documentation_spec.rb

@ -67,7 +67,7 @@ RSpec.describe "generate_lettings_documentation" do
describe ":describe_lettings_validations", type: :task do
subject(:task) { Rake::Task["generate_lettings_documentation:describe_lettings_validations"] }
let(:documentation_generator) { instance_double(DocumentationGenerator, describe_bu_validations: nil) }
let(:documentation_generator) { instance_double(DocumentationGenerator, describe_bu_validations: nil, get_all_lettings_methods: []) }
let(:client) { instance_double(OpenAI::Client) }
before do
@ -179,7 +179,7 @@ RSpec.describe "generate_lettings_documentation" do
describe ":describe_soft_lettings_validations", type: :task do
subject(:task) { Rake::Task["generate_lettings_documentation:describe_soft_lettings_validations"] }
let(:documentation_generator) { instance_double(DocumentationGenerator, describe_bu_validations: nil) }
let(:documentation_generator) { instance_double(DocumentationGenerator, describe_bu_validations: nil, get_soft_lettings_methods: []) }
let(:client) { instance_double(OpenAI::Client) }
before do

4
spec/lib/tasks/generate_sales_documentation_spec.rb

@ -67,7 +67,7 @@ RSpec.describe "generate_sales_documentation" do
describe ":describe_sales_validations", type: :task do
subject(:task) { Rake::Task["generate_sales_documentation:describe_sales_validations"] }
let(:documentation_generator) { instance_double(DocumentationGenerator, describe_bu_validations: nil) }
let(:documentation_generator) { instance_double(DocumentationGenerator, describe_bu_validations: nil, get_all_sales_methods: []) }
let(:client) { instance_double(OpenAI::Client) }
before do
@ -179,7 +179,7 @@ RSpec.describe "generate_sales_documentation" do
describe ":describe_soft_sales_validations", type: :task do
subject(:task) { Rake::Task["generate_sales_documentation:describe_soft_sales_validations"] }
let(:documentation_generator) { instance_double(DocumentationGenerator, describe_bu_validations: nil) }
let(:documentation_generator) { instance_double(DocumentationGenerator, describe_bu_validations: nil, get_soft_sales_methods: []) }
let(:client) { instance_double(OpenAI::Client) }
before do

Loading…
Cancel
Save