5ed41555e9
Member/Setting/validations: domain, actor, and seeds
...
- setting.ex: domain/authorize for default_membership_fee_type_id check
- validate_same_interval: require membership_fee_type (no None)
- set_membership_fee_start_date: domain/actor for fee type lookup
- Validations: domain/authorize for cross-resource checks
- helpers.ex, email_sync change, seeds.exs actor/authorize fixes
- Update related tests
2026-02-03 23:52:16 +01:00
5889683854
Add resource policies for Group, MemberGroup, MembershipFeeType, MembershipFeeCycle
...
- Group/MemberGroup/MembershipFeeType/MembershipFeeCycle: HasPermission policy
- normal_user: Group and MembershipFeeCycle create/update/destroy; pages /groups/new, /groups/:slug/edit
- Add policy tests for all four resources
2026-02-03 23:52:12 +01:00
893f9453bd
Add PermissionSets for Group, MemberGroup, MembershipFeeType, MembershipFeeCycle
...
- Extend permission_sets.ex with resources and pages for new domains
- Adjust HasPermission check for resource/action/scope
- Update roles-and-permissions and implementation-plan docs
- Add permission_sets_test.exs coverage
2026-02-03 23:52:09 +01:00
cbc9376b7b
Tests: data-testid selectors, scoped delete, sidebar testid
...
continuous-integration/drone/push Build is passing
continuous-integration/drone/promote/production Build is passing
Member/User auth tests use data-testid and #row-id selectors.
Sidebar auth tests assert on data-testid=sidebar-administration.
Sidebar test expects data-testid in expanded-menu-group markup.
2026-02-03 17:16:15 +01:00
1426ef1d38
Add sidebar authorization tests
...
continuous-integration/drone/push Build is passing
Assert menu visibility per role: admin, read_only, normal_user,
own_data, nil user, user without role.
2026-02-03 16:56:52 +01:00
f779fd61e0
Gate sidebar menu items by can_access_page?
...
Members, Fee Types and Administration subitems only shown when user
has page permission. Add admin_menu_visible? helper. Sidebar test
uses admin user so menu items render.
2026-02-03 16:56:52 +01:00
cc9e530d80
Add User LiveView authorization tests
...
Covers admin, read_only, member, normal_user for Index and Show.
Asserts New User / Edit / Delete visibility and redirect for non-admin.
2026-02-03 16:56:51 +01:00
5e361ba400
Add Member LiveView authorization tests
...
Covers read_only, normal_user, admin, own_data for Index and Show.
Asserts New Member / Edit / Delete visibility and redirect for Mitglied.
2026-02-03 16:56:51 +01:00
131904f172
Test: assert on error field :email instead of message string
continuous-integration/drone/push Build is failing
continuous-integration/drone/promote/production Build is passing
2026-02-03 16:07:47 +01:00
4ea31f0f37
Add email-change permission validation for linked members
...
continuous-integration/drone/push Build is passing
Only admins or the linked user may change a linked member's email.
- New validation EmailChangePermission (uses Actor.admin?, Loader.get_linked_user).
- Register on Member update_member; docs and gettext.
2026-02-03 14:35:32 +01:00
960506d16a
refactoring
continuous-integration/drone/push Build is passing
continuous-integration/drone/promote/production Build is passing
2026-02-02 16:56:07 +01:00
aef3aa299f
fix test
continuous-integration/drone/push Build is passing
continuous-integration/drone/promote/production Build is passing
2026-02-02 15:04:07 +01:00
9e27de84cb
Merge branch 'main' into feature/338_import_custom_fields
continuous-integration/drone/push Build is failing
2026-02-02 13:46:05 +01:00
86a3c4e50e
tests: add tests for import
2026-02-02 13:07:00 +01:00
b6d53d2826
refactor: add test to seperate async false module
2026-02-02 10:22:05 +01:00
d61a939deb
formatting
continuous-integration/drone/push Build is passing
2026-02-02 09:50:47 +01:00
9fd617e45a
tests: add tests for config
2026-02-02 09:48:37 +01:00
f8f6583679
PermissionSetsTest: assert /users/:id instead of /profile in pages
...
continuous-integration/drone/push Build was killed
continuous-integration/drone/promote/production Build is passing
Profile is reachable at /users/:id; /profile was removed from PermissionSets.
2026-01-30 11:37:34 +01:00
cf6bd4a6a1
UserPoliciesTest: use :update for non-admin own-email and forbid-other
...
- own_data, read_only, normal_user: can update own email via :update
- cannot update other users: use :update (scope :own forbids)
2026-01-30 11:13:34 +01:00
faee780aab
Tests: read_only/normal_user /users/:id, Ash.read! actor, Authorization own/other
...
continuous-integration/drone/push Build is passing
- Integration: read_only and normal_user GET /users/:id (own) and edit/show/edit return 200
- Integration: read_only GET /users/:id (other) redirects
- Plug test: use group_fixture in setup instead of Ash.read!() without actor
- Authorization: tests for own/other profile and reserved 'new'
2026-01-30 10:22:34 +01:00
3a7e4000c0
fix: fix warning of unused variable in UserLive.IndexTest
continuous-integration/drone/push Build is passing
2026-01-30 00:13:40 +01:00
28d134b2b0
chore: remove unused aliases in tests
...
continuous-integration/drone/push Build is passing
continuous-integration/drone/promote/production Build is passing
- Drop unused Member alias from membership and membership_fees test files.
2026-01-30 00:00:33 +01:00
b55f356762
fix: handle nil member in MembershipFeeHelpers
...
- get_last_completed_cycle/2 and get_current_cycle/2 return nil when member is nil.
- Avoids FunctionClauseError when MemberLive.Show receives no member (e.g. after
redirect or policy filter). Add unit tests for nil member.
2026-01-30 00:00:32 +01:00
ad00e8e7b6
test: add page permission tests and ConnCase role tags
...
- ConnCase: add :read_only and :normal_user role tags for tests.
- Add CheckPagePermission plug tests (unit + integration for member, read_only,
normal_user, admin). Update permission_sets_test (refute "/" for own_data).
- Profile navigation, global_settings, role_live, membership_fee_type: use
users with role for "/" access; expect redirect for own_data on /settings
and /admin/roles.
2026-01-30 00:00:32 +01:00
4473cfd372
Tests: use code interface for Member create/update (actor propagation)
continuous-integration/drone/push Build was killed
continuous-integration/drone/promote/production Build is passing
2026-01-29 16:10:12 +01:00
9a7622ebed
fix: pass actor to CustomFieldLive.FormComponent for save
...
IndexComponent now passes actor to FormComponent; FormComponent uses
assigns[:actor] instead of current_actor(socket). Add test that submits
new custom field form on settings page.
2026-01-29 16:10:12 +01:00
1d17c4f2dd
fix: CustomField policies, no system-actor fallback, guidelines
...
- Tests and UI pass actor for CustomField create/read/destroy; seeds use actor
- Member required-custom-fields validation uses context.actor only (no fallback)
- CODE_GUIDELINES: add rule forbidding system-actor fallbacks
2026-01-29 16:10:12 +01:00
36b5d5880b
Add CustomField resource policies and tests
...
- Add policies block with HasPermission for read/create/update/destroy
- Add authorizers: [Ash.Policy.Authorizer] to CustomField resource
- Add custom_field_policies_test.exs (read all roles, write admin only)
- Fix CustomField path in roles-and-permissions doc (lib/membership)
2026-01-29 16:10:12 +01:00
9b314a9806
fix: credo error
continuous-integration/drone/push Build is passing
continuous-integration/drone/promote/production Build is passing
2026-01-29 15:26:45 +01:00
b4adf63e83
feix: optimize queries for groups
continuous-integration/drone/push Build is failing
2026-01-29 15:22:40 +01:00
124ab295a6
fix: select all checkbox handling
2026-01-29 15:14:36 +01:00
0a1b52d978
test: fix tests
continuous-integration/drone/push Build was killed
continuous-integration/drone/pr Build is failing
2026-01-29 14:39:31 +01:00
0b29fbbd21
test: restore removed tests including optimizations
2026-01-29 12:59:06 +01:00
3f0dc868c9
chore: disable test performance output again
continuous-integration/drone/push Build is passing
2026-01-28 14:54:59 +01:00
c3ad8894b0
refactor: implement more review comments
continuous-integration/drone/push Build is passing
2026-01-28 14:47:30 +01:00
ea3bdcaa65
refactor: apply review comments
continuous-integration/drone/push Build is passing
2026-01-28 14:42:16 +01:00
050ca4a13c
test: move slow and less critical tests to nightly suite
continuous-integration/drone/push Build is passing
2026-01-28 14:34:05 +01:00
91f8bb03bc
refactor: remove tests against basic framework functionalities
continuous-integration/drone/push Build is passing
2026-01-28 13:46:18 +01:00
15d328afbf
test: optimize single test and update docs
continuous-integration/drone/push Build is passing
2026-01-28 13:33:39 +01:00
6efad280bd
refactor: apply review comments
continuous-integration/drone/push Build is passing
2026-01-28 12:36:19 +01:00
67e06e12ce
refactor: move slow performance tests to extra test suite
continuous-integration/drone/push Build is passing
2026-01-28 12:00:32 +01:00
fce01ddf83
style: fix formatting
continuous-integration/drone/push Build is passing
2026-01-28 11:32:46 +01:00
f9403c1da9
refactor: improve seeds tests performance by reducing complexity
continuous-integration/drone/push Build is failing
2026-01-28 11:31:31 +01:00
ddc8335cc0
refactor: improve groups LiveView based on code review feedback
continuous-integration/drone/push Build is passing
2026-01-28 10:33:27 +01:00
3eb4cde0b7
Merge remote-tracking branch 'origin/main' into feature/372-groups-management
continuous-integration/drone/push Build is passing
2026-01-27 23:48:31 +01:00
9991291b2f
test: adapt tests to reflect implementation details
continuous-integration/drone/push Build is passing
2026-01-27 23:40:12 +01:00
6faa9847f4
feat: add groups administration #372
2026-01-27 21:55:17 +01:00
f05fae3ea3
test: add tdd tests for groups administration #372
continuous-integration/drone/push Build is failing
2026-01-27 18:24:42 +01:00
2b4e1e3963
Sync user email to member when changing password (admin_set_password)
...
continuous-integration/drone/push Build is passing
Add SyncUserEmailToMember change to admin_set_password so email+password
updates in the user form sync the new email to the linked member.
2026-01-27 17:58:35 +01:00
7d33acde9f
feat(system_actor): add system_user?/1 and normalize email
...
Case-insensitive email comparison for system-actor detection.
2026-01-27 17:39:04 +01:00