All files / src utils.ts

100% Statements 17/17
90% Branches 18/20
100% Functions 7/7
100% Lines 17/17

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 5474x   1x 10x 10x   21x       21x     21x     21x   21x                   2x 15x 29x   29x       29x     29x     29x   29x                  
import {Action, Transaction} from '@wharfkit/session'
 
export function hasOriginalActions(original: Transaction, modified: Transaction): boolean {
    return original.actions.every((originalAction: Action) => {
        return modified.actions.some((modifiedAction: Action) => {
            // Ensure the original contract account matches
            const matchesOriginalContractAccount = originalAction.account.equals(
                modifiedAction.account
            )
            // Ensure the original contract action matches
            const matchesOriginalContractAction = originalAction.name.equals(modifiedAction.name)
            // Ensure the original authorization is in tact
            const matchesOriginalAuthorization =
                originalAction.authorization.length === modifiedAction.authorization.length &&
                originalAction.authorization[0].actor.equals(modifiedAction.authorization[0].actor)
            // Ensure the original action data matches
            const matchesOriginalActionData = originalAction.data.equals(modifiedAction.data)
            // Return any action that does not match the original
            return (
                matchesOriginalContractAccount &&
                matchesOriginalContractAction &&
                matchesOriginalAuthorization &&
                matchesOriginalActionData
            )
        })
    })
}
 
export function getNewActions(original: Transaction, modified: Transaction): Action[] {
    return modified.actions.filter((modifiedAction: Action) => {
        return original.actions.every((originalAction: Action) => {
            // Ensure the original contract account matches
            const matchesOriginalContractAccount = originalAction.account.equals(
                modifiedAction.account
            )
            // Ensure the original contract action matches
            const matchesOriginalContractAction = originalAction.name.equals(modifiedAction.name)
            // Ensure the original authorization is in tact
            const matchesOriginalAuthorization =
                originalAction.authorization.length === modifiedAction.authorization.length &&
                originalAction.authorization[0].actor.equals(modifiedAction.authorization[0].actor)
            // Ensure the original action data matches
            const matchesOriginalActionData = originalAction.data.equals(modifiedAction.data)
            // Return any action that does not match the original
            return !(
                matchesOriginalContractAccount &&
                matchesOriginalContractAction &&
                matchesOriginalAuthorization &&
                matchesOriginalActionData
            )
        })
    })
}