synvert-core 0.16.1 → 0.20.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +6 -1
- data/CHANGELOG.md +20 -1
- data/lib/synvert/core.rb +1 -4
- data/lib/synvert/core/configuration.rb +9 -17
- data/lib/synvert/core/engine/erb.rb +29 -22
- data/lib/synvert/core/node_ext.rb +102 -101
- data/lib/synvert/core/rewriter.rb +33 -19
- data/lib/synvert/core/rewriter/action.rb +3 -5
- data/lib/synvert/core/rewriter/action/append_action.rb +1 -1
- data/lib/synvert/core/rewriter/action/insert_action.rb +7 -3
- data/lib/synvert/core/rewriter/action/insert_after_action.rb +1 -1
- data/lib/synvert/core/rewriter/action/remove_action.rb +1 -1
- data/lib/synvert/core/rewriter/action/replace_erb_stmt_with_expr_action.rb +4 -3
- data/lib/synvert/core/rewriter/action/replace_with_action.rb +6 -4
- data/lib/synvert/core/rewriter/condition/if_exist_condition.rb +1 -1
- data/lib/synvert/core/rewriter/condition/if_only_exist_condition.rb +1 -2
- data/lib/synvert/core/rewriter/condition/unless_exist_condition.rb +1 -1
- data/lib/synvert/core/rewriter/gem_spec.rb +11 -10
- data/lib/synvert/core/rewriter/helper.rb +3 -5
- data/lib/synvert/core/rewriter/instance.rb +21 -18
- data/lib/synvert/core/rewriter/ruby_version.rb +1 -3
- data/lib/synvert/core/version.rb +1 -1
- data/spec/spec_helper.rb +1 -6
- data/spec/synvert/core/engine/erb_spec.rb +30 -30
- data/spec/synvert/core/node_ext_spec.rb +53 -52
- data/spec/synvert/core/rewriter/action/insert_action_spec.rb +8 -8
- data/spec/synvert/core/rewriter/action/insert_after_action_spec.rb +3 -3
- data/spec/synvert/core/rewriter/action/remove_action_spec.rb +1 -1
- data/spec/synvert/core/rewriter/action/replace_with_action_spec.rb +15 -11
- data/spec/synvert/core/rewriter/condition/if_exist_condition_spec.rb +17 -9
- data/spec/synvert/core/rewriter/condition/if_only_exist_condition_spec.rb +21 -12
- data/spec/synvert/core/rewriter/condition/unless_exist_condition_spec.rb +17 -9
- data/spec/synvert/core/rewriter/gem_spec_spec.rb +11 -10
- data/spec/synvert/core/rewriter/helper_spec.rb +34 -31
- data/spec/synvert/core/rewriter/instance_spec.rb +104 -70
- data/spec/synvert/core/rewriter/ruby_version_spec.rb +17 -0
- data/spec/synvert/core/rewriter/scope/goto_scope_spec.rb +8 -6
- data/spec/synvert/core/rewriter/scope/within_scope.rb +16 -9
- data/spec/synvert/core/rewriter_spec.rb +105 -68
- metadata +4 -4
- data/spec/synvert/core/configuration_spec.rb +0 -12
@@ -5,31 +5,39 @@ require 'spec_helper'
|
|
5
5
|
module Synvert::Core
|
6
6
|
describe Rewriter::IfExistCondition do
|
7
7
|
let(:source) {
|
8
|
-
|
8
|
+
'
|
9
9
|
RSpec.configure do |config|
|
10
10
|
config.include EmailSpec::Helpers
|
11
11
|
config.include EmailSpec::Methods
|
12
12
|
end
|
13
|
-
|
13
|
+
'
|
14
14
|
}
|
15
15
|
let(:node) { Parser::CurrentRuby.parse(source) }
|
16
|
-
let(:instance) { double(:
|
16
|
+
let(:instance) { double(current_node: node) }
|
17
17
|
|
18
18
|
describe '#process' do
|
19
19
|
it 'call block if match anything' do
|
20
20
|
run = false
|
21
|
-
condition =
|
22
|
-
|
23
|
-
|
21
|
+
condition =
|
22
|
+
Rewriter::IfExistCondition.new instance,
|
23
|
+
type: 'send',
|
24
|
+
message: 'include',
|
25
|
+
arguments: ['EmailSpec::Helpers'] do
|
26
|
+
run = true
|
27
|
+
end
|
24
28
|
condition.process
|
25
29
|
expect(run).to be_truthy
|
26
30
|
end
|
27
31
|
|
28
32
|
it 'not call block if not match anything' do
|
29
33
|
run = false
|
30
|
-
condition =
|
31
|
-
|
32
|
-
|
34
|
+
condition =
|
35
|
+
Rewriter::IfExistCondition.new instance,
|
36
|
+
type: 'send',
|
37
|
+
message: 'include',
|
38
|
+
arguments: ['FactoryGirl::SyntaxMethods'] do
|
39
|
+
run = true
|
40
|
+
end
|
33
41
|
condition.process
|
34
42
|
expect(run).to be_falsey
|
35
43
|
end
|
@@ -5,38 +5,47 @@ require 'spec_helper'
|
|
5
5
|
module Synvert::Core
|
6
6
|
describe Rewriter::IfOnlyExistCondition do
|
7
7
|
let(:source) {
|
8
|
-
|
8
|
+
'
|
9
9
|
RSpec.configure do |config|
|
10
10
|
config.include EmailSpec::Helpers
|
11
11
|
config.include EmailSpec::Methods
|
12
12
|
end
|
13
|
-
|
13
|
+
'
|
14
14
|
}
|
15
15
|
let(:node) { Parser::CurrentRuby.parse(source) }
|
16
|
-
let(:instance) { double(:
|
16
|
+
let(:instance) { double(current_node: node) }
|
17
17
|
|
18
18
|
describe '#process' do
|
19
19
|
it 'gets matching nodes' do
|
20
|
-
source =
|
20
|
+
source =
|
21
|
+
'
|
21
22
|
RSpec.configure do |config|
|
22
23
|
config.include EmailSpec::Helpers
|
23
24
|
end
|
24
|
-
|
25
|
+
'
|
25
26
|
node = Parser::CurrentRuby.parse(source)
|
26
|
-
instance = double(:
|
27
|
+
instance = double(current_node: node)
|
27
28
|
run = false
|
28
|
-
condition =
|
29
|
-
|
30
|
-
|
29
|
+
condition =
|
30
|
+
Rewriter::IfOnlyExistCondition.new instance,
|
31
|
+
type: 'send',
|
32
|
+
message: 'include',
|
33
|
+
arguments: ['EmailSpec::Helpers'] do
|
34
|
+
run = true
|
35
|
+
end
|
31
36
|
condition.process
|
32
37
|
expect(run).to be_truthy
|
33
38
|
end
|
34
39
|
|
35
40
|
it 'not call block if does not match' do
|
36
41
|
run = false
|
37
|
-
condition =
|
38
|
-
|
39
|
-
|
42
|
+
condition =
|
43
|
+
Rewriter::IfOnlyExistCondition.new instance,
|
44
|
+
type: 'send',
|
45
|
+
message: 'include',
|
46
|
+
arguments: ['EmailSpec::Helpers'] do
|
47
|
+
run = true
|
48
|
+
end
|
40
49
|
condition.process
|
41
50
|
expect(run).to be_falsey
|
42
51
|
end
|
@@ -5,31 +5,39 @@ require 'spec_helper'
|
|
5
5
|
module Synvert::Core
|
6
6
|
describe Rewriter::UnlessExistCondition do
|
7
7
|
let(:source) {
|
8
|
-
|
8
|
+
'
|
9
9
|
RSpec.configure do |config|
|
10
10
|
config.include EmailSpec::Helpers
|
11
11
|
config.include EmailSpec::Methods
|
12
12
|
end
|
13
|
-
|
13
|
+
'
|
14
14
|
}
|
15
15
|
let(:node) { Parser::CurrentRuby.parse(source) }
|
16
|
-
let(:instance) { double(:
|
16
|
+
let(:instance) { double(current_node: node) }
|
17
17
|
|
18
18
|
describe '#process' do
|
19
19
|
it 'call block if match anything' do
|
20
20
|
run = false
|
21
|
-
condition =
|
22
|
-
|
23
|
-
|
21
|
+
condition =
|
22
|
+
Rewriter::UnlessExistCondition.new instance,
|
23
|
+
type: 'send',
|
24
|
+
message: 'include',
|
25
|
+
arguments: ['FactoryGirl::Syntax::Methods'] do
|
26
|
+
run = true
|
27
|
+
end
|
24
28
|
condition.process
|
25
29
|
expect(run).to be_truthy
|
26
30
|
end
|
27
31
|
|
28
32
|
it 'not call block if not match anything' do
|
29
33
|
run = false
|
30
|
-
condition =
|
31
|
-
|
32
|
-
|
34
|
+
condition =
|
35
|
+
Rewriter::UnlessExistCondition.new instance,
|
36
|
+
type: 'send',
|
37
|
+
message: 'include',
|
38
|
+
arguments: ['EmailSpec::Helpers'] do
|
39
|
+
run = true
|
40
|
+
end
|
33
41
|
condition.process
|
34
42
|
expect(run).to be_falsey
|
35
43
|
end
|
@@ -4,7 +4,8 @@ require 'spec_helper'
|
|
4
4
|
|
5
5
|
module Synvert::Core
|
6
6
|
describe Rewriter::GemSpec do
|
7
|
-
let(:gemfile_lock_content) {
|
7
|
+
let(:gemfile_lock_content) {
|
8
|
+
'
|
8
9
|
GEM
|
9
10
|
remote: https://rubygems.org/
|
10
11
|
specs:
|
@@ -14,41 +15,41 @@ GEM
|
|
14
15
|
slop (~> 3.4, >= 3.4.5)
|
15
16
|
rake (10.1.1)
|
16
17
|
slop (3.4.7)
|
17
|
-
|
18
|
+
'
|
18
19
|
}
|
19
20
|
|
20
21
|
it 'returns true if version in Gemfile.lock is greater than definition' do
|
21
|
-
expect(File).to receive(:
|
22
|
+
expect(File).to receive(:exist?).with('./Gemfile.lock').and_return(true)
|
22
23
|
expect(File).to receive(:read).with('./Gemfile.lock').and_return(gemfile_lock_content)
|
23
|
-
gem_spec = Rewriter::GemSpec.new('ast', {gte: '1.0.0'})
|
24
|
+
gem_spec = Rewriter::GemSpec.new('ast', { gte: '1.0.0' })
|
24
25
|
expect(gem_spec).to be_match
|
25
26
|
end
|
26
27
|
|
27
28
|
it 'returns true if version in Gemfile.lock is equal to definition' do
|
28
|
-
expect(File).to receive(:
|
29
|
+
expect(File).to receive(:exist?).with('./Gemfile.lock').and_return(true)
|
29
30
|
expect(File).to receive(:read).with('./Gemfile.lock').and_return(gemfile_lock_content)
|
30
31
|
gem_spec = Rewriter::GemSpec.new('ast', '1.1.0')
|
31
32
|
expect(gem_spec).to be_match
|
32
33
|
end
|
33
34
|
|
34
35
|
it 'returns false if version in Gemfile.lock is less than definition' do
|
35
|
-
expect(File).to receive(:
|
36
|
+
expect(File).to receive(:exist?).with('./Gemfile.lock').and_return(true)
|
36
37
|
expect(File).to receive(:read).with('./Gemfile.lock').and_return(gemfile_lock_content)
|
37
|
-
gem_spec = Rewriter::GemSpec.new('ast', {gt: '1.2.0'})
|
38
|
+
gem_spec = Rewriter::GemSpec.new('ast', { gt: '1.2.0' })
|
38
39
|
expect(gem_spec).not_to be_match
|
39
40
|
end
|
40
41
|
|
41
42
|
it 'returns false if gem does not exist in Gemfile.lock' do
|
42
|
-
expect(File).to receive(:
|
43
|
+
expect(File).to receive(:exist?).with('./Gemfile.lock').and_return(true)
|
43
44
|
expect(File).to receive(:read).with('./Gemfile.lock').and_return(gemfile_lock_content)
|
44
45
|
gem_spec = Rewriter::GemSpec.new('synvert', '1.0.0')
|
45
46
|
expect(gem_spec).not_to be_match
|
46
47
|
end
|
47
48
|
|
48
49
|
it 'raise Synvert::Core::GemfileLockNotFound if Gemfile.lock does not exist' do
|
49
|
-
expect(File).to receive(:
|
50
|
+
expect(File).to receive(:exist?).with('./Gemfile.lock').and_return(false)
|
50
51
|
gem_spec = Rewriter::GemSpec.new('ast', '1.1.0')
|
51
|
-
expect
|
52
|
+
expect(gem_spec).to be_match
|
52
53
|
end
|
53
54
|
end
|
54
55
|
end
|
@@ -7,74 +7,77 @@ module Synvert::Core
|
|
7
7
|
let(:dummy_instance) { Class.new { include Rewriter::Helper }.new }
|
8
8
|
let(:instance) do
|
9
9
|
rewriter = Rewriter.new('foo', 'bar')
|
10
|
-
Rewriter::Instance.new rewriter, 'spec/**/*_spec.rb' do
|
10
|
+
Rewriter::Instance.new rewriter, 'spec/**/*_spec.rb' do
|
11
|
+
end
|
11
12
|
end
|
12
13
|
|
13
|
-
describe
|
14
|
-
context
|
15
|
-
let(:node) { parse(
|
14
|
+
describe 'add_receiver_if_necessary' do
|
15
|
+
context 'with receiver' do
|
16
|
+
let(:node) { parse('User.save(false)') }
|
16
17
|
|
17
|
-
it
|
18
|
+
it 'adds reciever' do
|
18
19
|
allow(dummy_instance).to receive(:node).and_return(node)
|
19
|
-
expect(
|
20
|
+
expect(
|
21
|
+
dummy_instance.add_receiver_if_necessary('save(validate: false)')
|
22
|
+
).to eq '{{receiver}}.save(validate: false)'
|
20
23
|
end
|
21
24
|
end
|
22
25
|
|
23
|
-
context
|
24
|
-
let(:node) { parse(
|
26
|
+
context 'without receiver' do
|
27
|
+
let(:node) { parse('save(false)') }
|
25
28
|
|
26
29
|
it "doesn't add reciever" do
|
27
30
|
allow(dummy_instance).to receive(:node).and_return(node)
|
28
|
-
expect(dummy_instance.add_receiver_if_necessary(
|
31
|
+
expect(dummy_instance.add_receiver_if_necessary('save(validate: false)')).to eq 'save(validate: false)'
|
29
32
|
end
|
30
33
|
end
|
31
34
|
end
|
32
35
|
|
33
|
-
describe
|
34
|
-
context
|
35
|
-
let(:node) { parse(
|
36
|
+
describe 'add_arguments_with_parenthesis_if_necessary' do
|
37
|
+
context 'with arguments' do
|
38
|
+
let(:node) { parse('user.save(false)') }
|
36
39
|
|
37
|
-
it
|
40
|
+
it 'gets arguments with parenthesis' do
|
38
41
|
allow(dummy_instance).to receive(:node).and_return(node)
|
39
|
-
expect(dummy_instance.add_arguments_with_parenthesis_if_necessary).to eq
|
42
|
+
expect(dummy_instance.add_arguments_with_parenthesis_if_necessary).to eq '({{arguments}})'
|
40
43
|
end
|
41
44
|
end
|
42
45
|
|
43
|
-
context
|
44
|
-
let(:node) { parse(
|
46
|
+
context 'without argument' do
|
47
|
+
let(:node) { parse('user.save') }
|
45
48
|
|
46
|
-
it
|
49
|
+
it 'gets nothing' do
|
47
50
|
allow(dummy_instance).to receive(:node).and_return(node)
|
48
|
-
expect(dummy_instance.add_arguments_with_parenthesis_if_necessary).to eq
|
51
|
+
expect(dummy_instance.add_arguments_with_parenthesis_if_necessary).to eq ''
|
49
52
|
end
|
50
53
|
end
|
51
54
|
end
|
52
55
|
|
53
|
-
describe
|
54
|
-
it
|
55
|
-
expect(dummy_instance.add_curly_brackets_if_necessary(
|
56
|
+
describe 'add_curly_brackets_if_necessary' do
|
57
|
+
it 'add {} if code does not have' do
|
58
|
+
expect(dummy_instance.add_curly_brackets_if_necessary('foo: bar')).to eq '{ foo: bar }'
|
56
59
|
end
|
57
60
|
|
58
61
|
it "doesn't add {} if code already has" do
|
59
|
-
expect(dummy_instance.add_curly_brackets_if_necessary(
|
62
|
+
expect(dummy_instance.add_curly_brackets_if_necessary('{foo: bar}')).to eq '{foo: bar}'
|
60
63
|
end
|
61
64
|
end
|
62
65
|
|
63
|
-
describe
|
64
|
-
it
|
65
|
-
expect(dummy_instance.strip_brackets(
|
66
|
+
describe 'strip_brackets' do
|
67
|
+
it 'strip ()' do
|
68
|
+
expect(dummy_instance.strip_brackets('(123)')).to eq '123'
|
66
69
|
end
|
67
70
|
|
68
|
-
it
|
69
|
-
expect(dummy_instance.strip_brackets(
|
71
|
+
it 'strip {}' do
|
72
|
+
expect(dummy_instance.strip_brackets('{123}')).to eq '123'
|
70
73
|
end
|
71
74
|
|
72
|
-
it
|
73
|
-
expect(dummy_instance.strip_brackets(
|
75
|
+
it 'strip []' do
|
76
|
+
expect(dummy_instance.strip_brackets('[123]')).to eq '123'
|
74
77
|
end
|
75
78
|
|
76
|
-
it
|
77
|
-
expect(dummy_instance.strip_brackets(
|
79
|
+
it 'not strip unmatched (]' do
|
80
|
+
expect(dummy_instance.strip_brackets('(123]')).to eq '(123]'
|
78
81
|
end
|
79
82
|
end
|
80
83
|
end
|
@@ -12,82 +12,104 @@ module Synvert::Core
|
|
12
12
|
}
|
13
13
|
|
14
14
|
it 'parses within_node' do
|
15
|
-
scope = double
|
16
|
-
block =
|
17
|
-
expect(Rewriter::WithinScope).to receive(:new)
|
15
|
+
scope = double
|
16
|
+
block = proc {}
|
17
|
+
expect(Rewriter::WithinScope).to receive(:new)
|
18
|
+
.with(instance, { type: 'send', message: 'create' }, { recursive: true }, &block)
|
19
|
+
.and_return(scope)
|
18
20
|
expect(scope).to receive(:process)
|
19
21
|
instance.within_node(type: 'send', message: 'create', &block)
|
20
22
|
end
|
21
23
|
|
22
24
|
it 'parses with_node' do
|
23
|
-
scope = double
|
24
|
-
block =
|
25
|
-
expect(Rewriter::WithinScope).to receive(:new)
|
25
|
+
scope = double
|
26
|
+
block = proc {}
|
27
|
+
expect(Rewriter::WithinScope).to receive(:new)
|
28
|
+
.with(instance, { type: 'send', message: 'create' }, { recursive: true }, &block)
|
29
|
+
.and_return(scope)
|
26
30
|
expect(scope).to receive(:process)
|
27
31
|
instance.with_node(type: 'send', message: 'create', &block)
|
28
32
|
end
|
29
33
|
|
30
34
|
it 'parses within_direct_node' do
|
31
|
-
scope = double
|
32
|
-
block =
|
33
|
-
expect(Rewriter::WithinScope).to receive(:new)
|
35
|
+
scope = double
|
36
|
+
block = proc {}
|
37
|
+
expect(Rewriter::WithinScope).to receive(:new)
|
38
|
+
.with(instance, { type: 'send', message: 'create' }, { recursive: false }, &block)
|
39
|
+
.and_return(scope)
|
34
40
|
expect(scope).to receive(:process)
|
35
41
|
instance.within_direct_node(type: 'send', message: 'create', &block)
|
36
42
|
end
|
37
43
|
|
38
44
|
it 'parses with_direct_node' do
|
39
|
-
scope = double
|
40
|
-
block =
|
41
|
-
expect(Rewriter::WithinScope).to receive(:new)
|
45
|
+
scope = double
|
46
|
+
block = proc {}
|
47
|
+
expect(Rewriter::WithinScope).to receive(:new)
|
48
|
+
.with(instance, { type: 'send', message: 'create' }, { recursive: false }, &block)
|
49
|
+
.and_return(scope)
|
42
50
|
expect(scope).to receive(:process)
|
43
51
|
instance.with_direct_node(type: 'send', message: 'create', &block)
|
44
52
|
end
|
45
53
|
|
46
54
|
it 'parses goto_node' do
|
47
|
-
scope = double
|
48
|
-
block =
|
55
|
+
scope = double
|
56
|
+
block = proc {}
|
49
57
|
expect(Rewriter::GotoScope).to receive(:new).with(instance, :caller, &block).and_return(scope)
|
50
58
|
expect(scope).to receive(:process)
|
51
59
|
instance.goto_node(:caller, &block)
|
52
60
|
end
|
53
61
|
|
54
62
|
it 'parses if_exist_node' do
|
55
|
-
condition = double
|
56
|
-
block =
|
57
|
-
expect(Rewriter::IfExistCondition).to receive(:new)
|
63
|
+
condition = double
|
64
|
+
block = proc {}
|
65
|
+
expect(Rewriter::IfExistCondition).to receive(:new)
|
66
|
+
.with(instance, type: 'send', message: 'create', &block)
|
67
|
+
.and_return(condition)
|
58
68
|
expect(condition).to receive(:process)
|
59
69
|
instance.if_exist_node(type: 'send', message: 'create', &block)
|
60
70
|
end
|
61
71
|
|
62
72
|
it 'parses unless_exist_node' do
|
63
|
-
condition = double
|
64
|
-
block =
|
65
|
-
expect(Rewriter::UnlessExistCondition).to receive(:new)
|
73
|
+
condition = double
|
74
|
+
block = proc {}
|
75
|
+
expect(Rewriter::UnlessExistCondition).to receive(:new)
|
76
|
+
.with(instance, type: 'send', message: 'create', &block)
|
77
|
+
.and_return(condition)
|
66
78
|
expect(condition).to receive(:process)
|
67
79
|
instance.unless_exist_node(type: 'send', message: 'create', &block)
|
68
80
|
end
|
69
81
|
|
70
82
|
it 'parses if_only_exist_node' do
|
71
|
-
condition = double
|
72
|
-
block =
|
73
|
-
expect(Rewriter::IfOnlyExistCondition).to receive(:new)
|
83
|
+
condition = double
|
84
|
+
block = proc {}
|
85
|
+
expect(Rewriter::IfOnlyExistCondition).to receive(:new)
|
86
|
+
.with(instance, type: 'send', message: 'create', &block)
|
87
|
+
.and_return(condition)
|
74
88
|
expect(condition).to receive(:process)
|
75
89
|
instance.if_only_exist_node(type: 'send', message: 'create', &block)
|
76
90
|
end
|
77
91
|
|
78
92
|
it 'parses append' do
|
79
93
|
expect(Rewriter::AppendAction).to receive(:new).with(instance, 'include FactoryGirl::Syntax::Methods', {})
|
80
|
-
instance.append
|
94
|
+
instance.append 'include FactoryGirl::Syntax::Methods'
|
81
95
|
end
|
82
96
|
|
83
97
|
it 'parses insert' do
|
84
|
-
expect(Rewriter::InsertAction).to receive(:new).with(
|
85
|
-
|
98
|
+
expect(Rewriter::InsertAction).to receive(:new).with(
|
99
|
+
instance,
|
100
|
+
'{{arguments.first}}.include FactoryGirl::Syntax::Methods',
|
101
|
+
{}
|
102
|
+
)
|
103
|
+
instance.insert '{{arguments.first}}.include FactoryGirl::Syntax::Methods'
|
86
104
|
end
|
87
105
|
|
88
106
|
it 'parses insert_after' do
|
89
|
-
expect(Rewriter::InsertAfterAction).to receive(:new).with(
|
90
|
-
|
107
|
+
expect(Rewriter::InsertAfterAction).to receive(:new).with(
|
108
|
+
instance,
|
109
|
+
'{{arguments.first}}.include FactoryGirl::Syntax::Methods',
|
110
|
+
{}
|
111
|
+
)
|
112
|
+
instance.insert_after '{{arguments.first}}.include FactoryGirl::Syntax::Methods'
|
91
113
|
end
|
92
114
|
|
93
115
|
it 'parses replace_with' do
|
@@ -109,25 +131,28 @@ module Synvert::Core
|
|
109
131
|
let(:rewriter) { Rewriter.new('foo', 'bar') }
|
110
132
|
|
111
133
|
it 'writes new code to file' do
|
112
|
-
instance =
|
113
|
-
|
114
|
-
|
134
|
+
instance =
|
135
|
+
Rewriter::Instance.new rewriter, 'spec/**/*_spec.rb' do
|
136
|
+
with_node type: 'send', receiver: 'FactoryGirl', message: 'create' do
|
137
|
+
replace_with 'create {{arguments}}'
|
138
|
+
end
|
115
139
|
end
|
116
|
-
|
117
|
-
|
140
|
+
input =
|
141
|
+
"
|
118
142
|
it 'uses factory_girl' do
|
119
143
|
user = FactoryGirl.create :user
|
120
144
|
post = FactoryGirl.create :post, user: user
|
121
145
|
assert post.valid?
|
122
146
|
end
|
123
|
-
"
|
124
|
-
output =
|
147
|
+
"
|
148
|
+
output =
|
149
|
+
"
|
125
150
|
it 'uses factory_girl' do
|
126
151
|
user = create :user
|
127
152
|
post = create :post, user: user
|
128
153
|
assert post.valid?
|
129
154
|
end
|
130
|
-
"
|
155
|
+
"
|
131
156
|
expect(Dir).to receive(:glob).with('./spec/**/*_spec.rb').and_return(['spec/models/post_spec.rb'])
|
132
157
|
expect(File).to receive(:read).with('spec/models/post_spec.rb').and_return(input)
|
133
158
|
expect(File).to receive(:write).with('spec/models/post_spec.rb', output)
|
@@ -135,23 +160,26 @@ end
|
|
135
160
|
end
|
136
161
|
|
137
162
|
it 'does not write if file content is not changed' do
|
138
|
-
instance =
|
139
|
-
|
140
|
-
|
141
|
-
|
163
|
+
instance =
|
164
|
+
Rewriter::Instance.new rewriter, 'spec/spec_helper.rb' do
|
165
|
+
with_node type: 'block', caller: { receiver: 'RSpec', message: 'configure' } do
|
166
|
+
unless_exist_node type: 'send', message: 'include', arguments: ['FactoryGirl::Syntax::Methods'] do
|
167
|
+
insert '{{arguments.first}}.include FactoryGirl::Syntax::Methods'
|
168
|
+
end
|
142
169
|
end
|
143
170
|
end
|
144
|
-
|
145
|
-
|
171
|
+
input =
|
172
|
+
'
|
146
173
|
RSpec.configure do |config|
|
147
174
|
config.include FactoryGirl::Syntax::Methods
|
148
175
|
end
|
149
|
-
|
150
|
-
output =
|
176
|
+
'
|
177
|
+
output =
|
178
|
+
'
|
151
179
|
RSpec.configure do |config|
|
152
180
|
config.include FactoryGirl::Syntax::Methods
|
153
181
|
end
|
154
|
-
|
182
|
+
'
|
155
183
|
expect(Dir).to receive(:glob).with('./spec/spec_helper.rb').and_return(['spec/spec_helper.rb'])
|
156
184
|
expect(File).to receive(:read).with('spec/spec_helper.rb').and_return(input)
|
157
185
|
expect(File).not_to receive(:write).with('spec/spec_helper.rb', output)
|
@@ -159,23 +187,26 @@ end
|
|
159
187
|
end
|
160
188
|
|
161
189
|
it 'does not read file if already read' do
|
162
|
-
instance =
|
163
|
-
|
164
|
-
|
165
|
-
|
190
|
+
instance =
|
191
|
+
Rewriter::Instance.new rewriter, 'spec/spec_helper.rb' do
|
192
|
+
with_node type: 'block', caller: { receiver: 'RSpec', message: 'configure' } do
|
193
|
+
unless_exist_node type: 'send', message: 'include', arguments: ['FactoryGirl::Syntax::Methods'] do
|
194
|
+
insert '{{arguments.first}}.include FactoryGirl::Syntax::Methods'
|
195
|
+
end
|
166
196
|
end
|
167
197
|
end
|
168
|
-
|
169
|
-
|
198
|
+
input =
|
199
|
+
'
|
170
200
|
RSpec.configure do |config|
|
171
201
|
config.include FactoryGirl::Syntax::Methods
|
172
202
|
end
|
173
|
-
|
174
|
-
output =
|
203
|
+
'
|
204
|
+
output =
|
205
|
+
'
|
175
206
|
RSpec.configure do |config|
|
176
207
|
config.include FactoryGirl::Syntax::Methods
|
177
208
|
end
|
178
|
-
|
209
|
+
'
|
179
210
|
expect(Dir).to receive(:glob).with('./spec/spec_helper.rb').and_return(['spec/spec_helper.rb']).twice
|
180
211
|
expect(File).to receive(:read).with('spec/spec_helper.rb').and_return(input).once
|
181
212
|
expect(File).not_to receive(:write).with('spec/spec_helper.rb', output)
|
@@ -184,25 +215,28 @@ end
|
|
184
215
|
end
|
185
216
|
|
186
217
|
it 'updates file_source and file_ast when writing a file' do
|
187
|
-
instance =
|
188
|
-
|
189
|
-
|
218
|
+
instance =
|
219
|
+
Rewriter::Instance.new rewriter, 'spec/**/*_spec.rb' do
|
220
|
+
with_node type: 'send', receiver: 'FactoryGirl', message: 'create' do
|
221
|
+
replace_with 'create {{arguments}}'
|
222
|
+
end
|
190
223
|
end
|
191
|
-
|
192
|
-
|
224
|
+
input =
|
225
|
+
"
|
193
226
|
it 'uses factory_girl' do
|
194
227
|
user = FactoryGirl.create :user
|
195
228
|
post = FactoryGirl.create :post, user: user
|
196
229
|
assert post.valid?
|
197
230
|
end
|
198
|
-
"
|
199
|
-
output =
|
231
|
+
"
|
232
|
+
output =
|
233
|
+
"
|
200
234
|
it 'uses factory_girl' do
|
201
235
|
user = create :user
|
202
236
|
post = create :post, user: user
|
203
237
|
assert post.valid?
|
204
238
|
end
|
205
|
-
"
|
239
|
+
"
|
206
240
|
expect(Dir).to receive(:glob).with('./spec/**/*_spec.rb').and_return(['spec/models/post_spec.rb']).twice
|
207
241
|
expect(File).to receive(:read).with('spec/models/post_spec.rb').and_return(input)
|
208
242
|
expect(File).to receive(:write).with('spec/models/post_spec.rb', output)
|
@@ -212,10 +246,10 @@ end
|
|
212
246
|
end
|
213
247
|
end
|
214
248
|
|
215
|
-
describe
|
249
|
+
describe '#get_conflict_actions' do
|
216
250
|
let(:rewriter) { Rewriter.new('foo', 'bar') }
|
217
251
|
|
218
|
-
it
|
252
|
+
it 'has no conflict' do
|
219
253
|
action1 = double(begin_pos: 10, end_pos: 20)
|
220
254
|
action2 = double(begin_pos: 30, end_pos: 40)
|
221
255
|
action3 = double(begin_pos: 50, end_pos: 60)
|
@@ -226,7 +260,7 @@ end
|
|
226
260
|
expect(instance.instance_variable_get(:@actions)).to eq [action1, action2, action3]
|
227
261
|
end
|
228
262
|
|
229
|
-
it
|
263
|
+
it 'has no conflict' do
|
230
264
|
action1 = double(begin_pos: 30, end_pos: 40)
|
231
265
|
action2 = double(begin_pos: 50, end_pos: 60)
|
232
266
|
action3 = double(begin_pos: 10, end_pos: 20)
|
@@ -240,8 +274,8 @@ end
|
|
240
274
|
|
241
275
|
describe '#process_with_node' do
|
242
276
|
it 'resets current_node' do
|
243
|
-
node1 = double
|
244
|
-
node2 = double
|
277
|
+
node1 = double
|
278
|
+
node2 = double
|
245
279
|
instance.process_with_node(node1) do
|
246
280
|
instance.current_node = node2
|
247
281
|
expect(instance.current_node).to eq node2
|
@@ -252,9 +286,9 @@ end
|
|
252
286
|
|
253
287
|
describe '#process_with_other_node' do
|
254
288
|
it 'resets current_node' do
|
255
|
-
node1 = double
|
256
|
-
node2 = double
|
257
|
-
node3 = double
|
289
|
+
node1 = double
|
290
|
+
node2 = double
|
291
|
+
node3 = double
|
258
292
|
instance.current_node = node1
|
259
293
|
instance.process_with_other_node(node2) do
|
260
294
|
instance.current_node = node3
|