Files
sure/test/models/account_share_test.rb
soky srm 560c9fbff3 Family sharing (#1272)
* Initial account sharing changes

* Update schema.rb

* Update schema.rb

* Change sharing UI to modal

* UX fixes and sharing controls

* Scope include in finances better

* Update totals.rb

* Update totals.rb

* Scope reports to finance account scope

* Update impersonation_sessions_controller_test.rb

* Review fixes

* Update schema.rb

* Update show.html.erb

* FIX db validation

* Refine edit permissions

* Review items

* Review

* Review

* Add application level helper

* Critical review

* Address remaining review items

* Fix modals

* more scoping

* linter

* small UI fix

* Fix: Sync broadcasts push unscoped balance sheet to all users

* Update sync_complete_event.rb

 The fix removes the sidebar broadcasts (which rendered unscoped account groups using family.balance_sheet without user context)
  along with the now-unused sidebar_targets, account_group, and family_balance_sheet private methods.

  The sidebar will still update correctly — when the sync completes, Family::SyncCompleteEvent#broadcast fires family.broadcast_refresh, which triggers a
  morph-based page refresh for each user with their own authenticated session, rendering properly scoped sidebar content.
2026-03-25 10:50:23 +01:00

62 lines
2.0 KiB
Ruby

require "test_helper"
class AccountShareTest < ActiveSupport::TestCase
setup do
@admin = users(:family_admin)
@member = users(:family_member)
@account = accounts(:depository)
end
test "valid share" do
# Use an account that doesn't already have a share with member
account = accounts(:investment)
account.account_shares.where(user: @member).destroy_all
share = AccountShare.new(account: account, user: @member, permission: "read_only")
assert share.valid?
end
test "invalid permission" do
share = AccountShare.new(account: @account, user: @member, permission: "invalid")
assert_not share.valid?
assert_includes share.errors[:permission], "is not included in the list"
end
test "cannot share with account owner" do
share = AccountShare.new(account: @account, user: @admin, permission: "read_only")
assert_not share.valid?
assert_includes share.errors[:user], "is already the owner of this account"
end
test "cannot duplicate share for same user and account" do
# depository already shared with member via fixture
duplicate = AccountShare.new(account: @account, user: @member, permission: "read_only")
assert_not duplicate.valid?
end
test "permission helper methods" do
share = AccountShare.new(permission: "full_control")
assert share.full_control?
assert_not share.read_write?
assert_not share.read_only?
assert share.can_annotate?
assert share.can_edit?
share.permission = "read_write"
assert share.read_write?
assert share.can_annotate?
assert_not share.can_edit?
share.permission = "read_only"
assert share.read_only?
assert_not share.can_annotate?
assert_not share.can_edit?
end
test "cannot share with user from different family" do
other_user = users(:empty)
share = AccountShare.new(account: @account, user: other_user, permission: "read_only")
assert_not share.valid?
assert_includes share.errors[:user], "must be in the same family"
end
end