fabrication 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +14 -0
- data/README.markdown +7 -1
- data/Rakefile +19 -0
- data/lib/fabrication.rb +11 -0
- data/lib/fabrication/config.rb +1 -1
- data/lib/fabrication/{cucumber.rb → cucumber/step_fabricator.rb} +2 -7
- data/lib/fabrication/fabricator.rb +6 -1
- data/lib/fabrication/support.rb +1 -1
- data/lib/fabrication/syntax/make.rb +26 -0
- data/lib/fabrication/transform.rb +26 -0
- data/lib/fabrication/version.rb +1 -1
- data/lib/rails/generators/fabrication/cucumber_steps/templates/fabrication_steps.rb +0 -2
- data/lib/rails/generators/fabrication/turnip_steps/templates/fabrication_steps.rb +57 -0
- data/lib/rails/generators/fabrication/turnip_steps/turnip_steps_generator.rb +21 -0
- metadata +156 -135
- data/spec/fabrication/attribute_spec.rb +0 -53
- data/spec/fabrication/config_spec.rb +0 -32
- data/spec/fabrication/cucumber_spec.rb +0 -116
- data/spec/fabrication/fabricator_spec.rb +0 -67
- data/spec/fabrication/generator/active_record_spec.rb +0 -83
- data/spec/fabrication/generator/base_spec.rb +0 -108
- data/spec/fabrication/schematic_spec.rb +0 -199
- data/spec/fabrication/sequencer_spec.rb +0 -98
- data/spec/fabrication/support_spec.rb +0 -54
- data/spec/fabrication_spec.rb +0 -329
- data/spec/fabricators/active_record_fabricator.rb +0 -21
- data/spec/fabricators/cool_object_fabricator.rb +0 -1
- data/spec/fabricators/mongoid_fabricator.rb +0 -36
- data/spec/fabricators/plain_old_ruby_object_fabricator.rb +0 -51
- data/spec/fabricators/sequel_fabricator.rb +0 -15
- data/spec/fabricators/sequencer_fabricator.rb +0 -9
- data/spec/spec_helper.rb +0 -12
- data/spec/support/active_record.rb +0 -65
- data/spec/support/mongoid.rb +0 -74
- data/spec/support/plain_old_ruby_objects.rb +0 -68
- data/spec/support/sequel.rb +0 -22
- data/spec/support/sequel_migrations/001_create_tables.rb +0 -23
@@ -1,21 +0,0 @@
|
|
1
|
-
Fabricator(:parent_active_record_model) do
|
2
|
-
collection_field(:count => 2, :fabricator => :child_active_record_model)
|
3
|
-
dynamic_field { 'dynamic content' }
|
4
|
-
nil_field nil
|
5
|
-
number_field 5
|
6
|
-
string_field 'content'
|
7
|
-
end
|
8
|
-
|
9
|
-
Fabricator(:child_active_record_model) do
|
10
|
-
number_field 10
|
11
|
-
end
|
12
|
-
|
13
|
-
# ActiveRecord Objects
|
14
|
-
Fabricator(:division) do
|
15
|
-
name "Division Name"
|
16
|
-
end
|
17
|
-
|
18
|
-
Fabricator(:squadron, :from => :division)
|
19
|
-
|
20
|
-
Fabricator(:company)
|
21
|
-
Fabricator(:startup, :from => :company)
|
@@ -1 +0,0 @@
|
|
1
|
-
Fabricator(:cool_object, :from => :object)
|
@@ -1,36 +0,0 @@
|
|
1
|
-
Fabricator(:parent_mongoid_document) do
|
2
|
-
collection_field(:count => 2, :fabricator => :child_mongoid_document)
|
3
|
-
dynamic_field { 'dynamic content' }
|
4
|
-
nil_field nil
|
5
|
-
number_field 5
|
6
|
-
string_field 'content'
|
7
|
-
end
|
8
|
-
|
9
|
-
Fabricator(:child_mongoid_document) do
|
10
|
-
number_field 10
|
11
|
-
end
|
12
|
-
|
13
|
-
# Mongoid Documents
|
14
|
-
Fabricator(:author) do
|
15
|
-
name 'George Orwell'
|
16
|
-
books(:count => 4) do |author, i|
|
17
|
-
Fabricate.build(:book, :title => "book title #{i}", :author => author)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
Fabricator(:special_author, :from => :author) do
|
22
|
-
mongoid_dynamic_field 50
|
23
|
-
lazy_dynamic_field { "foo" }
|
24
|
-
end
|
25
|
-
|
26
|
-
Fabricator(:hemingway, :from => :author) do
|
27
|
-
name 'Ernest Hemingway'
|
28
|
-
end
|
29
|
-
|
30
|
-
Fabricator(:book) do
|
31
|
-
title "book title"
|
32
|
-
end
|
33
|
-
|
34
|
-
Fabricator(:publishing_house)
|
35
|
-
Fabricator(:book_promoter)
|
36
|
-
Fabricator(:professional_affiliation)
|
@@ -1,51 +0,0 @@
|
|
1
|
-
Fabricator(:parent_ruby_object) do
|
2
|
-
collection_field(:count => 2, :fabricator => :child_ruby_object)
|
3
|
-
dynamic_field { 'dynamic content' }
|
4
|
-
nil_field nil
|
5
|
-
number_field 5
|
6
|
-
string_field 'content'
|
7
|
-
end
|
8
|
-
|
9
|
-
Fabricator(:child_ruby_object) do
|
10
|
-
number_field 10
|
11
|
-
end
|
12
|
-
|
13
|
-
# Plain Ruby Objects
|
14
|
-
Fabricator(:awesome_object, :from => :object)
|
15
|
-
|
16
|
-
Fabricator(:dog)
|
17
|
-
Fabricator(:greyhound, :from => :dog) do
|
18
|
-
breed "greyhound"
|
19
|
-
locations(:count => 2)
|
20
|
-
end
|
21
|
-
|
22
|
-
Fabricator(:location) do
|
23
|
-
lat 35
|
24
|
-
lng 40
|
25
|
-
end
|
26
|
-
Fabricator(:interesting_location, :from => :location)
|
27
|
-
|
28
|
-
Fabricator(:person) do
|
29
|
-
first_name "John"
|
30
|
-
last_name { Faker::Name.last_name }
|
31
|
-
age { rand(100) }
|
32
|
-
shoes(:count => 10) { |person, i| "shoe #{i}" }
|
33
|
-
location
|
34
|
-
end
|
35
|
-
|
36
|
-
Fabricator(:child, :from => :person) do
|
37
|
-
after_build { |child| child.first_name = 'Johnny' }
|
38
|
-
after_build { |child| child.age = 10 }
|
39
|
-
end
|
40
|
-
|
41
|
-
Fabricator(:senior, :from => :child) do
|
42
|
-
after_build { |senior| senior.age *= 7 }
|
43
|
-
end
|
44
|
-
|
45
|
-
Fabricator(:city) do
|
46
|
-
on_init { init_with('Boulder', 'CO') }
|
47
|
-
end
|
48
|
-
|
49
|
-
Fabricator("Something::Amazing") do
|
50
|
-
stuff "cool"
|
51
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
Fabricator(:parent_sequel_model) do
|
2
|
-
dynamic_field { 'dynamic content' }
|
3
|
-
nil_field nil
|
4
|
-
number_field 5
|
5
|
-
string_field 'content'
|
6
|
-
after_create do |parent|
|
7
|
-
2.times do
|
8
|
-
Fabricate(:child_sequel_model, :parent => parent)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
Fabricator(:child_sequel_model) do
|
14
|
-
number_field 10
|
15
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
require 'rspec'
|
2
|
-
require 'fabrication'
|
3
|
-
require 'ffaker'
|
4
|
-
|
5
|
-
# Requires supporting files with custom matchers and macros, etc,
|
6
|
-
# in ./support/ and its subdirectories.
|
7
|
-
Dir[File.expand_path(File.join(File.dirname(__FILE__),'support','**','*.rb'))].each {|f| require f}
|
8
|
-
|
9
|
-
RSpec.configure do |config|
|
10
|
-
config.before(:all) { TestMigration.up }
|
11
|
-
config.before(:all) { clear_mongodb }
|
12
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
require 'active_record'
|
2
|
-
|
3
|
-
dbconfig = {
|
4
|
-
:adapter => 'sqlite3',
|
5
|
-
:database => ':memory:'
|
6
|
-
}
|
7
|
-
|
8
|
-
ActiveRecord::Base.establish_connection(dbconfig)
|
9
|
-
ActiveRecord::Migration.verbose = false
|
10
|
-
|
11
|
-
class TestMigration < ActiveRecord::Migration
|
12
|
-
def self.up
|
13
|
-
create_table :child_active_record_models, :force => true do |t|
|
14
|
-
t.column :parent_active_record_model_id, :integer
|
15
|
-
t.column :number_field, :integer
|
16
|
-
end
|
17
|
-
|
18
|
-
create_table :parent_active_record_models, :force => true do |t|
|
19
|
-
t.column :before_save_value, :integer
|
20
|
-
t.column :dynamic_field, :string
|
21
|
-
t.column :nil_field, :string
|
22
|
-
t.column :number_field, :integer
|
23
|
-
t.column :string_field, :string
|
24
|
-
end
|
25
|
-
|
26
|
-
create_table :companies, :force => true do |t|
|
27
|
-
t.column :name, :string
|
28
|
-
t.column :city, :string
|
29
|
-
end
|
30
|
-
|
31
|
-
create_table :divisions, :force => true do |t|
|
32
|
-
t.column :name, :string
|
33
|
-
t.references :company
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def self.down
|
38
|
-
drop_table :child_active_record_models
|
39
|
-
drop_table :parent_active_record_models
|
40
|
-
drop_table :companies
|
41
|
-
drop_table :divisions
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
class ChildActiveRecordModel < ActiveRecord::Base
|
46
|
-
belongs_to :parent, :class_name => 'ParentActiveRecordModel'
|
47
|
-
end
|
48
|
-
|
49
|
-
class ParentActiveRecordModel < ActiveRecord::Base
|
50
|
-
has_many :collection_field, :class_name => 'ChildActiveRecordModel'
|
51
|
-
|
52
|
-
before_save do
|
53
|
-
self.before_save_value = 11
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
class Company < ActiveRecord::Base
|
58
|
-
has_many :divisions
|
59
|
-
|
60
|
-
attr_accessor :non_field
|
61
|
-
end
|
62
|
-
|
63
|
-
class Division < ActiveRecord::Base
|
64
|
-
belongs_to :company
|
65
|
-
end
|
data/spec/support/mongoid.rb
DELETED
@@ -1,74 +0,0 @@
|
|
1
|
-
require 'mongoid'
|
2
|
-
|
3
|
-
Mongoid.configure do |config|
|
4
|
-
config.allow_dynamic_fields = true
|
5
|
-
config.master = Mongo::Connection.new.db("fabrication_test")
|
6
|
-
end
|
7
|
-
|
8
|
-
def clear_mongodb
|
9
|
-
Mongoid.master.collections.select {|c| c.name !~ /system/ }.each(&:drop)
|
10
|
-
end
|
11
|
-
|
12
|
-
class ChildMongoidDocument
|
13
|
-
include Mongoid::Document
|
14
|
-
|
15
|
-
field :number_field
|
16
|
-
|
17
|
-
referenced_in :parent, :class_name => 'ParentMongoidDocument'
|
18
|
-
end
|
19
|
-
|
20
|
-
class ParentMongoidDocument
|
21
|
-
include Mongoid::Document
|
22
|
-
|
23
|
-
field :before_save_value
|
24
|
-
field :dynamic_field
|
25
|
-
field :nil_field
|
26
|
-
field :number_field
|
27
|
-
field :string_field
|
28
|
-
|
29
|
-
references_many :collection_field, :class_name => 'ChildMongoidDocument', :inverse_of => :parent
|
30
|
-
|
31
|
-
before_save do
|
32
|
-
self.before_save_value = 11
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
class Author
|
37
|
-
include Mongoid::Document
|
38
|
-
|
39
|
-
embeds_many :books
|
40
|
-
|
41
|
-
field :name
|
42
|
-
field :handle
|
43
|
-
end
|
44
|
-
|
45
|
-
class Book
|
46
|
-
include Mongoid::Document
|
47
|
-
|
48
|
-
field :title
|
49
|
-
|
50
|
-
embedded_in :author, :inverse_of => :books
|
51
|
-
end
|
52
|
-
|
53
|
-
class PublishingHouse
|
54
|
-
include Mongoid::Document
|
55
|
-
|
56
|
-
referenced_in :professional_affiliation
|
57
|
-
embeds_many :book_promoters
|
58
|
-
|
59
|
-
field :name
|
60
|
-
end
|
61
|
-
|
62
|
-
class BookPromoter
|
63
|
-
include Mongoid::Document
|
64
|
-
|
65
|
-
embedded_in :publishing_house
|
66
|
-
|
67
|
-
field :name
|
68
|
-
end
|
69
|
-
|
70
|
-
class ProfessionalAffiliation
|
71
|
-
include Mongoid::Document
|
72
|
-
|
73
|
-
references_many :publishing_houses
|
74
|
-
end
|
@@ -1,68 +0,0 @@
|
|
1
|
-
require 'ostruct'
|
2
|
-
|
3
|
-
class ParentRubyObject
|
4
|
-
attr_accessor \
|
5
|
-
:before_save_value,
|
6
|
-
:collection_field,
|
7
|
-
:dynamic_field,
|
8
|
-
:nil_field,
|
9
|
-
:number_field,
|
10
|
-
:string_field
|
11
|
-
|
12
|
-
def initialize
|
13
|
-
self.before_save_value = 11
|
14
|
-
end
|
15
|
-
|
16
|
-
def persisted?; true end
|
17
|
-
end
|
18
|
-
|
19
|
-
class ChildRubyObject
|
20
|
-
attr_accessor \
|
21
|
-
:parent,
|
22
|
-
:number_field
|
23
|
-
|
24
|
-
def persisted?; true end
|
25
|
-
end
|
26
|
-
|
27
|
-
class Dog
|
28
|
-
attr_accessor :name, :breed, :locations
|
29
|
-
end
|
30
|
-
|
31
|
-
class Location
|
32
|
-
attr_accessor :lat, :lng
|
33
|
-
end
|
34
|
-
|
35
|
-
class Person
|
36
|
-
attr_accessor :age, :first_name, :last_name, :shoes, :location
|
37
|
-
end
|
38
|
-
|
39
|
-
class City
|
40
|
-
attr_accessor :city, :state
|
41
|
-
|
42
|
-
def initialize(city, state)
|
43
|
-
self.city = city
|
44
|
-
self.state = state
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
class Address
|
49
|
-
attr_accessor :city, :state
|
50
|
-
end
|
51
|
-
|
52
|
-
class Contact
|
53
|
-
attr_accessor :name, :address
|
54
|
-
end
|
55
|
-
|
56
|
-
module Something
|
57
|
-
class Amazing
|
58
|
-
attr_accessor :stuff
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
class Sequencer
|
63
|
-
attr_accessor :simple_iterator, :param_iterator, :block_iterator
|
64
|
-
|
65
|
-
class Namespaced
|
66
|
-
attr_accessor :iterator
|
67
|
-
end
|
68
|
-
end
|
data/spec/support/sequel.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'sequel'
|
2
|
-
|
3
|
-
DB = Sequel.sqlite # in memory
|
4
|
-
Sequel.extension :migration
|
5
|
-
Sequel::Migrator.run(DB, 'spec/support/sequel_migrations', :current => 0)
|
6
|
-
|
7
|
-
class ChildSequelModel < Sequel::Model
|
8
|
-
many_to_one :parent, :class => :ParentSequelModel, :key => :parent_sequel_model_id
|
9
|
-
|
10
|
-
def persisted?; !new? end
|
11
|
-
end
|
12
|
-
|
13
|
-
class ParentSequelModel < Sequel::Model
|
14
|
-
one_to_many :collection_field, :class => :ChildSequelModel, :key => :parent_sequel_model_id
|
15
|
-
|
16
|
-
def persisted?; !new? end
|
17
|
-
|
18
|
-
def before_save
|
19
|
-
self.before_save_value = 11
|
20
|
-
super
|
21
|
-
end
|
22
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
Sequel.migration do
|
2
|
-
up do
|
3
|
-
create_table :child_sequel_models do
|
4
|
-
primary_key :id
|
5
|
-
Integer :parent_sequel_model_id
|
6
|
-
Integer :number_field
|
7
|
-
end
|
8
|
-
|
9
|
-
create_table :parent_sequel_models do
|
10
|
-
primary_key :id
|
11
|
-
Integer :before_save_value
|
12
|
-
String :dynamic_field
|
13
|
-
String :nil_field
|
14
|
-
Integer :number_field
|
15
|
-
String :string_field
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
down do
|
20
|
-
drop_table :child_sequel_models
|
21
|
-
drop_table :parent_sequel_models
|
22
|
-
end
|
23
|
-
end
|