# frozen_string_literal: true

require 'rails_helper'

describe MergeRequestDiffFile do
  describe '#diff' do
    let(:unpacked) { 'unpacked' }
    let(:packed) { [unpacked].pack('m0') }

    before do
      subject.diff = packed
    end

    context 'when the diff is marked as binary' do
      before do
        subject.binary = true
      end

      it 'unpacks from base 64' do
        expect(subject.diff).to eq(unpacked)
      end
    end

    context 'when the diff is not marked as binary' do
      it 'returns the raw diff' do
        expect(subject.diff).to eq(packed)
      end
    end
  end

  describe '#utf8_diff' do
    it 'does not raise error when the diff is binary' do
      subject.diff = "\x05\x00\x68\x65\x6c\x6c\x6f"

      expect { subject.utf8_diff }.not_to raise_error
    end
  end
end
