diff --git a/app/models/account.rb b/app/models/account.rb index afd022441..c562043b2 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -1,5 +1,5 @@ class Account < ApplicationRecord - include Entropic, Joinable + include Entropic, Joinable, SignalAccount has_many_attached :uploads end diff --git a/app/models/account/signal_account.rb b/app/models/account/signal_account.rb new file mode 100644 index 000000000..99af103bb --- /dev/null +++ b/app/models/account/signal_account.rb @@ -0,0 +1,8 @@ +module Account::SignalAccount + extend ActiveSupport::Concern + + included do + # TODO: remove the "optional: true" once we've populated the accounts properly + belongs_to :signal_account, class_name: "SignalId::Account", primary_key: :queenbee_id, foreign_key: :queenbee_id, optional: true + end +end diff --git a/db/migrate/20250611203906_add_queenbee_id_to_accounts.rb b/db/migrate/20250611203906_add_queenbee_id_to_accounts.rb new file mode 100644 index 000000000..8d1d55ad4 --- /dev/null +++ b/db/migrate/20250611203906_add_queenbee_id_to_accounts.rb @@ -0,0 +1,6 @@ +class AddQueenbeeIdToAccounts < ActiveRecord::Migration[8.1] + def change + add_column :accounts, :queenbee_id, :integer # I solemnly swear I will add a "NOT NULL" constraint once it's populated + add_index :accounts, :queenbee_id, unique: true + end +end diff --git a/db/schema.rb b/db/schema.rb index dff0ccb02..28b66be58 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[8.1].define(version: 2025_06_09_102553) do +ActiveRecord::Schema[8.1].define(version: 2025_06_11_203906) do create_table "accesses", force: :cascade do |t| t.integer "collection_id", null: false t.datetime "created_at", null: false @@ -26,7 +26,9 @@ ActiveRecord::Schema[8.1].define(version: 2025_06_09_102553) do t.datetime "created_at", null: false t.string "join_code" t.string "name", null: false + t.integer "queenbee_id" t.datetime "updated_at", null: false + t.index ["queenbee_id"], name: "index_accounts_on_queenbee_id", unique: true end create_table "action_text_rich_texts", force: :cascade do |t| diff --git a/db/schema_cache.yml b/db/schema_cache.yml index 89fca8331..751801e34 100644 --- a/db/schema_cache.yml +++ b/db/schema_cache.yml @@ -113,6 +113,16 @@ columns: default_function: collation: comment: + - !ruby/object:ActiveRecord::ConnectionAdapters::SQLite3::Column + auto_increment: + name: queenbee_id + cast_type: *1 + sql_type_metadata: *2 + 'null': true + default: + default_function: + collation: + comment: - *9 action_text_rich_texts: - !ruby/object:ActiveRecord::ConnectionAdapters::SQLite3::Column @@ -1163,7 +1173,23 @@ indexes: nulls_not_distinct: comment: valid: true - accounts: [] + accounts: + - !ruby/object:ActiveRecord::ConnectionAdapters::IndexDefinition + table: accounts + name: index_accounts_on_queenbee_id + unique: true + columns: + - queenbee_id + lengths: {} + orders: {} + opclasses: {} + where: + type: + using: + include: + nulls_not_distinct: + comment: + valid: true action_text_rich_texts: - !ruby/object:ActiveRecord::ConnectionAdapters::IndexDefinition table: action_text_rich_texts @@ -2301,4 +2327,4 @@ indexes: comment: valid: true workflows: [] -version: 20250609102553 +version: 20250611203906 diff --git a/test/fixtures/accounts.yml b/test/fixtures/accounts.yml index 587f05a44..d394aedc3 100644 --- a/test/fixtures/accounts.yml +++ b/test/fixtures/accounts.yml @@ -1,3 +1,4 @@ 37s: name: 37signals join_code: "ejpP-THlQ-Cc2f" + queenbee_id: <%= ActiveRecord::FixtureSet.identify :'37s_fizzy' %> diff --git a/test/models/account/signal_account_test.rb b/test/models/account/signal_account_test.rb new file mode 100644 index 000000000..ee9b5b6d8 --- /dev/null +++ b/test/models/account/signal_account_test.rb @@ -0,0 +1,13 @@ +require "test_helper" + +class Account::SignalAccountTest < ActiveSupport::TestCase + setup do + @account = accounts("37s") + end + + test "belongs to a signal_account via a shared queenbee_id" do + assert_not_nil @account.queenbee_id + assert_equal @account.queenbee_id, Account.new(signal_account: @account.signal_account).queenbee_id + assert_equal @account.signal_account, Account.new(queenbee_id: @account.queenbee_id).signal_account + end +end diff --git a/test/models/account_test.rb b/test/models/account_test.rb index 3f86f1cd4..94d4f83dd 100644 --- a/test/models/account_test.rb +++ b/test/models/account_test.rb @@ -1,7 +1,4 @@ require "test_helper" -class OrganizationTest < ActiveSupport::TestCase - # test "the truth" do - # assert true - # end +class AccountTest < ActiveSupport::TestCase end diff --git a/test/test_helper.rb b/test/test_helper.rb index 2cce7f8d6..b999101f6 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -3,6 +3,7 @@ require_relative "../config/environment" require "rails/test_help" require "webmock/minitest" require "vcr" +require "signal_id/testing" WebMock.allow_net_connect! @@ -25,6 +26,7 @@ module ActiveSupport fixtures :all include ActiveJob::TestHelper + include SignalId::Testing include ActionTextTestHelper, CardTestHelper, ChangeTestHelper, SessionTestHelper end end