Sha256: 749d29da6f505526a3b5ea2fa21a1bfa100e186132b427cc82e9d24a99dd3057

Contents?: true

Size: 1.84 KB

Versions: 1

Compression:

Stored size: 1.84 KB

Contents

module Souls
  module Api
    module Update
      class << self
        def rspec_factory(class_name: "user")
          singularized_class_name = class_name.singularize.underscore
          pluralized_class_name = class_name.pluralize.underscore
          new_cols = Souls.get_last_migration_type(class_name: singularized_class_name, action: "add")
          dir_name = "./spec/factories"
          new_file_path = "tmp/create_factory.rb"
          file_path = "#{dir_name}/#{pluralized_class_name}.rb"
          argument = false
          File.open(file_path) do |f|
            File.open(new_file_path, "w") do |new_line|
              f.each_line do |line|
                new_line.write(line)
                next unless line.include?("{") && !argument

                new_cols.each do |col|
                  type = Souls::Api::Generate.get_test_type(col[:type])
                  type = "[#{type}]" if col[:array]
                  args = check_factory_argument(class_name: class_name)

                  new_line.write("    #{col[:column_name]} { #{type} }\n") unless args.include?(col[:column_name])
                end
                argument = true
              end
            end
          end
          FileUtils.rm(file_path)
          FileUtils.mv(new_file_path, file_path)
          puts(Paint % ["Updated file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
        end

        def check_factory_argument(class_name: "user")
          pluralized_class_name = class_name.pluralize.underscore
          dir_name = "./spec/factories"
          file_path = "#{dir_name}/#{pluralized_class_name}.rb"
          args = []
          File.open(file_path) do |f|
            f.each_line do |line|
              args << line.split("{")[0].strip if line.include?("{")
            end
          end
          args
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
souls-0.29.8 lib/souls/api/update/rspec_factory.rb