From 33a0df21b8f859df77afbfecf4739d0aed0dd396 Mon Sep 17 00:00:00 2001 From: Philipp Thun Date: Fri, 27 Sep 2024 11:58:44 +0200 Subject: [PATCH] Add column file_based_service_bindings_enabled to apps table --- ...e_based_service_bindings_enabled_column.rb | 5 +++ ...ed_service_bindings_enabled_column_spec.rb | 35 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 db/migrations/20240927091800_add_apps_file_based_service_bindings_enabled_column.rb create mode 100644 spec/migrations/20240927091800_add_apps_file_based_service_bindings_enabled_column_spec.rb diff --git a/db/migrations/20240927091800_add_apps_file_based_service_bindings_enabled_column.rb b/db/migrations/20240927091800_add_apps_file_based_service_bindings_enabled_column.rb new file mode 100644 index 0000000000..cf0ee93931 --- /dev/null +++ b/db/migrations/20240927091800_add_apps_file_based_service_bindings_enabled_column.rb @@ -0,0 +1,5 @@ +Sequel.migration do + change do + add_column :apps, :file_based_service_bindings_enabled, :boolean, default: false, null: false + end +end diff --git a/spec/migrations/20240927091800_add_apps_file_based_service_bindings_enabled_column_spec.rb b/spec/migrations/20240927091800_add_apps_file_based_service_bindings_enabled_column_spec.rb new file mode 100644 index 0000000000..8038d56547 --- /dev/null +++ b/spec/migrations/20240927091800_add_apps_file_based_service_bindings_enabled_column_spec.rb @@ -0,0 +1,35 @@ +require 'spec_helper' +require 'migrations/helpers/migration_shared_context' + +RSpec.describe 'migration to add file_based_service_bindings_enabled column to apps table', isolation: :truncation, type: :migration do + include_context 'migration' do + let(:migration_filename) { '20240927091800_add_apps_file_based_service_bindings_enabled_column.rb' } + end + + describe 'apps table' do + subject(:run_migration) { Sequel::Migrator.run(db, migrations_path, target: current_migration_index, allow_missing_migration_files: true) } + + it 'adds a column `file_based_service_bindings_enabled`' do + expect(db[:apps].columns).not_to include(:file_based_service_bindings_enabled) + run_migration + expect(db[:apps].columns).to include(:file_based_service_bindings_enabled) + end + + it 'sets the default value of existing entries to false' do + db[:apps].insert(guid: 'existing_app_guid') + run_migration + expect(db[:apps].first(guid: 'existing_app_guid')[:file_based_service_bindings_enabled]).to be(false) + end + + it 'sets the default value of new entries to false' do + run_migration + db[:apps].insert(guid: 'new_app_guid') + expect(db[:apps].first(guid: 'new_app_guid')[:file_based_service_bindings_enabled]).to be(false) + end + + it 'forbids null values' do + run_migration + expect { db[:apps].insert(guid: 'app_guid__nil', file_based_service_bindings_enabled: nil) }.to raise_error(Sequel::NotNullConstraintViolation) + end + end +end