gitlab-ce/spec/lib/gitlab/gitaly_client/diff_blobs_stitcher_spec.rb

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