mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-10 01:01:39 -05:00
Remove limit on number of family members for self-hosted instances.
This commit is contained in:
parent
2f160b8d97
commit
19f6715218
3 changed files with 184 additions and 15 deletions
|
|
@ -18,6 +18,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
|
|||
## Changed
|
||||
|
||||
- Removed useless system tests and cover map functionality with Playwright e2e tests instead.
|
||||
- Number of family members on self-hosted instances is no longer limited.
|
||||
|
||||
# [0.34.2] - 2025-10-31
|
||||
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ class Family < ApplicationRecord
|
|||
MAX_MEMBERS = 5
|
||||
|
||||
def can_add_members?
|
||||
return true if DawarichSettings.self_hosted?
|
||||
|
||||
(member_count + pending_invitations_count) < MAX_MEMBERS
|
||||
end
|
||||
|
||||
|
|
@ -32,6 +34,8 @@ class Family < ApplicationRecord
|
|||
end
|
||||
|
||||
def full?
|
||||
return false if DawarichSettings.self_hosted?
|
||||
|
||||
(member_count + pending_invitations_count) >= MAX_MEMBERS
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -26,31 +26,100 @@ RSpec.describe Family, type: :model do
|
|||
describe '#can_add_members?' do
|
||||
let(:family) { create(:family, creator: user) }
|
||||
|
||||
context 'when family has fewer than max members' do
|
||||
context 'when not in self-hosted mode' do
|
||||
before do
|
||||
create(:family_membership, family: family, user: user, role: :owner)
|
||||
create_list(:family_membership, 3, family: family, role: :member)
|
||||
allow(DawarichSettings).to receive(:self_hosted?).and_return(false)
|
||||
end
|
||||
|
||||
it 'returns true' do
|
||||
expect(family.can_add_members?).to be true
|
||||
context 'when family has fewer than max members' do
|
||||
before do
|
||||
create(:family_membership, family: family, user: user, role: :owner)
|
||||
create_list(:family_membership, 3, family: family, role: :member)
|
||||
end
|
||||
|
||||
it 'returns true' do
|
||||
expect(family.can_add_members?).to be true
|
||||
end
|
||||
end
|
||||
|
||||
context 'when family has max members' do
|
||||
before do
|
||||
create(:family_membership, family: family, user: user, role: :owner)
|
||||
create_list(:family_membership, 4, family: family, role: :member)
|
||||
end
|
||||
|
||||
it 'returns false' do
|
||||
expect(family.can_add_members?).to be false
|
||||
end
|
||||
end
|
||||
|
||||
context 'when family has pending invitations that would reach max' do
|
||||
before do
|
||||
create(:family_membership, family: family, user: user, role: :owner)
|
||||
create_list(:family_membership, 3, family: family, role: :member)
|
||||
create(:family_invitation, family: family, invited_by: user, status: :pending)
|
||||
end
|
||||
|
||||
it 'returns false' do
|
||||
expect(family.can_add_members?).to be false
|
||||
end
|
||||
end
|
||||
|
||||
context 'when family has no members' do
|
||||
it 'returns true' do
|
||||
expect(family.can_add_members?).to be true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when family has max members' do
|
||||
context 'when in self-hosted mode' do
|
||||
before do
|
||||
create(:family_membership, family: family, user: user, role: :owner)
|
||||
create_list(:family_membership, 4, family: family, role: :member)
|
||||
allow(DawarichSettings).to receive(:self_hosted?).and_return(true)
|
||||
end
|
||||
|
||||
it 'returns false' do
|
||||
expect(family.can_add_members?).to be false
|
||||
end
|
||||
end
|
||||
context 'when family has fewer than max members' do
|
||||
before do
|
||||
create(:family_membership, family: family, user: user, role: :owner)
|
||||
create_list(:family_membership, 3, family: family, role: :member)
|
||||
end
|
||||
|
||||
context 'when family has no members' do
|
||||
it 'returns true' do
|
||||
expect(family.can_add_members?).to be true
|
||||
it 'returns true' do
|
||||
expect(family.can_add_members?).to be true
|
||||
end
|
||||
end
|
||||
|
||||
context 'when family has max members' do
|
||||
before do
|
||||
create(:family_membership, family: family, user: user, role: :owner)
|
||||
create_list(:family_membership, 4, family: family, role: :member)
|
||||
end
|
||||
|
||||
it 'returns true (no limit in self-hosted mode)' do
|
||||
expect(family.can_add_members?).to be true
|
||||
end
|
||||
end
|
||||
|
||||
context 'when family has more than max members' do
|
||||
before do
|
||||
create(:family_membership, family: family, user: user, role: :owner)
|
||||
create_list(:family_membership, 10, family: family, role: :member)
|
||||
end
|
||||
|
||||
it 'returns true (no limit in self-hosted mode)' do
|
||||
expect(family.can_add_members?).to be true
|
||||
end
|
||||
end
|
||||
|
||||
context 'when family has pending invitations that would exceed max' do
|
||||
before do
|
||||
create(:family_membership, family: family, user: user, role: :owner)
|
||||
create_list(:family_membership, 4, family: family, role: :member)
|
||||
create_list(:family_invitation, 5, family: family, invited_by: user, status: :pending)
|
||||
end
|
||||
|
||||
it 'returns true (no limit in self-hosted mode)' do
|
||||
expect(family.can_add_members?).to be true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -122,4 +191,99 @@ RSpec.describe Family, type: :model do
|
|||
expect(Family::Membership.find_by(id: membership.id)).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
describe '#full?' do
|
||||
let(:family) { create(:family, creator: user) }
|
||||
|
||||
context 'when not in self-hosted mode' do
|
||||
before do
|
||||
allow(DawarichSettings).to receive(:self_hosted?).and_return(false)
|
||||
end
|
||||
|
||||
context 'when family has fewer than max members' do
|
||||
before do
|
||||
create(:family_membership, family: family, user: user, role: :owner)
|
||||
create_list(:family_membership, 3, family: family, role: :member)
|
||||
end
|
||||
|
||||
it 'returns false' do
|
||||
expect(family.full?).to be false
|
||||
end
|
||||
end
|
||||
|
||||
context 'when family has exactly max members' do
|
||||
before do
|
||||
create(:family_membership, family: family, user: user, role: :owner)
|
||||
create_list(:family_membership, 4, family: family, role: :member)
|
||||
end
|
||||
|
||||
it 'returns true' do
|
||||
expect(family.full?).to be true
|
||||
end
|
||||
end
|
||||
|
||||
context 'when family has pending invitations that would reach max' do
|
||||
before do
|
||||
create(:family_membership, family: family, user: user, role: :owner)
|
||||
create_list(:family_membership, 3, family: family, role: :member)
|
||||
create(:family_invitation, family: family, invited_by: user, status: :pending)
|
||||
end
|
||||
|
||||
it 'returns true' do
|
||||
expect(family.full?).to be true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when in self-hosted mode' do
|
||||
before do
|
||||
allow(DawarichSettings).to receive(:self_hosted?).and_return(true)
|
||||
end
|
||||
|
||||
context 'when family has fewer than max members' do
|
||||
before do
|
||||
create(:family_membership, family: family, user: user, role: :owner)
|
||||
create_list(:family_membership, 3, family: family, role: :member)
|
||||
end
|
||||
|
||||
it 'returns false' do
|
||||
expect(family.full?).to be false
|
||||
end
|
||||
end
|
||||
|
||||
context 'when family has exactly max members' do
|
||||
before do
|
||||
create(:family_membership, family: family, user: user, role: :owner)
|
||||
create_list(:family_membership, 4, family: family, role: :member)
|
||||
end
|
||||
|
||||
it 'returns false (no limit in self-hosted mode)' do
|
||||
expect(family.full?).to be false
|
||||
end
|
||||
end
|
||||
|
||||
context 'when family has more than max members' do
|
||||
before do
|
||||
create(:family_membership, family: family, user: user, role: :owner)
|
||||
create_list(:family_membership, 10, family: family, role: :member)
|
||||
end
|
||||
|
||||
it 'returns false (no limit in self-hosted mode)' do
|
||||
expect(family.full?).to be false
|
||||
end
|
||||
end
|
||||
|
||||
context 'when family has pending invitations that would exceed max' do
|
||||
before do
|
||||
create(:family_membership, family: family, user: user, role: :owner)
|
||||
create_list(:family_membership, 4, family: family, role: :member)
|
||||
create_list(:family_invitation, 5, family: family, invited_by: user, status: :pending)
|
||||
end
|
||||
|
||||
it 'returns false (no limit in self-hosted mode)' do
|
||||
expect(family.full?).to be false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in a new issue