diff --git a/test/models/unit/execution_environment_test.rb b/test/models/unit/execution_environment_test.rb new file mode 100644 index 00000000..9e1885fe --- /dev/null +++ b/test/models/unit/execution_environment_test.rb @@ -0,0 +1,68 @@ +require 'foreman_ansible_director_test_helper' + +module ForemanAnsibleDirectorTests + module Models + module Unit + class ExecutionEnvironmentTest < ForemanAnsibleDirectorTestCase + setup do + @execution_environment = FactoryBot.create(:execution_environment, organization: @organization) + @collection = FactoryBot.create(:ansible_collection, organization: @organization) + @version = FactoryBot.create(:content_unit_version, versionable: @collection, version: '1.0.0') + end + + test 'registry_url returns local registry path for execution environment' do + assert_equal( + "localhost/ansible_director/#{@execution_environment.id}:latest", + @execution_environment.registry_url + ) + end + + test 'generate_content_hash changes when content changes' do + original_hash = @execution_environment.generate_content_hash + + @execution_environment.add_content_unit(@collection, @version) + + assert_not_equal original_hash, @execution_environment.generate_content_hash + end + + test 'generate_content_hash changes when ansible version changes' do + original_hash = @execution_environment.generate_content_hash + + @execution_environment.ansible_version = '2.19.0' + + assert_not_equal original_hash, @execution_environment.generate_content_hash + end + + test 'generate_content_hash changes when base image changes' do + original_hash = @execution_environment.generate_content_hash + + @execution_environment.base_image_url = 'quay.io/ansible/other-ee:latest' + + assert_not_equal original_hash, @execution_environment.generate_content_hash + end + + test 'rebuild_necessary? tracks content hash changes' do + @execution_environment.update!(content_hash: 'abcd1234') + + assert @execution_environment.rebuild_necessary? + end + + test 'add_content_unit creates execution environment content unit' do + assignment = @execution_environment.add_content_unit(@collection, @version) + + assert_equal @execution_environment, assignment.execution_environment + assert_equal @collection, assignment.content_unit + assert_equal @version, assignment.content_unit_version + end + + test 'add_content_unit reuses existing execution environment content unit' do + first_assignment = @execution_environment.add_content_unit(@collection, @version) + second_assignment = @execution_environment.add_content_unit(@collection, @version) + + assert_equal first_assignment, second_assignment + assert_equal 1, @execution_environment.execution_environment_content_units.count + end + end + end + end +end