'target-b', 'group-a' => 'target-a', ], ); $second = RestoreScopeFingerprint::fromInputs( backupSetId: 10, scopeMode: 'selected', selectedItemIds: ['1', 3, 9], groupMapping: [ 'group-a' => 'target-a', 'group-b' => 'target-b', ], ); expect($first->selectedItemIds)->toBe([1, 3, 9]) ->and($first->fingerprint)->toBe($second->fingerprint); }); it('changes fingerprint when scope-affecting values change', function (): void { $base = RestoreScopeFingerprint::fromInputs( backupSetId: 10, scopeMode: 'selected', selectedItemIds: [1, 2], groupMapping: ['group-a' => 'target-a'], ); $changedSelection = RestoreScopeFingerprint::fromInputs( backupSetId: 10, scopeMode: 'selected', selectedItemIds: [1, 3], groupMapping: ['group-a' => 'target-a'], ); $changedMapping = RestoreScopeFingerprint::fromInputs( backupSetId: 10, scopeMode: 'selected', selectedItemIds: [1, 2], groupMapping: ['group-a' => 'SKIP'], ); expect($base->fingerprint)->not->toBe($changedSelection->fingerprint) ->and($base->fingerprint)->not->toBe($changedMapping->fingerprint); });