Sha256: 3dacd526c5f2977cfef2a72bad414c4bc40139d78e5f9029dccab78c1cbbd4ae

Contents?: true

Size: 1.73 KB

Versions: 28

Compression:

Stored size: 1.73 KB

Contents

module Souls
  class Update < Thor
    desc "rspec_factory [CLASS_NAME]", "Update GraphQL Type from schema.rb"
    def rspec_factory(class_name)
      singularized_class_name = class_name.singularize.underscore
      pluralized_class_name = class_name.pluralize.underscore
      new_cols = Souls.get_columns_num(class_name: singularized_class_name)
      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|
              next if col[:column_name] == "created_at" || col[:column_name] == "updated_at"

              type = Souls.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)
      Souls::Painter.update_file(file_path.to_s)
    end

    private

    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.underscore if line.include?("{")
        end
      end
      args
    end
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
souls-1.17.3 lib/souls/cli/update/rspec_factory.rb
souls-1.17.2 lib/souls/cli/update/rspec_factory.rb
souls-1.17.1 lib/souls/cli/update/rspec_factory.rb
souls-1.17.0 lib/souls/cli/update/rspec_factory.rb
souls-1.16.4 lib/souls/cli/update/rspec_factory.rb
souls-1.16.3 lib/souls/cli/update/rspec_factory.rb
souls-1.16.2 lib/souls/cli/update/rspec_factory.rb
souls-1.16.1 lib/souls/cli/update/rspec_factory.rb
souls-1.16.0 lib/souls/cli/update/rspec_factory.rb
souls-1.15.5 lib/souls/cli/update/rspec_factory.rb
souls-1.15.4 lib/souls/cli/update/rspec_factory.rb
souls-1.15.3 lib/souls/cli/update/rspec_factory.rb
souls-1.15.2 lib/souls/cli/update/rspec_factory.rb
souls-1.15.1 lib/souls/cli/update/rspec_factory.rb
souls-1.15.0 lib/souls/cli/update/rspec_factory.rb
souls-1.14.3 lib/souls/cli/update/rspec_factory.rb
souls-1.14.2 lib/souls/cli/update/rspec_factory.rb
souls-1.14.1 lib/souls/cli/update/rspec_factory.rb
souls-1.14.0 lib/souls/cli/update/rspec_factory.rb
souls-1.13.8 lib/souls/cli/update/rspec_factory.rb