Sha256: f92dc8b20cce1ec1a8235701e875d530819a9bb202a762ff904ec2890f5d42f4

Contents?: true

Size: 1.97 KB

Versions: 10

Compression:

Stored size: 1.97 KB

Contents

require 'spec_helper'

module Synvert::Core
  describe Rewriter::WithinScope do
    let(:instance) {
      rewriter = Rewriter.new('foo', 'bar')
      Rewriter::Instance.new(rewriter, 'file pattern')
    }
    let(:source) {"""
describe Post do
  it 'gets post' do
    FactoryGirl.create :post
  end
end
    """}
    let(:node) { Parser::CurrentRuby.parse(source) }
    before do
      Rewriter::Instance.reset
      instance.current_node = node
    end

    describe '#process' do
      it 'not call block if no matching node' do
        run = false
        scope = Rewriter::WithinScope.new instance, type: 'send', message: 'missing' do
          run = true
        end
        scope.process
        expect(run).to be_falsey
      end

      it 'call block if there is matching node' do
        run = false
        type_in_scope = nil
        scope = Rewriter::WithinScope.new instance, type: 'send', receiver: 'FactoryGirl', message: 'create', arguments: [':post'] do
          run = true
          type_in_scope = node.type
        end
        scope.process
        expect(run).to be_truthy
        expect(type_in_scope).to eq :send
        expect(instance.current_node.type).to eq :block
      end
    end
  end

  describe Rewriter::GotoScope do
    let(:instance) {
      rewriter = Rewriter.new('foo', 'bar')
      Rewriter::Instance.new(rewriter, 'file pattern')
    }
    let(:source) {'''
Factory.define :user do |user|
end
    '''}
    let(:node) { Parser::CurrentRuby.parse(source) }
    before do
      Rewriter::Instance.reset
      instance.current_node = node
    end

    describe '#process' do
      it 'call block with child node' do
        run = false
        type_in_scope = nil
        scope = Rewriter::GotoScope.new instance, :caller do
          run = true
          type_in_scope = node.type
        end
        scope.process
        expect(run).to be_truthy
        expect(type_in_scope).to eq :send
        expect(instance.current_node.type).to eq :block
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
synvert-core-0.7.5 spec/synvert/core/rewriter/scope_spec.rb
synvert-core-0.7.4 spec/synvert/core/rewriter/scope_spec.rb
synvert-core-0.7.3 spec/synvert/core/rewriter/scope_spec.rb
synvert-core-0.7.2 spec/synvert/core/rewriter/scope_spec.rb
synvert-core-0.7.1 spec/synvert/core/rewriter/scope_spec.rb
synvert-core-0.6.5 spec/synvert/core/rewriter/scope_spec.rb
synvert-core-0.6.4 spec/synvert/core/rewriter/scope_spec.rb
synvert-core-0.6.3 spec/synvert/core/rewriter/scope_spec.rb
synvert-core-0.6.2 spec/synvert/core/rewriter/scope_spec.rb
synvert-core-0.6.0 spec/synvert/core/rewriter/scope_spec.rb