57 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
require 'fast_spec_helper'
 | 
						|
 | 
						|
RSpec.describe Gitlab::GitalyClient::DiffBlobsStitcher, feature_category: :gitaly do
 | 
						|
  describe 'enumeration' do
 | 
						|
    let(:message) { Struct.new(:left_blob_id, :right_blob_id, :patch, :status, :binary, :over_patch_bytes_limit) }
 | 
						|
 | 
						|
    it 'combines segregated diff blob messages together' do
 | 
						|
      messages = [
 | 
						|
        message.new(
 | 
						|
          '357406f3075a57708d0163752905cc1576fceacc',
 | 
						|
          '8e5177d718c561d36efde08bad36b43687ee6bf0',
 | 
						|
          'a' * 100,
 | 
						|
          :STATUS_INCOMPLETE,
 | 
						|
          false,
 | 
						|
          false
 | 
						|
        ),
 | 
						|
        message.new(
 | 
						|
          '357406f3075a57708d0163752905cc1576fceacc',
 | 
						|
          '8e5177d718c561d36efde08bad36b43687ee6bf0',
 | 
						|
          'a' * 100,
 | 
						|
          :STATUS_END_OF_PATCH,
 | 
						|
          false,
 | 
						|
          false
 | 
						|
        ),
 | 
						|
        message.new(
 | 
						|
          '8f2e9b1c4d7a3f5e6b0d2c8a9f1e3d5b7c4a6e8d',
 | 
						|
          '3a1d9c7b5f2e8d4a6c0b3e9f1d7a5c2b8e4f6a0',
 | 
						|
          'b' * 100,
 | 
						|
          :STATUS_END_OF_PATCH,
 | 
						|
          false,
 | 
						|
          false
 | 
						|
        )
 | 
						|
      ]
 | 
						|
 | 
						|
      diff_blobs = described_class.new(messages).to_a
 | 
						|
 | 
						|
      expect(diff_blobs.size).to eq(2)
 | 
						|
 | 
						|
      expect(diff_blobs.first.left_blob_id).to eq('357406f3075a57708d0163752905cc1576fceacc')
 | 
						|
      expect(diff_blobs.first.right_blob_id).to eq('8e5177d718c561d36efde08bad36b43687ee6bf0')
 | 
						|
      expect(diff_blobs.first.patch).to eq('a' * 200)
 | 
						|
      expect(diff_blobs.first.status).to eq(:STATUS_END_OF_PATCH)
 | 
						|
      expect(diff_blobs.first.binary).to eq(false)
 | 
						|
      expect(diff_blobs.first.over_patch_bytes_limit).to eq(false)
 | 
						|
 | 
						|
      expect(diff_blobs.last.left_blob_id).to eq('8f2e9b1c4d7a3f5e6b0d2c8a9f1e3d5b7c4a6e8d')
 | 
						|
      expect(diff_blobs.last.right_blob_id).to eq('3a1d9c7b5f2e8d4a6c0b3e9f1d7a5c2b8e4f6a0')
 | 
						|
      expect(diff_blobs.last.patch).to eq('b' * 100)
 | 
						|
      expect(diff_blobs.last.status).to eq(:STATUS_END_OF_PATCH)
 | 
						|
      expect(diff_blobs.last.binary).to eq(false)
 | 
						|
      expect(diff_blobs.last.over_patch_bytes_limit).to eq(false)
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |