85 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
require 'fast_spec_helper'
 | 
						|
 | 
						|
RSpec.describe Gitlab::Diff::PairSelector do
 | 
						|
  subject(:selector) { described_class.new(lines) }
 | 
						|
 | 
						|
  describe '#to_a' do
 | 
						|
    subject { selector.to_a }
 | 
						|
 | 
						|
    let(:lines) { diff.lines }
 | 
						|
 | 
						|
    let(:diff) do
 | 
						|
      <<-EOF.strip_heredoc
 | 
						|
         class Test                       # 0
 | 
						|
        -  def initialize(test = true)    # 1
 | 
						|
        +  def initialize(test = false)   # 2
 | 
						|
             @test = test                 # 3
 | 
						|
        -    if true                      # 4
 | 
						|
        -      @foo = "bar"               # 5
 | 
						|
        +    unless false                 # 6
 | 
						|
        +      @foo = "baz"               # 7
 | 
						|
             end
 | 
						|
           end
 | 
						|
         end
 | 
						|
      EOF
 | 
						|
    end
 | 
						|
 | 
						|
    it 'finds all pairs' do
 | 
						|
      is_expected.to match_array([[1, 2], [4, 6], [5, 7]])
 | 
						|
    end
 | 
						|
 | 
						|
    context 'when there are empty lines' do
 | 
						|
      let(:lines) { ['- bar', '+ baz', ''] }
 | 
						|
 | 
						|
      it { expect { subject }.not_to raise_error }
 | 
						|
    end
 | 
						|
 | 
						|
    context 'when there are only removals' do
 | 
						|
      let(:diff) do
 | 
						|
        <<-EOF.strip_heredoc
 | 
						|
          - class Test
 | 
						|
          -  def initialize(test = true)
 | 
						|
          -  end
 | 
						|
          - end
 | 
						|
        EOF
 | 
						|
      end
 | 
						|
 | 
						|
      it 'returns empty collection' do
 | 
						|
        is_expected.to eq([])
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    context 'when there are only additions' do
 | 
						|
      let(:diff) do
 | 
						|
        <<-EOF.strip_heredoc
 | 
						|
          + class Test
 | 
						|
          +  def initialize(test = true)
 | 
						|
          +  end
 | 
						|
          + end
 | 
						|
        EOF
 | 
						|
      end
 | 
						|
 | 
						|
      it 'returns empty collection' do
 | 
						|
        is_expected.to eq([])
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    context 'when there are no changes' do
 | 
						|
      let(:diff) do
 | 
						|
        <<-EOF.strip_heredoc
 | 
						|
           class Test
 | 
						|
             def initialize(test = true)
 | 
						|
             end
 | 
						|
           end
 | 
						|
        EOF
 | 
						|
      end
 | 
						|
 | 
						|
      it 'returns empty collection' do
 | 
						|
        is_expected.to eq([])
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |