50 lines
		
	
	
		
			921 B
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			921 B
		
	
	
	
		
			Ruby
		
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
module FakeBlobHelpers
 | 
						|
  class FakeBlob
 | 
						|
    include BlobLike
 | 
						|
 | 
						|
    attr_reader :path, :size, :data, :lfs_oid, :lfs_size, :mode
 | 
						|
 | 
						|
    def initialize(path: 'file.txt', size: 1.kilobyte, data: 'foo', binary: false, lfs: nil, mode: nil)
 | 
						|
      @path = path
 | 
						|
      @size = size
 | 
						|
      @data = data
 | 
						|
      @binary = binary
 | 
						|
      @mode = mode
 | 
						|
 | 
						|
      @lfs_pointer = lfs.present?
 | 
						|
      if @lfs_pointer
 | 
						|
        @lfs_oid = SecureRandom.hex(20)
 | 
						|
        @lfs_size = 1.megabyte
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    alias_method :name, :path
 | 
						|
 | 
						|
    def id
 | 
						|
      "00000000"
 | 
						|
    end
 | 
						|
 | 
						|
    def commit_id
 | 
						|
      "11111111"
 | 
						|
    end
 | 
						|
 | 
						|
    def binary_in_repo?
 | 
						|
      @binary
 | 
						|
    end
 | 
						|
 | 
						|
    def external_storage
 | 
						|
      :lfs if @lfs_pointer
 | 
						|
    end
 | 
						|
 | 
						|
    alias_method :external_size, :lfs_size
 | 
						|
  end
 | 
						|
 | 
						|
  def fake_blob(**kwargs)
 | 
						|
    container = kwargs.delete(:container) || project
 | 
						|
 | 
						|
    Blob.decorate(FakeBlob.new(**kwargs), container)
 | 
						|
  end
 | 
						|
end
 |