Files
canine/spec/models/build_pack_spec.rb
2025-11-07 12:28:38 -08:00

97 lines
3.0 KiB
Ruby

# == Schema Information
#
# Table name: build_packs
#
# id :bigint not null, primary key
# build_order :integer not null
# details :jsonb
# name :string
# namespace :string
# reference_type :integer not null
# uri :text
# version :string
# created_at :datetime not null
# updated_at :datetime not null
# build_configuration_id :bigint not null
#
# Indexes
#
# index_build_packs_on_build_configuration_id (build_configuration_id)
# index_build_packs_on_config_type_namespace_name (build_configuration_id,reference_type,namespace,name)
# index_build_packs_on_config_uri (build_configuration_id,uri)
#
# Foreign Keys
#
# fk_rails_... (build_configuration_id => build_configurations.id)
#
require 'rails_helper'
RSpec.describe BuildPack, type: :model do
describe '#reference' do
context 'registry buildpack' do
let(:build_pack) { create(:build_pack) }
context 'when version is present' do
before { build_pack.update(version: '0.47.7') }
it 'returns namespace/name:version' do
expect(build_pack.reference).to eq('paketo-buildpacks/ruby:0.47.7')
end
end
context 'when version is not present' do
before { build_pack.update(version: nil) }
it 'returns namespace/name' do
expect(build_pack.reference).to eq('paketo-buildpacks/ruby')
end
end
end
context 'git buildpack' do
let(:build_pack) { create(:build_pack, :git) }
it 'returns the git URL' do
expect(build_pack.reference).to eq('https://github.com/DataDog/heroku-buildpack-datadog.git')
end
end
context 'url buildpack' do
let(:build_pack) { create(:build_pack, :url) }
it 'returns the URL' do
expect(build_pack.reference).to eq('https://github.com/heroku/buildpacks-ruby/releases/download/v0.1.0/buildpack.tgz')
end
end
end
describe '#verified?' do
it 'returns true for registry buildpacks with verified namespaces' do
build_pack = create(:build_pack, namespace: 'paketo-buildpacks')
expect(build_pack.verified?).to be true
end
it 'returns false for registry buildpacks with unverified namespaces' do
build_pack = create(:build_pack, namespace: 'custom-buildpacks')
expect(build_pack.verified?).to be false
end
it 'returns false for git buildpacks' do
build_pack = create(:build_pack, :git)
expect(build_pack.verified?).to be false
end
end
describe '#display_name' do
it 'returns namespace/name for registry buildpacks' do
build_pack = create(:build_pack)
expect(build_pack.display_name).to eq('paketo-buildpacks/ruby')
end
it 'returns repo name for git buildpacks' do
build_pack = create(:build_pack, :git)
expect(build_pack.display_name).to eq('heroku-buildpack-datadog')
end
end
end