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
 |