Skip to content

Commit 324cdeb

Browse files
committed
Rename YamlDumper to Compiler, generate/dump to compile
1 parent b641cfc commit 324cdeb

10 files changed

Lines changed: 52 additions & 31 deletions

File tree

lib/fixturebot.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
require_relative "fixturebot/row"
88
require_relative "fixturebot/definition"
99
require_relative "fixturebot/fixture_set"
10-
require_relative "fixturebot/yaml_dumper"
10+
require_relative "fixturebot/compiler"
1111
require_relative "fixturebot/cli"
1212

1313
module FixtureBot

lib/fixturebot/cli.rb

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,28 @@ def self.exit_on_failure?
88
true
99
end
1010

11-
desc "show DIR", "Evaluate DIR/schema.rb and DIR/fixtures.rb, then print fixture YAML to stdout"
11+
desc "compile DIR", "Compile DIR/schema.rb and DIR/fixtures.rb to YAML fixture files"
12+
def compile(dir)
13+
schema_path = File.join(dir, "schema.rb")
14+
fixtures_path = File.join(dir, "fixtures.rb")
15+
16+
raise Thor::Error, "Schema file not found: #{schema_path}" unless File.exist?(schema_path)
17+
raise Thor::Error, "Fixtures file not found: #{fixtures_path}" unless File.exist?(fixtures_path)
18+
19+
schema = eval(File.read(schema_path), binding, schema_path, 1)
20+
fixture_set = FixtureBot.define_from_file(schema, fixtures_path)
21+
22+
output_dir = File.join(dir, "fixtures")
23+
Compiler.new(fixture_set).compile(output_dir)
24+
25+
say "Compiled fixtures to #{output_dir}/"
26+
fixture_set.tables.each do |table_name, records|
27+
next if records.empty?
28+
say " #{table_name}.yml (#{records.size} records)"
29+
end
30+
end
31+
32+
desc "show DIR", "Compile DIR/schema.rb and DIR/fixtures.rb, then print YAML to stdout"
1233
def show(dir)
1334
schema_path = File.join(dir, "schema.rb")
1435
fixtures_path = File.join(dir, "fixtures.rb")
@@ -18,12 +39,12 @@ def show(dir)
1839

1940
schema = eval(File.read(schema_path), binding, schema_path, 1)
2041
fixture_set = FixtureBot.define_from_file(schema, fixtures_path)
21-
dumper = FixtureBot::YamlDumper.new(fixture_set)
42+
compiler = FixtureBot::Compiler.new(fixture_set)
2243

2344
fixture_set.tables.each do |table_name, records|
2445
next if records.empty?
2546
puts "# #{table_name}.yml"
26-
puts dumper.dump_table(table_name)
47+
puts compiler.compile_table(table_name)
2748
end
2849
end
2950

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,21 @@
44
require "fileutils"
55

66
module FixtureBot
7-
class YamlDumper
7+
class Compiler
88
def initialize(fixture_set)
99
@fixture_set = fixture_set
1010
end
1111

12-
def dump(output_dir)
12+
def compile(output_dir)
1313
FileUtils.mkdir_p(output_dir)
1414
@fixture_set.tables.each do |table_name, records|
1515
next if records.empty?
1616
path = File.join(output_dir, "#{table_name}.yml")
17-
File.write(path, dump_table(table_name))
17+
File.write(path, compile_table(table_name))
1818
end
1919
end
2020

21-
def dump_table(table_name)
21+
def compile_table(table_name)
2222
records = @fixture_set.tables[table_name]
2323
hash = {}
2424
records.each do |record_name, columns|

lib/fixturebot/minitest.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22

33
require "fixturebot/rails"
44

5-
FixtureBot::Rails.generate
5+
FixtureBot::Rails.compile

lib/fixturebot/rails.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@
77

88
module FixtureBot
99
module Rails
10-
def self.generate(fixtures_file: nil, output_dir: nil)
10+
def self.compile(fixtures_file: nil, output_dir: nil)
1111
fixtures_file = resolve_fixtures_file(fixtures_file)
1212
return unless fixtures_file && File.exist?(fixtures_file)
1313

1414
output_dir = resolve_output_dir(output_dir, fixtures_file)
1515

1616
schema = SchemaLoader.load
1717
fixture_set = FixtureBot.define_from_file(schema, fixtures_file)
18-
YamlDumper.new(fixture_set).dump(output_dir)
18+
Compiler.new(fixture_set).compile(output_dir)
1919
end
2020

2121
def self.resolve_fixtures_file(explicit)

lib/fixturebot/rails/cli.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@
55
module FixtureBot
66
module Rails
77
class CLI < FixtureBot::CLI
8-
desc "generate FIXTURES_FILE [OUTPUT_DIR]", "Generate YAML fixtures from a DSL file"
9-
def generate(fixtures_path, output_dir = "test/fixtures")
8+
desc "compile FIXTURES_FILE [OUTPUT_DIR]", "Compile FixtureBot DSL to YAML fixture files"
9+
def compile(fixtures_path, output_dir = "test/fixtures")
1010
unless File.exist?(fixtures_path)
1111
raise Thor::Error, "Fixtures file not found: #{fixtures_path}"
1212
end
1313

1414
schema = SchemaLoader.load
1515
fixture_set = FixtureBot.define_from_file(schema, fixtures_path)
16-
YamlDumper.new(fixture_set).dump(output_dir)
16+
Compiler.new(fixture_set).compile(output_dir)
1717

18-
say "Generated fixtures in #{output_dir}/"
18+
say "Compiled fixtures to #{output_dir}/"
1919
fixture_set.tables.each do |table_name, records|
2020
next if records.empty?
2121
say " #{table_name}.yml (#{records.size} records)"

lib/fixturebot/rails/railtie.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ class Railtie < ::Rails::Railtie
77

88
rake_tasks do
99
namespace :fixturebot do
10-
desc "Generate YAML fixture files from FixtureBot DSL"
11-
task generate: :environment do
12-
FixtureBot::Rails.generate
10+
desc "Compile FixtureBot DSL to YAML fixture files"
11+
task compile: :environment do
12+
FixtureBot::Rails.compile
1313
end
1414
end
1515
end

lib/fixturebot/rspec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@
44

55
RSpec.configure do |config|
66
config.before(:suite) do
7-
FixtureBot::Rails.generate
7+
FixtureBot::Rails.compile
88
end
99
end
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
require "tmpdir"
44
require "yaml"
55

6-
RSpec.describe FixtureBot::YamlDumper do
6+
RSpec.describe FixtureBot::Compiler do
77
let(:schema) do
88
FixtureBot::Schema.define do
99
table :users, singular: :user, columns: [:name, :email]
@@ -27,11 +27,11 @@
2727
end
2828
end
2929

30-
let(:dumper) { described_class.new(fixture_set) }
30+
let(:compiler) { described_class.new(fixture_set) }
3131

32-
describe "#dump_table" do
32+
describe "#compile_table" do
3333
it "produces valid YAML with string keys" do
34-
yaml = dumper.dump_table(:users)
34+
yaml = compiler.compile_table(:users)
3535
parsed = YAML.safe_load(yaml)
3636

3737
expect(parsed).to have_key("admin")
@@ -41,11 +41,11 @@
4141
end
4242
end
4343

44-
describe "#dump" do
44+
describe "#compile" do
4545
it "writes per-table YAML files to the output directory" do
4646
dir = Dir.mktmpdir
4747
begin
48-
dumper.dump(dir)
48+
compiler.compile(dir)
4949

5050
expect(File.exist?(File.join(dir, "users.yml"))).to be true
5151
expect(File.exist?(File.join(dir, "posts.yml"))).to be true
@@ -72,7 +72,7 @@
7272
end
7373
end
7474

75-
described_class.new(fs).dump(dir)
75+
described_class.new(fs).compile(dir)
7676

7777
expect(File.exist?(File.join(dir, "users.yml"))).to be true
7878
expect(File.exist?(File.join(dir, "posts.yml"))).to be false
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
require "fixturebot/rails"
44
require "tmpdir"
55

6-
RSpec.describe FixtureBot::Rails, ".generate" do
6+
RSpec.describe FixtureBot::Rails, ".compile" do
77
before do
88
ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
99

@@ -29,7 +29,7 @@
2929
ActiveRecord::Base.connection_pool.disconnect!
3030
end
3131

32-
it "generates YAML fixture files from a DSL file" do
32+
it "compiles YAML fixture files from a DSL file" do
3333
Dir.mktmpdir do |tmpdir|
3434
fixtures_file = File.join(tmpdir, "fixtures.rb")
3535
output_dir = File.join(tmpdir, "fixtures")
@@ -54,7 +54,7 @@
5454
end
5555
RUBY
5656

57-
described_class.generate(fixtures_file: fixtures_file, output_dir: output_dir)
57+
described_class.compile(fixtures_file: fixtures_file, output_dir: output_dir)
5858

5959
users_yaml = YAML.load_file(File.join(output_dir, "users.yml"))
6060
expect(users_yaml.keys).to contain_exactly("alice", "bob")
@@ -82,7 +82,7 @@
8282
end
8383
RUBY
8484

85-
described_class.generate(fixtures_file: fixtures_file, output_dir: output_dir)
85+
described_class.compile(fixtures_file: fixtures_file, output_dir: output_dir)
8686

8787
expect(File.exist?(File.join(output_dir, "users.yml"))).to be true
8888
expect(File.exist?(File.join(output_dir, "posts.yml"))).to be false
@@ -93,7 +93,7 @@
9393
Dir.mktmpdir do |tmpdir|
9494
output_dir = File.join(tmpdir, "fixtures")
9595

96-
described_class.generate(
96+
described_class.compile(
9797
fixtures_file: File.join(tmpdir, "nonexistent.rb"),
9898
output_dir: output_dir
9999
)

0 commit comments

Comments
 (0)