<commit_before>require File.join(File.dirname(__FILE__), "test_generator_helper.rb")

class TestGigantronGenerator < Test::Unit::TestCase
  include RubiGen::GeneratorTestHelper

  def setup
    bare_setup
  end
  
  def teardown
    bare_teardown
  end
  
  def test_generator_without_options
    run_generator('gigantron', [APP_ROOT], sources)
    assert_directory_exists "tasks/"
    assert_generated_file   "tasks/import.rake"
    assert_directory_exists "test/"
    assert_generated_file   "test/test_helper.rb"
    assert_directory_exists "test/tasks/"
    assert_generated_file   "test/tasks/test_import.rb"
    assert_directory_exists "test/models/"
    assert_directory_exists "lib/"
    assert_directory_exists "models/"
    assert_directory_exists "db/"
    assert_directory_exists "script/"
    assert_generated_file   "script/generate"
    assert_generated_file   "database.yml"
    assert_generated_file   "Rakefile"
    assert_generated_file   "initialize.rb"
  end

  context "Generated project" do
    setup do
      run_generator('gigantron', [APP_ROOT], sources)

      initialize_gigantron
      configure_gigantron_db
      get_db_conn(GTRON_ENV)
    end

    context "with migration and model" do
      setup do
        run_generator('model', ['Foo'], sources)
        
        create_test_migration
        get_db_conn(GTRON_ENV)

        ENV["VERBOSE"] = "false"
        Gigantron.migrate_dbs
      end

      should "create test db" do
        assert File.exists?("#{APP_ROOT}/db/test.sqlite3")
      end

      should "create table foos and populate" do
        assert_equal Foo.find(:all).size, 2
      end
    end
  end
  
  private
  def sources
    [RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", generator_path)),
    RubiGen::PathSource.new(:test_components, File.join(File.dirname(__FILE__),"..", "gigantron_generators"))]
  end
  
  def generator_path
    "app_generators"
  end

  def initialize_gigantron
    silence_warnings { GTRON_ENV = :test }
    require File.join(APP_ROOT, "initialize.rb")
    require 'gigantron/migrator'
  end
  
  def configure_gigantron_db
    if !File.exists? "test/template_database.yml"
      puts "Configure test DB in 'test/template_database.yml'!"
    end
    assert File.exists?("test/template_database.yml")
    File.open("#{APP_ROOT}/database.yml", "w") do |f|
      f.write ERB.new(
        File.read("test/template_database.yml")).result(binding)
    end
  end<commit_msg>Weird dynamic constant error, had to declean a bit, but now it works<commit_after>require File.join(File.dirname(__FILE__), "test_generator_helper.rb")

class TestGigantronGenerator < Test::Unit::TestCase
  include RubiGen::GeneratorTestHelper

  def setup
    bare_setup
  end
  
  def teardown
    bare_teardown
  end
  
  def test_generator_without_options
    run_generator('gigantron', [APP_ROOT], sources)
    assert_directory_exists "tasks/"
    assert_generated_file   "tasks/import.rake"
    assert_directory_exists "test/"
    assert_generated_file   "test/test_helper.rb"
    assert_directory_exists "test/tasks/"
    assert_generated_file   "test/tasks/test_import.rb"
    assert_directory_exists "test/models/"
    assert_directory_exists "lib/"
    assert_directory_exists "models/"
    assert_directory_exists "db/"
    assert_directory_exists "script/"
    assert_generated_file   "script/generate"
    assert_generated_file   "database.yml"
    assert_generated_file   "Rakefile"
    assert_generated_file   "initialize.rb"
  end

  context "Generated project" do
    setup do
      run_generator('gigantron', [APP_ROOT], sources)

      silence_warnings { GTRON_ENV = :test }
      initialize_gigantron
      configure_gigantron_db
      get_db_conn(GTRON_ENV)
    end

    context "with migration and model" do
      setup do
        run_generator('model', ['Foo'], sources)
        
        create_test_migration
        get_db_conn(GTRON_ENV)

        ENV["VERBOSE"] = "false"
        Gigantron.migrate_dbs
      end

      should "create test db" do
        assert File.exists?("#{APP_ROOT}/db/test.sqlite3")
      end

      should "create table foos and populate" do
        assert_equal Foo.find(:all).size, 2
      end
    end
  end
  
  private
  def sources
    [RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", generator_path)),
    RubiGen::PathSource.new(:test_components, File.join(File.dirname(__FILE__),"..", "gigantron_generators"))]
  end
  
  def generator_path
    "app_generators"
  end

  def initialize_gigantron
    require File.join(APP_ROOT, "initialize.rb")
    require 'gigantron/migrator'
  end
  
  def configure_gigantron_db
    if !File.exists? "test/template_database.yml"
      puts "Configure test DB in 'test/template_database.yml'!"
    end
    assert File.exists?("test/template_database.yml")
    File.open("#{APP_ROOT}/database.yml", "w") do |f|
      f.write ERB.new(
        File.read("test/template_database.yml")).result(binding)
    end
  end
{'fraction_non_alphanumeric': 0.0980980980980981, 'fraction_numerical': 0.0008008008008008008, 'mean_word_length': 3.3557105492589363, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6624674', 'n_tokens_mistral': 1653, 'n_tokens_neox': 1617, 'n_words': 313}