diff --git a/db/migrate/20231002000136871_add_foreign_key_to_spree_stock_items_spree_stock_locations.rb b/db/bad_migrations/20231002000136871_add_foreign_key_to_spree_stock_items_spree_stock_locations.rb similarity index 100% rename from db/migrate/20231002000136871_add_foreign_key_to_spree_stock_items_spree_stock_locations.rb rename to db/bad_migrations/20231002000136871_add_foreign_key_to_spree_stock_items_spree_stock_locations.rb diff --git a/db/migrate/20231002000136872_add_foreign_key_to_spree_stock_items_spree_variants.rb b/db/bad_migrations/20231002000136872_add_foreign_key_to_spree_stock_items_spree_variants.rb similarity index 100% rename from db/migrate/20231002000136872_add_foreign_key_to_spree_stock_items_spree_variants.rb rename to db/bad_migrations/20231002000136872_add_foreign_key_to_spree_stock_items_spree_variants.rb diff --git a/db/migrate/20231002000136876_add_foreign_key_to_spree_shipping_method_categories_spree_shipping_methods.rb b/db/bad_migrations/20231002000136876_add_foreign_key_to_spree_shipping_method_categories_spree_shipping_methods.rb similarity index 100% rename from db/migrate/20231002000136876_add_foreign_key_to_spree_shipping_method_categories_spree_shipping_methods.rb rename to db/bad_migrations/20231002000136876_add_foreign_key_to_spree_shipping_method_categories_spree_shipping_methods.rb diff --git a/db/migrate/20231002000136877_add_foreign_key_to_spree_shipping_method_categories_spree_shipping_categories.rb b/db/bad_migrations/20231002000136877_add_foreign_key_to_spree_shipping_method_categories_spree_shipping_categories.rb similarity index 100% rename from db/migrate/20231002000136877_add_foreign_key_to_spree_shipping_method_categories_spree_shipping_categories.rb rename to db/bad_migrations/20231002000136877_add_foreign_key_to_spree_shipping_method_categories_spree_shipping_categories.rb diff --git a/db/migrate/20231002000136879_add_foreign_key_to_report_rendering_options_spree_users.rb b/db/bad_migrations/20231002000136879_add_foreign_key_to_report_rendering_options_spree_users.rb similarity index 100% rename from db/migrate/20231002000136879_add_foreign_key_to_report_rendering_options_spree_users.rb rename to db/bad_migrations/20231002000136879_add_foreign_key_to_report_rendering_options_spree_users.rb diff --git a/db/migrate/20231002000136926_add_foreign_key_to_tag_rules_enterprises.rb b/db/bad_migrations/20231002000136926_add_foreign_key_to_tag_rules_enterprises.rb similarity index 100% rename from db/migrate/20231002000136926_add_foreign_key_to_tag_rules_enterprises.rb rename to db/bad_migrations/20231002000136926_add_foreign_key_to_tag_rules_enterprises.rb diff --git a/db/migrate/20231002000136952_add_foreign_key_to_spree_stock_movements_spree_stock_items.rb b/db/bad_migrations/20231002000136952_add_foreign_key_to_spree_stock_movements_spree_stock_items.rb similarity index 100% rename from db/migrate/20231002000136952_add_foreign_key_to_spree_stock_movements_spree_stock_items.rb rename to db/bad_migrations/20231002000136952_add_foreign_key_to_spree_stock_movements_spree_stock_items.rb diff --git a/db/migrate/20231002000136955_add_foreign_key_to_spree_stock_locations_spree_states.rb b/db/bad_migrations/20231002000136955_add_foreign_key_to_spree_stock_locations_spree_states.rb similarity index 100% rename from db/migrate/20231002000136955_add_foreign_key_to_spree_stock_locations_spree_states.rb rename to db/bad_migrations/20231002000136955_add_foreign_key_to_spree_stock_locations_spree_states.rb diff --git a/db/migrate/20231002000136959_add_foreign_key_to_spree_stock_locations_spree_countries.rb b/db/bad_migrations/20231002000136959_add_foreign_key_to_spree_stock_locations_spree_countries.rb similarity index 100% rename from db/migrate/20231002000136959_add_foreign_key_to_spree_stock_locations_spree_countries.rb rename to db/bad_migrations/20231002000136959_add_foreign_key_to_spree_stock_locations_spree_countries.rb diff --git a/db/migrate/20231002000136976_add_foreign_key_to_spree_shipments_spree_stock_locations.rb b/db/bad_migrations/20231002000136976_add_foreign_key_to_spree_shipments_spree_stock_locations.rb similarity index 100% rename from db/migrate/20231002000136976_add_foreign_key_to_spree_shipments_spree_stock_locations.rb rename to db/bad_migrations/20231002000136976_add_foreign_key_to_spree_shipments_spree_stock_locations.rb diff --git a/db/migrate/20231002000137115_add_foreign_key_to_inventory_items_enterprises.rb b/db/bad_migrations/20231002000137115_add_foreign_key_to_inventory_items_enterprises.rb similarity index 100% rename from db/migrate/20231002000137115_add_foreign_key_to_inventory_items_enterprises.rb rename to db/bad_migrations/20231002000137115_add_foreign_key_to_inventory_items_enterprises.rb diff --git a/db/migrate/20231002000137116_add_foreign_key_to_inventory_items_spree_variants.rb b/db/bad_migrations/20231002000137116_add_foreign_key_to_inventory_items_spree_variants.rb similarity index 100% rename from db/migrate/20231002000137116_add_foreign_key_to_inventory_items_spree_variants.rb rename to db/bad_migrations/20231002000137116_add_foreign_key_to_inventory_items_spree_variants.rb diff --git a/db/migrate/20231003000823494_add_foreign_key_to_spree_orders_spree_users_created_by_id.rb b/db/bad_migrations/20231003000823494_add_foreign_key_to_spree_orders_spree_users_created_by_id.rb similarity index 100% rename from db/migrate/20231003000823494_add_foreign_key_to_spree_orders_spree_users_created_by_id.rb rename to db/bad_migrations/20231003000823494_add_foreign_key_to_spree_orders_spree_users_created_by_id.rb diff --git a/db/migrate/20240115022359_rename_offending_migrations.rb b/db/migrate/20240115022359_rename_offending_migrations.rb new file mode 100644 index 0000000000..21d9c73327 --- /dev/null +++ b/db/migrate/20240115022359_rename_offending_migrations.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +class RenameOffendingMigrations < ActiveRecord::Migration[7.0] + MIGRATION_IDS = { + '20231002000136871': "20231002000136", + '20231002000136872': "20231002000137", + '20231002000136876': "20231002000138", + '20231002000136877': "20231002000139", + '20231002000136879': "20231002000140", + '20231002000136926': "20231002000141", + '20231002000136952': "20231002000142", + '20231002000136955': "20231002000143", + '20231002000136959': "20231002000144", + '20231002000136976': "20231002000145", + '20231002000137115': "20231002000146", + '20231002000137116': "20231002000147", + '20231003000823494': "20231003000823", + }.freeze + + def up + MIGRATION_IDS.each do |bad_id, good_id| + execute <<~SQL.squish + UPDATE schema_migrations + SET version='#{good_id}' + WHERE version='#{bad_id}' + SQL + end + end + + def down + MIGRATION_IDS.each do |bad_id, good_id| + execute <<~SQL.squish + UPDATE schema_migrations + SET version='#{bad_id}' + WHERE version='#{good_id}' + SQL + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 5a78096336..312cf4e23e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 20231003000823494) do +ActiveRecord::Schema[7.0].define(version: 2024_01_15_022359) do # These are extensions that must be enabled in order to support this database enable_extension "pg_stat_statements" enable_extension "plpgsql" diff --git a/package.json b/package.json index c9bec5f193..a9b2f6a515 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "stimulus": "^3.2.2", "stimulus-flatpickr": "^1.4.0", "stimulus_reflex": "3.5.0-rc3", - "tom-select": "^2.2.3", + "tom-select": "^2.3.1", "trix": "^2.0.8", "webpack": "~4" }, diff --git a/spec/models/database_spec.rb b/spec/models/database_spec.rb index 2731e145b8..609f275646 100644 --- a/spec/models/database_spec.rb +++ b/spec/models/database_spec.rb @@ -60,11 +60,6 @@ RSpec.describe "Database" do puts migrations.join("\n") puts "\nTo disable this warning, add the class name(s) of the model(s) to models_todo " \ "in #{__FILE__}" - - return if ENV.fetch("OFN_WRITE_FOREIGN_KEY_MIGRATIONS", false) - - puts "Migrations have not been written to disk. To write migrations to disk, please " \ - "add OFN_WRITE_FOREIGN_KEY_MIGRATIONS=true to the file .env.test.local" end def process_association(model_class, association) @@ -104,9 +99,6 @@ RSpec.describe "Database" do migration_name = "add_foreign_key_to_#{model_class.table_name}_" \ "#{foreign_key_table_name}_#{foreign_key_column}" migration_class_name = migration_name.camelize - millisecond_timestamp = generate_timestamp - migration_file_name = "db/migrate/#{millisecond_timestamp}_" \ - "#{migration_name}.rb" orphaned_records_query = generate_orphaned_records_query(model_class, foreign_key_table_name, foreign_key_column) @@ -122,11 +114,6 @@ RSpec.describe "Database" do end MIGRATION - if ENV.fetch("OFN_WRITE_FOREIGN_KEY_MIGRATIONS", false) - File.open(migration_file_name, 'w') do |file| - file.puts migration - end - end migration end @@ -140,20 +127,4 @@ RSpec.describe "Database" do # AND #{model_class.table_name}.#{foreign_key_column} IS NOT NULL SQL end - - # Generates a unique timestamp. - # - # We may create multiple migrations within the same second, maybe even millisecond. - # So we add precision to milliseconds and increment on conflict. - def generate_timestamp - @last_creation_time ||= Time.new.utc(0) - - creation_time = Time.now.utc - if creation_time <= @last_creation_time - creation_time += 0.001.seconds - end - @last_creation_time = creation_time - - creation_time.utc.strftime('%Y%m%d%H%M%S%L') - end end diff --git a/spec/support/request/web_helper.rb b/spec/support/request/web_helper.rb index 4e8aad2be0..01a4796f4e 100644 --- a/spec/support/request/web_helper.rb +++ b/spec/support/request/web_helper.rb @@ -100,8 +100,15 @@ module WebHelper def tomselect_search_and_select(value, options) tomselect_wrapper = page.find("[name='#{options[:from]}']").sibling(".ts-wrapper") tomselect_wrapper.find(".ts-control").click - tomselect_wrapper.find(:css, '.ts-dropdown input.dropdown-input').set(value) + # Use send_keys as setting the value directly doesn't trigger the search + tomselect_wrapper.find(:css, '.ts-dropdown input.dropdown-input').send_keys(value) + tomselect_wrapper.find(:css, '.ts-dropdown .ts-dropdown-content .option', text: value).click + end + + def tomselect_select(value, options) + tomselect_wrapper = page.find("[name='#{options[:from]}']").sibling(".ts-wrapper") tomselect_wrapper.find(".ts-control").click + tomselect_wrapper.find(:css, '.ts-dropdown .ts-dropdown-content .option', text: value).click end diff --git a/spec/system/admin/order_spec.rb b/spec/system/admin/order_spec.rb index 379bd88e8f..4c5b677983 100644 --- a/spec/system/admin/order_spec.rb +++ b/spec/system/admin/order_spec.rb @@ -1074,19 +1074,18 @@ describe ' end describe "searching customers" do - def serching_for_customers + def searching_for_customers # opens the customer dropdown find(".items-placeholder").click - # sets the query name - find(".dropdown-input").set("John") + find(".dropdown-input").send_keys("John") within(".customer-details") do expect(page).to have_content("John Doe") expect(page).to have_content(customer.email.to_s) end # sets the query email - find(".dropdown-input").set("maura@smith.biz") + find(".dropdown-input").send_keys("maura@smith.biz") within(".customer-details") do expect(page).to have_content("John Doe") expect(page).to have_content(customer.email.to_s) @@ -1103,7 +1102,7 @@ describe ' end it "finds a customer by name" do - serching_for_customers + searching_for_customers end end @@ -1117,7 +1116,7 @@ describe ' end it "finds a customer by name" do - serching_for_customers + searching_for_customers end end end diff --git a/spec/system/admin/orders_spec.rb b/spec/system/admin/orders_spec.rb index 41858b9e1e..b9f29d296b 100644 --- a/spec/system/admin/orders_spec.rb +++ b/spec/system/admin/orders_spec.rb @@ -934,8 +934,8 @@ describe ' fill_in "Order number", with: "R123456" tomselect_multiselect order_cycle.name, from: 'q[order_cycle_id_in][]' tomselect_multiselect distributor.name, from: 'q[distributor_id_in][]' - tomselect_search_and_select shipping_method.name, from: 'shipping_method_id' - tomselect_search_and_select "complete", from: 'q[state_eq]' + tomselect_select shipping_method.name, from: 'shipping_method_id' + tomselect_select "complete", from: 'q[state_eq]' fill_in "Email", with: user.email fill_in "First name begins with", with: "J" fill_in "Last name begins with", with: "D" diff --git a/spec/system/admin/subscriptions/crud_spec.rb b/spec/system/admin/subscriptions/crud_spec.rb index 274ecf823d..cb4c901639 100644 --- a/spec/system/admin/subscriptions/crud_spec.rb +++ b/spec/system/admin/subscriptions/crud_spec.rb @@ -233,7 +233,7 @@ describe 'Subscriptions' do before do visit admin_subscriptions_path page.find("#new-subscription").click - tomselect_search_and_select shop.name, from: "subscription[shop_id]" + tomselect_select shop.name, from: "subscription[shop_id]" click_button "Continue" end diff --git a/spec/system/admin/subscriptions/smoke_tests_spec.rb b/spec/system/admin/subscriptions/smoke_tests_spec.rb index cfd1e7a2a4..86ab504a4b 100644 --- a/spec/system/admin/subscriptions/smoke_tests_spec.rb +++ b/spec/system/admin/subscriptions/smoke_tests_spec.rb @@ -183,7 +183,7 @@ describe 'Subscriptions' do before do visit admin_subscriptions_path page.find("#new-subscription").click - tomselect_search_and_select shop.name, from: "subscription[shop_id]" + tomselect_select shop.name, from: "subscription[shop_id]" click_button "Continue" end diff --git a/yarn.lock b/yarn.lock index e104a0e578..c4c2abbc97 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8768,10 +8768,10 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== -tom-select@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/tom-select/-/tom-select-2.2.3.tgz#858acca2dcec1dbe1a94a3f4c944384e166a4f40" - integrity sha512-VMhRdFlugLGdnNZsP5r8sHKtyvWekIbtr53uoKONMzM+JSBWgy5pV9F+iZ2LTEbzIQI0efIwZ7I6h+wzZoM/zQ== +tom-select@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/tom-select/-/tom-select-2.3.1.tgz#df338d9082874cd0bceb3bee87ed0184447c47f1" + integrity sha512-QS4vnOcB6StNGqX4sGboGXL2fkhBF2gIBB+8Hwv30FZXYPn0CyYO8kkdATRvwfCTThxiR4WcXwKJZ3cOmtI9eg== dependencies: "@orchidjs/sifter" "^1.0.3" "@orchidjs/unicode-variants" "^1.0.4"