to_factory 2.1.0 → 3.0.0.pre.pre
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.
- checksums.yaml +5 -5
- data/.github/workflows/test.yml +35 -0
- data/.rubocop-disabled.yml +95 -0
- data/.rubocop-enabled.yml +1194 -0
- data/.rubocop.yml +938 -0
- data/CHANGELOG.md +11 -0
- data/Gemfile +6 -1
- data/README.md +2 -11
- data/Rakefile +17 -9
- data/lib/to_factory/collation.rb +9 -9
- data/lib/to_factory/file_sync.rb +10 -10
- data/lib/to_factory/file_writer.rb +1 -1
- data/lib/to_factory/finders/factory.rb +1 -1
- data/lib/to_factory/finders/model.rb +2 -4
- data/lib/to_factory/generation/attribute.rb +6 -10
- data/lib/to_factory/generation/factory.rb +3 -3
- data/lib/to_factory/klass_inference.rb +4 -6
- data/lib/to_factory/options_parser.rb +4 -4
- data/lib/to_factory/parsing/file.rb +85 -14
- data/lib/to_factory/representation.rb +9 -6
- data/lib/to_factory/version.rb +1 -1
- data/lib/to_factory.rb +7 -8
- data/spec/db/migrate/1_create_users.rb +4 -4
- data/spec/db/migrate/2_create_projects.rb +4 -4
- data/spec/db/migrate/3_create_not_namespaced.rb +4 -4
- data/spec/db/migrate/4_add_birthday_to_users.rb +3 -3
- data/spec/db/migrate/5_add_serialized_attributes_to_users.rb +3 -3
- data/spec/example_factories/admin.rb +6 -6
- data/spec/example_factories/admin_with_header.rb +7 -7
- data/spec/example_factories/inherited_project_with_header.rb +7 -0
- data/spec/example_factories/project_with_header.rb +4 -4
- data/spec/example_factories/user.rb +5 -5
- data/spec/example_factories/user_admin.rb +11 -11
- data/spec/example_factories/user_admin_root.rb +12 -13
- data/spec/example_factories/user_admin_super_admin.rb +6 -6
- data/spec/example_factories/user_admin_with_header.rb +12 -12
- data/spec/example_factories/user_with_header.rb +6 -6
- data/spec/integration/empty_factory_file_spec.rb +2 -2
- data/spec/integration/file_sync_spec.rb +16 -17
- data/spec/integration/file_writer_spec.rb +13 -9
- data/spec/integration/lint_spec.rb +4 -3
- data/spec/integration/multiple_to_factory_calls_spec.rb +37 -35
- data/spec/integration/non_active_record_classes_spec.rb +40 -0
- data/spec/integration/to_factory_method_spec.rb +21 -18
- data/spec/spec_helper.rb +8 -8
- data/spec/support/data_creation.rb +11 -13
- data/spec/support/match_sexp.rb +0 -1
- data/spec/support/non_active_record/inherited_project.rb +3 -0
- data/spec/support/non_active_record/project.rb +3 -0
- data/spec/support/non_active_record/some_other_service_inheriting_from_something_else.rb +4 -0
- data/spec/support/non_active_record/some_service.rb +2 -0
- data/spec/support/non_active_record/something_else.rb +2 -0
- data/spec/support/ruby_parser_exception_causing_string.rb +29 -29
- data/spec/unit/collation_spec.rb +9 -10
- data/spec/unit/file_writer_spec.rb +4 -8
- data/spec/unit/finders/factory_spec.rb +7 -9
- data/spec/unit/finders/model_spec.rb +6 -9
- data/spec/unit/generation/attribute_spec.rb +11 -12
- data/spec/unit/generation/factory_spec.rb +14 -16
- data/spec/unit/parsing/file_spec.rb +9 -9
- data/spec/unit/parsing/klass_inference_spec.rb +5 -7
- data/to_factory.gemspec +14 -10
- metadata +89 -31
- data/.travis.yml +0 -16
- data/lib/to_factory/parsing/syntax.rb +0 -83
@@ -1,9 +1,9 @@
|
|
1
|
-
|
2
|
-
factory(:admin, :
|
3
|
-
birthday "2014-07-08T15:30 UTC"
|
4
|
-
email "admin@example.com"
|
5
|
-
name "Admin"
|
6
|
-
some_attributes
|
7
|
-
some_id 9
|
1
|
+
FactoryBot.define do
|
2
|
+
factory(:admin, parent: :"to_factory/user") do
|
3
|
+
birthday { "2014-07-08T15:30 UTC" }
|
4
|
+
email { "admin@example.com" }
|
5
|
+
name {"Admin" }
|
6
|
+
some_attributes { {a: 1 } }
|
7
|
+
some_id { 9 }
|
8
8
|
end
|
9
9
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
factory(:"to_factory/user") do
|
2
|
-
birthday "2014-07-08T15:30 UTC"
|
3
|
-
email "test@example.com"
|
4
|
-
name "Jeff"
|
5
|
-
some_attributes
|
6
|
-
some_id 8
|
2
|
+
birthday {"2014-07-08T15:30 UTC"}
|
3
|
+
email {"test@example.com"}
|
4
|
+
name {"Jeff"}
|
5
|
+
some_attributes {{a: 1}}
|
6
|
+
some_id { 8 }
|
7
7
|
end
|
@@ -1,15 +1,15 @@
|
|
1
1
|
factory(:"to_factory/user") do
|
2
|
-
birthday "2014-07-08T15:30 UTC"
|
3
|
-
email "test@example.com"
|
4
|
-
name "Jeff"
|
5
|
-
some_attributes
|
6
|
-
some_id 8
|
2
|
+
birthday { "2014-07-08T15:30 UTC" }
|
3
|
+
email { "test@example.com" }
|
4
|
+
name { "Jeff" }
|
5
|
+
some_attributes { {a: 1 } }
|
6
|
+
some_id { 8 }
|
7
7
|
end
|
8
8
|
|
9
|
-
factory(:admin, :
|
10
|
-
birthday "2014-07-08T15:30 UTC"
|
11
|
-
email "admin@example.com"
|
12
|
-
name "Admin"
|
13
|
-
some_attributes
|
14
|
-
some_id 9
|
9
|
+
factory(:admin, parent: :"to_factory/user") do
|
10
|
+
birthday {"2014-07-08T15:30 UTC"}
|
11
|
+
email {"admin@example.com"}
|
12
|
+
name {"Admin"}
|
13
|
+
some_attributes { {a: 1 } }
|
14
|
+
some_id { 9 }
|
15
15
|
end
|
@@ -1,22 +1,21 @@
|
|
1
|
-
|
1
|
+
FactoryBot.define do
|
2
2
|
factory(:"to_factory/user") do
|
3
|
-
name
|
3
|
+
name {"User"}
|
4
4
|
end
|
5
5
|
|
6
|
-
factory(:admin, :
|
7
|
-
name
|
6
|
+
factory(:admin, parent: :"to_factory/user") do
|
7
|
+
name {"Admin"}
|
8
8
|
end
|
9
9
|
|
10
|
-
factory(:root, :
|
11
|
-
birthday "2014-07-08T15:30 UTC"
|
12
|
-
email "test@example.com"
|
13
|
-
name "Jeff"
|
14
|
-
some_attributes
|
15
|
-
some_id 8
|
10
|
+
factory(:root, parent: :"to_factory/user") do
|
11
|
+
birthday {"2014-07-08T15:30 UTC"}
|
12
|
+
email {"test@example.com"}
|
13
|
+
name {"Jeff"}
|
14
|
+
some_attributes {{a: 1}}
|
15
|
+
some_id { 8 }
|
16
16
|
end
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
name("Super Admin")
|
18
|
+
factory(:super_admin, parent: :admin) do
|
19
|
+
name {"Super Admin"}
|
21
20
|
end
|
22
21
|
end
|
@@ -1,13 +1,13 @@
|
|
1
|
-
|
1
|
+
FactoryBot.define do
|
2
2
|
factory(:"to_factory/user") do
|
3
|
-
name "User"
|
3
|
+
name {"User"}
|
4
4
|
end
|
5
5
|
|
6
|
-
factory(:admin, :
|
7
|
-
name "Admin"
|
6
|
+
factory(:admin, parent: :"to_factory/user") do
|
7
|
+
name {"Admin" }
|
8
8
|
end
|
9
9
|
|
10
|
-
factory(:super_admin, :
|
11
|
-
name "Super Admin"
|
10
|
+
factory(:super_admin, parent: :admin) do
|
11
|
+
name {"Super Admin"}
|
12
12
|
end
|
13
13
|
end
|
@@ -1,17 +1,17 @@
|
|
1
|
-
|
1
|
+
FactoryBot.define do
|
2
2
|
factory(:"to_factory/user") do
|
3
|
-
birthday "2014-07-08T15:30 UTC"
|
4
|
-
email "test@example.com"
|
5
|
-
name "Jeff"
|
6
|
-
some_attributes
|
7
|
-
some_id 8
|
3
|
+
birthday {"2014-07-08T15:30 UTC"}
|
4
|
+
email {"test@example.com"}
|
5
|
+
name {"Jeff"}
|
6
|
+
some_attributes {{a: 1}}
|
7
|
+
some_id { 8 }
|
8
8
|
end
|
9
9
|
|
10
|
-
factory(:admin, :
|
11
|
-
birthday "2014-07-08T15:30 UTC"
|
12
|
-
email "admin@example.com"
|
13
|
-
name "Admin"
|
14
|
-
some_attributes
|
15
|
-
some_id 9
|
10
|
+
factory(:admin, parent: :"to_factory/user") do
|
11
|
+
birthday {"2014-07-08T15:30 UTC"}
|
12
|
+
email {"admin@example.com"}
|
13
|
+
name {"Admin"}
|
14
|
+
some_attributes {{a: 1}}
|
15
|
+
some_id { 9 }
|
16
16
|
end
|
17
17
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
|
1
|
+
FactoryBot.define do
|
2
2
|
factory(:"to_factory/user") do
|
3
|
-
birthday "2014-07-08T15:30 UTC"
|
4
|
-
email "test@example.com"
|
5
|
-
name "Jeff"
|
6
|
-
some_attributes
|
7
|
-
some_id 8
|
3
|
+
birthday { "2014-07-08T15:30 UTC" }
|
4
|
+
email { "test@example.com" }
|
5
|
+
name { "Jeff" }
|
6
|
+
some_attributes { {:a => 1} }
|
7
|
+
some_id { 8 }
|
8
8
|
end
|
9
9
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
describe "Empty File spec" do
|
2
|
-
let(:user) { create_user!
|
2
|
+
let(:user) { create_user! }
|
3
3
|
|
4
4
|
context "with an empty factory file" do
|
5
5
|
before do
|
@@ -13,7 +13,7 @@ describe "Empty File spec" do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
it "doesn't blow up" do
|
16
|
-
ToFactory(:
|
16
|
+
ToFactory(empty: OpenStruct.new({ attributes: {} }), user: user)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
describe "FileSync" do
|
2
|
-
let(:user) { create_user!
|
3
|
-
let(:admin) { create_admin!
|
4
|
-
let(:project) { create_project!
|
2
|
+
let(:user) { create_user! }
|
3
|
+
let(:admin) { create_admin! }
|
4
|
+
let(:project) { create_project! }
|
5
5
|
let(:expected_user_file) { File.read("./spec/example_factories/user.rb") }
|
6
6
|
let(:expected_user_with_header_file) { File.read("./spec/example_factories/user_with_header.rb") }
|
7
7
|
let(:expected_admin_file) { File.read("./spec/example_factories/admin.rb") }
|
@@ -9,11 +9,15 @@ describe "FileSync" do
|
|
9
9
|
let(:user_admin_with_header) { File.read("./spec/example_factories/user_admin_with_header.rb") }
|
10
10
|
|
11
11
|
def user_file
|
12
|
-
File.read("./tmp/factories/to_factory/user.rb")
|
12
|
+
File.read("./tmp/factories/to_factory/user.rb")
|
13
|
+
rescue
|
14
|
+
nil
|
13
15
|
end
|
14
16
|
|
15
17
|
def project_file
|
16
|
-
File.read("./tmp/factories/to_factory/project.rb")
|
18
|
+
File.read("./tmp/factories/to_factory/project.rb")
|
19
|
+
rescue
|
20
|
+
nil
|
17
21
|
end
|
18
22
|
|
19
23
|
context "with no arguments" do
|
@@ -26,7 +30,7 @@ describe "FileSync" do
|
|
26
30
|
sync = ToFactory::FileSync.new
|
27
31
|
sync.perform
|
28
32
|
|
29
|
-
expect(user_file
|
33
|
+
expect(user_file).to match_sexp expected_user_with_header_file
|
30
34
|
end
|
31
35
|
end
|
32
36
|
|
@@ -35,13 +39,11 @@ describe "FileSync" do
|
|
35
39
|
sync = ToFactory::FileSync.new(user)
|
36
40
|
sync.perform
|
37
41
|
|
38
|
-
expect(user_file
|
42
|
+
expect(user_file).to match_sexp user_with_header
|
39
43
|
expect(project_file).to eq nil
|
40
44
|
end
|
41
45
|
end
|
42
46
|
|
43
|
-
|
44
|
-
|
45
47
|
context "with a pre-existing file" do
|
46
48
|
let(:sync) { ToFactory::FileSync.new(user) }
|
47
49
|
before do
|
@@ -50,26 +52,23 @@ describe "FileSync" do
|
|
50
52
|
end
|
51
53
|
|
52
54
|
it "raises an error" do
|
53
|
-
expect
|
55
|
+
expect { sync.perform }.to raise_error ToFactory::AlreadyExists
|
54
56
|
end
|
55
57
|
|
56
58
|
context "with a named factory" do
|
57
59
|
it do
|
58
|
-
sync = ToFactory::FileSync.new(
|
60
|
+
sync = ToFactory::FileSync.new(admin: admin)
|
59
61
|
sync.perform
|
60
62
|
|
61
63
|
parser = ToFactory::Parsing::File.new(user_file)
|
62
64
|
result = parser.parse
|
63
|
-
admin= result.find{|r| r.name == "admin"}
|
64
|
-
user= result.find{|r| r.name == "to_factory/user"}
|
65
|
-
|
65
|
+
admin = result.find { |r| r.name == "admin" }
|
66
|
+
user = result.find { |r| r.name == "to_factory/user" }
|
66
67
|
|
67
68
|
expect(admin.definition).to match_sexp expected_admin_file
|
68
69
|
expect(user.definition).to match_sexp expected_user_file
|
69
70
|
|
70
|
-
expect
|
71
|
-
sync.perform
|
72
|
-
}).to raise_error ToFactory::AlreadyExists
|
71
|
+
expect { sync.perform }.to raise_error ToFactory::AlreadyExists
|
73
72
|
end
|
74
73
|
end
|
75
74
|
end
|
@@ -1,18 +1,22 @@
|
|
1
1
|
describe ToFactory::FileWriter do
|
2
|
-
let(:
|
3
|
-
let(:
|
4
|
-
let(:user_file_contents) { File.read "./tmp/factories/to_factory/user.rb"}
|
2
|
+
let(:file_writer) { ToFactory::FileWriter.new }
|
3
|
+
let(:user_file_contents) { File.read "./tmp/factories/to_factory/user.rb" }
|
5
4
|
let!(:user) { create_user! }
|
6
|
-
let!(:admin) { create_admin!
|
5
|
+
let!(:admin) { create_admin! }
|
6
|
+
let(:file_sync) { ToFactory::FileSync.new }
|
7
|
+
let(:representations) { file_sync.all_representations }
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
#sanity check generation isn't broken
|
9
|
+
let(:expected) { File.read "./spec/example_factories/user_with_header.rb" }
|
10
|
+
|
11
|
+
before do
|
12
|
+
# sanity check generation isn't broken
|
12
13
|
expect(representations.keys).to eq ["to_factory/user"]
|
13
14
|
expect(representations.values[0][0]).to be_a ToFactory::Representation
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'writes correctly' do
|
18
|
+
file_writer.write representations
|
14
19
|
|
15
|
-
fw.write representations
|
16
20
|
expect(user_file_contents).to match_sexp expected
|
17
21
|
end
|
18
22
|
end
|
@@ -1,12 +1,13 @@
|
|
1
1
|
context "full integration" do
|
2
2
|
let(:user) do
|
3
|
-
ToFactory::User.create :
|
3
|
+
ToFactory::User.create name: "Jeff", email: "test@example.com", some_id: 8, birthday: Time.now
|
4
4
|
end
|
5
5
|
|
6
6
|
it "#to_factory linting the output" do
|
7
7
|
ToFactory(user)
|
8
|
+
require 'factory_bot'
|
9
|
+
|
8
10
|
load "./tmp/factories/to_factory/user.rb"
|
9
|
-
|
11
|
+
FactoryBot.lint
|
10
12
|
end
|
11
13
|
end
|
12
|
-
|
@@ -1,11 +1,13 @@
|
|
1
1
|
describe ToFactory do
|
2
|
-
let!(:user)
|
2
|
+
let!(:user) { create_user! }
|
3
3
|
|
4
4
|
def user_file
|
5
|
-
File.read("./tmp/factories/to_factory/user.rb")
|
5
|
+
File.read("./tmp/factories/to_factory/user.rb")
|
6
|
+
rescue
|
7
|
+
nil
|
6
8
|
end
|
7
9
|
|
8
|
-
let(:expected_user_file) { File.read "./spec/example_factories/user_with_header.rb"}
|
10
|
+
let(:expected_user_file) { File.read "./spec/example_factories/user_with_header.rb" }
|
9
11
|
|
10
12
|
context "single call" do
|
11
13
|
before do
|
@@ -24,21 +26,21 @@ describe ToFactory do
|
|
24
26
|
|
25
27
|
it "renders two factories correctly" do
|
26
28
|
expect(user_file).to eq <<-FACTORY.strip_heredoc
|
27
|
-
|
29
|
+
FactoryBot.define do
|
28
30
|
factory(:"to_factory/user") do
|
29
|
-
birthday
|
30
|
-
email
|
31
|
-
name
|
32
|
-
some_attributes
|
33
|
-
some_id
|
31
|
+
birthday { "2014-07-08T15:30 UTC" }
|
32
|
+
email { "test@example.com" }
|
33
|
+
name { "Jeff" }
|
34
|
+
some_attributes { { :a => 1 } }
|
35
|
+
some_id { 8 }
|
34
36
|
end
|
35
37
|
|
36
38
|
factory(:user_2, :parent => :"to_factory/user") do
|
37
|
-
birthday "2014-07-08T15:30 UTC"
|
38
|
-
email "test@example.com"
|
39
|
-
name "Jeff"
|
40
|
-
some_attributes
|
41
|
-
some_id 8
|
39
|
+
birthday { "2014-07-08T15:30 UTC" }
|
40
|
+
email { "test@example.com" }
|
41
|
+
name { "Jeff" }
|
42
|
+
some_attributes { {:a => 1} }
|
43
|
+
some_id { 8 }
|
42
44
|
end
|
43
45
|
end
|
44
46
|
FACTORY
|
@@ -55,37 +57,37 @@ describe ToFactory do
|
|
55
57
|
|
56
58
|
it "renders multiple factories correctly" do
|
57
59
|
expect(user_file).to match_sexp <<-FACTORY
|
58
|
-
|
60
|
+
FactoryBot.define do
|
59
61
|
factory(:"to_factory/user") do
|
60
|
-
birthday
|
61
|
-
email
|
62
|
-
name
|
63
|
-
some_attributes
|
64
|
-
some_id
|
62
|
+
birthday { "2014-07-08T15:30 UTC" }
|
63
|
+
email { "test@example.com" }
|
64
|
+
name { "Jeff" }
|
65
|
+
some_attributes { {:a => 1} }
|
66
|
+
some_id { 8 }
|
65
67
|
end
|
66
68
|
|
67
69
|
factory(:user_2, :parent => :"to_factory/user") do
|
68
|
-
birthday
|
69
|
-
email
|
70
|
-
name
|
71
|
-
some_attributes
|
72
|
-
some_id
|
70
|
+
birthday { "2014-07-08T15:30 UTC" }
|
71
|
+
email { "test@example.com" }
|
72
|
+
name { "Jeff" }
|
73
|
+
some_attributes { {:a => 1} }
|
74
|
+
some_id { 8 }
|
73
75
|
end
|
74
76
|
|
75
77
|
factory(:user_3, :parent => :"to_factory/user") do
|
76
|
-
birthday
|
77
|
-
email
|
78
|
-
name
|
79
|
-
some_attributes
|
80
|
-
some_id
|
78
|
+
birthday { "2014-07-08T15:30 UTC" }
|
79
|
+
email { "test@example.com" }
|
80
|
+
name { "Jeff" }
|
81
|
+
some_attributes { {:a => 1} }
|
82
|
+
some_id { 8 }
|
81
83
|
end
|
82
84
|
|
83
85
|
factory(:user_4, :parent => :"to_factory/user") do
|
84
|
-
birthday "2014-07-08T15:30 UTC"
|
85
|
-
email "test@example.com"
|
86
|
-
name "Jeff"
|
87
|
-
some_attributes
|
88
|
-
some_id 8
|
86
|
+
birthday { "2014-07-08T15:30 UTC" }
|
87
|
+
email { "test@example.com" }
|
88
|
+
name { "Jeff" }
|
89
|
+
some_attributes { {:a => 1} }
|
90
|
+
some_id { 8 }
|
89
91
|
end
|
90
92
|
end
|
91
93
|
FACTORY
|
@@ -0,0 +1,40 @@
|
|
1
|
+
describe "non active record classes" do
|
2
|
+
let!(:project) { create_project! }
|
3
|
+
|
4
|
+
def project_file
|
5
|
+
File.read("./tmp/factories/to_factory/project.rb")
|
6
|
+
rescue
|
7
|
+
nil
|
8
|
+
end
|
9
|
+
|
10
|
+
def inherited_project_file
|
11
|
+
File.read("./tmp/factories/to_factory/inherited_project.rb")
|
12
|
+
rescue
|
13
|
+
nil
|
14
|
+
end
|
15
|
+
|
16
|
+
let(:expected_project_file) { File.read "./spec/example_factories/project_with_header.rb" }
|
17
|
+
let(:expected_inherited_project_file) { File.read "./spec/example_factories/inherited_project_with_header.rb" }
|
18
|
+
|
19
|
+
context "given a folder with non active record models in" do
|
20
|
+
before do
|
21
|
+
ToFactory.models = "./spec/support/non_active_record"
|
22
|
+
ToFactory()
|
23
|
+
end
|
24
|
+
|
25
|
+
it "creates an ordinary factory correctly" do
|
26
|
+
expect(project_file).to match_sexp expected_project_file
|
27
|
+
end
|
28
|
+
|
29
|
+
context "STI" do
|
30
|
+
it "creates a single factory correctly" do
|
31
|
+
expect(inherited_project_file).to match_sexp expected_inherited_project_file
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
it "doesn't create other factories" do
|
36
|
+
count = Dir.glob("./tmp/factories/*.rb").length
|
37
|
+
expect(count).to eq 0
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -1,28 +1,31 @@
|
|
1
1
|
describe ToFactory do
|
2
2
|
let!(:user) { create_user! }
|
3
|
-
let!(:project) { create_project!}
|
3
|
+
let!(:project) { create_project! }
|
4
4
|
|
5
5
|
def user_file
|
6
|
-
File.read("./tmp/factories/to_factory/user.rb")
|
6
|
+
File.read("./tmp/factories/to_factory/user.rb")
|
7
|
+
rescue
|
8
|
+
nil
|
7
9
|
end
|
8
10
|
|
9
11
|
def project_file
|
10
|
-
File.read("./tmp/factories/to_factory/project.rb")
|
12
|
+
File.read("./tmp/factories/to_factory/project.rb")
|
13
|
+
rescue
|
14
|
+
nil
|
11
15
|
end
|
12
16
|
|
13
|
-
let(:expected_user_file) { File.read "./spec/example_factories/user_with_header.rb"}
|
14
|
-
let(:expected_project_file) { File.read "./spec/example_factories/project_with_header.rb"}
|
17
|
+
let(:expected_user_file) { File.read "./spec/example_factories/user_with_header.rb" }
|
18
|
+
let(:expected_project_file) { File.read "./spec/example_factories/project_with_header.rb" }
|
15
19
|
|
16
20
|
describe "ToFactory.definitions" do
|
17
21
|
it do
|
18
22
|
ToFactory()
|
19
23
|
expect(ToFactory.definitions).to match_array ["to_factory/user", "to_factory/project"]
|
20
24
|
end
|
21
|
-
|
22
25
|
end
|
23
26
|
|
24
27
|
describe "ToFactory.definition_for" do
|
25
|
-
|
28
|
+
let(:expected_user_file) { File.read "./spec/example_factories/user.rb" }
|
26
29
|
it do
|
27
30
|
expect(ToFactory.definition_for user).to match_sexp expected_user_file
|
28
31
|
end
|
@@ -33,35 +36,35 @@ describe ToFactory do
|
|
33
36
|
end
|
34
37
|
|
35
38
|
it "raises a not found error" do
|
36
|
-
expect
|
39
|
+
expect { ToFactory.definition_for :"to_factory/user" }.to raise_error ToFactory::NotFoundError
|
37
40
|
end
|
38
41
|
end
|
39
42
|
|
40
43
|
describe "Object#ToFactory" do
|
41
44
|
context "with multiple levels of parent classes" do
|
42
|
-
let(:filename) { "spec/example_factories/#{'user_admin_super_admin'}.rb"}
|
45
|
+
let(:filename) { "spec/example_factories/#{'user_admin_super_admin'}.rb" }
|
43
46
|
|
44
47
|
it "gets the output order correct" do
|
45
48
|
output = "./tmp/factories/to_factory/user.rb"
|
46
49
|
`mkdir -p ./tmp/factories/to_factory`
|
47
50
|
`cp #{filename} #{output}`
|
48
51
|
|
49
|
-
ToFactory(:
|
52
|
+
ToFactory(root: user)
|
50
53
|
|
51
54
|
expected = File.read "spec/example_factories/#{'user_admin_root'}.rb"
|
52
55
|
|
53
|
-
#user, admin, super_admin, root
|
56
|
+
# user, admin, super_admin, root
|
54
57
|
expect(File.read(output)).to match_sexp expected
|
55
58
|
end
|
56
59
|
end
|
57
60
|
|
58
61
|
it "generates all factories" do
|
59
62
|
ToFactory()
|
60
|
-
#simple check for equivalent ruby
|
63
|
+
# simple check for equivalent ruby
|
61
64
|
expect(user_file) .to match_sexp expected_user_file
|
62
65
|
expect(project_file).to match_sexp expected_project_file
|
63
66
|
|
64
|
-
#once we are sure output is equivalent ruby, check output is identical
|
67
|
+
# once we are sure output is equivalent ruby, check output is identical
|
65
68
|
expect(user_file.chomp) .to eq expected_user_file.chomp
|
66
69
|
expect(project_file.chomp).to eq expected_project_file.chomp
|
67
70
|
end
|
@@ -77,13 +80,13 @@ describe ToFactory do
|
|
77
80
|
end
|
78
81
|
|
79
82
|
it "ignores specified classes" do
|
80
|
-
ToFactory(:
|
83
|
+
ToFactory(exclude: ToFactory::User)
|
81
84
|
expect(user_file).to be_nil
|
82
85
|
expect(project_file).to be_present
|
83
86
|
end
|
84
87
|
|
85
88
|
it "ignores specified classes - sanity check" do
|
86
|
-
ToFactory(:
|
89
|
+
ToFactory(exclude: ToFactory::Project)
|
87
90
|
expect(user_file).to be_present
|
88
91
|
expect(project_file).to be_nil
|
89
92
|
end
|
@@ -115,14 +118,14 @@ describe ToFactory do
|
|
115
118
|
context "with a name for the factory" do
|
116
119
|
it "appends to the file" do
|
117
120
|
user_file_includes('factory(:"to_factory/user"')
|
118
|
-
ToFactory(:
|
121
|
+
ToFactory(specific_user: user)
|
119
122
|
user_file_includes('factory(:specific_user, :parent => :"to_factory/user"')
|
120
123
|
end
|
121
124
|
end
|
122
125
|
|
123
126
|
it "without a name" do
|
124
|
-
expect
|
125
|
-
|
127
|
+
expect { ToFactory(user) }
|
128
|
+
.to raise_error ToFactory::AlreadyExists
|
126
129
|
end
|
127
130
|
end
|
128
131
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
begin
|
2
|
-
require
|
3
|
-
|
2
|
+
require 'simplecov'
|
3
|
+
SimpleCov.start
|
4
4
|
rescue LoadError
|
5
|
-
#ignore on ruby 1.8.x
|
5
|
+
# ignore on ruby 1.8.x
|
6
6
|
end
|
7
7
|
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
8
|
+
require "active_record"
|
9
|
+
require "active_support/core_ext/string"
|
10
|
+
require "active_support/core_ext/hash"
|
11
11
|
require "sqlite3"
|
12
12
|
require "database_cleaner"
|
13
13
|
|
@@ -24,8 +24,8 @@ RSpec.configure do |config|
|
|
24
24
|
|
25
25
|
config.before :suite do
|
26
26
|
ActiveRecord::Base.tap do |base|
|
27
|
-
config = {:
|
28
|
-
base.configurations = {:
|
27
|
+
config = { adapter: "sqlite3", database: "spec/db/test.sqlite3" }
|
28
|
+
base.configurations = { test: config }.with_indifferent_access
|
29
29
|
base.establish_connection :test
|
30
30
|
end
|
31
31
|
|