All files / realm/blong-access/test user.play.ts

100% Statements 65/65
100% Branches 1/1
100% Functions 0/0
100% Lines 65/65

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 661x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 1x  
/**
 * `access.user` CRUD — Browse, Create, Edit full-stack tests.
 *
 * `cleanupModel` removes test-created rows (`ACC-PLAY-*`) left from previous
 * runs; `browseModel` filters to the seeded `testAdmin` marker so created rows
 * never leak into the baseline screenshot.
 */
import {expect, test} from '@feasibleone/blong-browser/playwright';
import {
    browseModel,
    cleanupModel,
    createAndEditModel,
} from '@feasibleone/blong-browser/playwright/model';
 
test.use({blongPermissions: true});
 
test.describe('Access User', () => {
    cleanupModel(test, expect, {
        subject: 'access',
        object: 'user',
        search: 'ACC-PLAY',
        removeMethod: 'access.user.remove',
    });
 
    browseModel(test, expect, {
        subject: 'access',
        object: 'user',
        searchText: 'testAdmin',
    });
 
    createAndEditModel(test, expect, {
        subject: 'access',
        object: 'user',
        fields: {
            'user.emailAddress': 'ACC-PLAY-001@example.com',
            'user.isActive': true,
        },
        editFields: {
            'user.emailAddress': 'ACC-PLAY-001-edited@example.com',
        },
        search: 'ACC-PLAY-001',
        // Credential (editable detail table) + role (pivot over the access.role
        // dropdown — assignment via the `granted` boolean cell).
        details: [
            {
                object: 'credential',
                fields: {
                    credentialType: {widget: 'select', value: 'Password'},
                    isActive: {widget: 'checkbox', value: true},
                },
                // Edit-on-detail: toggle the loaded credential's active flag.
                editFields: {isActive: {widget: 'checkbox', value: false}},
            },
            {
                object: 'role',
                pivot: true,
                fields: {granted: true},
            },
            // Effective-ACL panel (view-only).  The Record Access matrix has its
            // own spec (`matrix.play.ts`) — its rows are the graph's roles and
            // users, so capturing it here would drift as other specs mutate them.
            {object: 'effective', tab: 'Access', allowAdd: false, screenshots: {empty: false}},
        ],
    });
});