---
# System prepended metadata

title: Enzyme protocol tests
tags: [CodeRead]

---

# Enzyme protocol tests
###### tags: `CodeRead`

# persistent
## shares-splitter
### SharesSplitterFactory.test.ts
- does not allow unequal arrays
    - test deploy function
- works as expected
### SharesSplitterProxy.test.ts
- init
    -  cannot be called by a random caller
        - Unauthorized
- redeemShares
    - does not allow a call without a claimable amount of shares
        - No shares claimed
    - works as expected (v4: in-kind redemption)
    - works as expected (v4: specific-assets redemption)

### TreasurySplitterMixin.test.ts
- __setSplitRatio
    - does not allow empty user
    - does not allow duplicate user
    - does not allow a bad split ratio
    - works as expected
- claimTokenAmountTo
    - does not allow an amount greater than claimable
    - works as expected (partial claim)
- Walkthrough
    - works with multiple claims and token top-ups
## others
### AddressListRegistry.test.ts
- constructor
    - sets state vars
- addToList
    - does not allow a random caller
    - allows a list owned by Dispatcher to be updated by Dispatcher owner
    - does not allow UpdateType.None
    - does not allow UpdateType.RemoveOnly
    - happy path: UpdateType.AddOnly
    - happy path: UpdateType.AddAndRemove
- createList
    - happy path
- removeFromList
    - does not allow a random caller
    - does not allow UpdateType.None
    - does not allow UpdateType.AddOnly
    - happy path: UpdateType.RemoveOnly
    - happy path: UpdateType.AddAndRemove
- setListOwner
    - does not allow a random caller
    - happy path
- setListUpdateType
- list search
    - check if work
        - steps
            - Define lists
            - Create lists
            - Single item, multiple lists
                - isInAllLists()
                - isInSomeOfLists()
            - Multiple items, multiple lists
                - areAllInAllLists()
                - areAllInSomeOfLists
                - areAllNotInAnyOfLists
### Dispatcher.test.ts
- function
    - ensureFundDeployer
    - deployVault
    - signalMigration
- constructor
    - sets initial state
- setNominatedOwner
    - can only be called by the contract owner
    - does not allow an empty next owner address
    - does not allow the next owner to be the current owner
    - does not allow the next owner to already be nominated
    - correctly handles nominating a new owner
- removeNominatedOwner
    - can only be called by the contract owner
    - correctly handles removing the nomination
- claimOwnership
    - can only be called by the nominatedOwner
    - correctly handles transferring ownership 
- deployVaultProxy
    - does not allow a bad VaultLib
    - does not allow a non-contract _vaultAccessor
    - does not allow a non-contract _vaultAccessor
- signalMigration
    - can only be called by the current fund deployer
    - does not allow a non-contract _vaultAccessor
    - does not allow non-existent VaultProxy
    - cannot be called if fund is already on the current FundDeployer
    - correctly handles MigrationOutHook.PreSignal failure
    - correctly signals a migration
- cancelMigration
    - does not allow non-existent migration request
    - can not be called by an account other the vaultProxy owner or migrator, or the FundDeployer in the migration request
    - correctly cancels a migration request
- executeMigration
    - does not allow a bad vaultLib
    - does not allow non-existent migration request
    - can only be called by the target FundDeployer in the migration request
    - cannot be called when the target FundDeployer in the migration request is no longer the current FundDeployer
    - cannot be called when the migration timelock has not yet been met
    - correctly executes a migration request
- setMigrationTimelock
    - can only be called by the contract owner
    - does not allow the current migrationTimelock value
    - correctly handles setting a new migration timelock
- correctly handles setting a new migration timelock
    - returns 0 if 
        - vaultProxy is not valid
        - vaultProxy does not have a signaled migration
        - block timestamp >= executableTimestamp
        - returns the remaining time if block timestamp < executableTimestamp
- hasExecutableMigrationRequest
    - returns false if 
        - vaultProxy is not valid
        - no migration has been signaled
        - elapsedTime < migrationTimelock
        - returns true if elapsedTime >= migrationTimelock
- setCurrentFundDeployer
    - disallows 
        - calling with account other than owner
        - empty address as nextFundDeployer
    - nextFundDeployer can't be the same as currentFundDeployer
    - does not allow _nextFundDeployer to be a non-contract
    - correctly sets new current fund deployer and emits CurrentFundDeployerSet event
- setSharesTokenSymbol
    - disallows a call by a random user
    - correctly updates the SharesTokenSymbol and emits event
    
    
### GlobalConfig.test.ts
### AddressListRegistry.test.ts
### Dispatcher.test.ts
### GlobalConfig.test.ts
# release