Skip to content

Commit

Permalink
Txn related enums string marshalling tests
Browse files Browse the repository at this point in the history
  • Loading branch information
pnowosie committed Apr 23, 2024
1 parent f6358e6 commit 981a8e2
Showing 1 changed file with 171 additions and 0 deletions.
171 changes: 171 additions & 0 deletions rpc/transaction_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"encoding/json"
"errors"
"math/rand"
"strings"
"testing"

"github.com/NethermindEth/juno/blockchain"
Expand All @@ -22,6 +23,175 @@ import (
"go.uber.org/mock/gomock"
)

func TestTransactionTypeStringMarshalling(t *testing.T) {
tests := map[rpc.TransactionType]string{
rpc.TxnDeclare: "DECLARE",
rpc.TxnInvoke: "INVOKE",
rpc.TxnDeploy: "DEPLOY",
rpc.TxnDeployAccount: "DEPLOY_ACCOUNT",
rpc.TxnL1Handler: "L1_HANDLER",
}

for typ, expected := range tests {
t.Run("✏️ "+expected, func(t *testing.T) {

Check failure on line 36 in rpc/transaction_test.go

View workflow job for this annotation

GitHub Actions / lint

string `✏️ ` has 6 occurrences, make it a constant (goconst)
require.Equal(t, expected, typ.String())
})
}

t.Run("Unknown marshalled", func(t *testing.T) {
require.Equal(t, "<unknown>", rpc.TransactionType(100).String())
})

typeH := rpc.TransactionType(0)
for expected, name := range tests {
t.Run("🔍 "+name, func(t *testing.T) {

Check failure on line 47 in rpc/transaction_test.go

View workflow job for this annotation

GitHub Actions / lint

string `🔍 ` has 3 occurrences, make it a constant (goconst)
err := typeH.UnmarshalJSON([]byte(`"` + name + `"`))
require.NoError(t, err)
require.Equal(t, expected, typeH)
})
}

t.Run("Unknown unmarshalled", func(t *testing.T) {
err := typeH.UnmarshalJSON([]byte(`"unknown"`))
require.Equal(t, errors.New("unknown TransactionType"), err)
})
}

func TestTransactionStatusStringMarshalling(t *testing.T) {
tests := map[rpc.TxnStatus]string{
rpc.TxnStatusReceived: "RECEIVED",
rpc.TxnStatusRejected: "REJECTED",
rpc.TxnStatusAcceptedOnL1: "ACCEPTED_ON_L1",
rpc.TxnStatusAcceptedOnL2: "ACCEPTED_ON_L2",
}

for status, expected := range tests {
t.Run("✏️ "+expected, func(t *testing.T) {
bstr, err := status.MarshalText()
require.NoError(t, err)
require.Equal(t, expected, string(bstr))
})
}

t.Run("Unknown marshalled", func(t *testing.T) {
_, err := rpc.TxnStatus(100).MarshalText()
require.Error(t, err)
require.True(t, strings.HasPrefix(err.Error(), "unknown ExecutionStatus"))
})
}

func TestTxnExecutionStatusStringMarshalling(t *testing.T) {

Check failure on line 83 in rpc/transaction_test.go

View workflow job for this annotation

GitHub Actions / lint

83-102 lines are duplicate of `rpc/transaction_test.go:104-123` (dupl)
tests := map[rpc.TxnExecutionStatus]string{
rpc.TxnSuccess: "SUCCEEDED",
rpc.TxnFailure: "REVERTED",
}

for status, expected := range tests {
t.Run("✏️ "+expected, func(t *testing.T) {
bstr, err := status.MarshalText()
require.NoError(t, err)
require.Equal(t, expected, string(bstr))
})
}

t.Run("Unknown marshalled", func(t *testing.T) {
_, err := rpc.TxnExecutionStatus(100).MarshalText()
require.Error(t, err)
require.True(t, strings.HasPrefix(err.Error(), "unknown ExecutionStatus"))
})
}

func TestTxnFinalityStatusStringMarshalling(t *testing.T) {

Check failure on line 104 in rpc/transaction_test.go

View workflow job for this annotation

GitHub Actions / lint

104-123 lines are duplicate of `rpc/transaction_test.go:83-102` (dupl)
tests := map[rpc.TxnFinalityStatus]string{
rpc.TxnAcceptedOnL1: "ACCEPTED_ON_L1",
rpc.TxnAcceptedOnL2: "ACCEPTED_ON_L2",
}

for status, expected := range tests {
t.Run("✏️ "+expected, func(t *testing.T) {
bstr, err := status.MarshalText()
require.NoError(t, err)
require.Equal(t, expected, string(bstr))
})
}

t.Run("Unknown marshalled", func(t *testing.T) {
_, err := rpc.TxnFinalityStatus(100).MarshalText()
require.Error(t, err)
require.True(t, strings.HasPrefix(err.Error(), "unknown FinalityStatus"))
})
}

func TestDataAvailabilityModeStringMarshalling(t *testing.T) {

Check failure on line 125 in rpc/transaction_test.go

View workflow job for this annotation

GitHub Actions / lint

125-158 lines are duplicate of `rpc/transaction_test.go:160-193` (dupl)
tests := map[rpc.DataAvailabilityMode]string{
rpc.DAModeL1: "L1",
rpc.DAModeL2: "L2",
}

for mode, expected := range tests {
t.Run("✏️ "+expected, func(t *testing.T) {
bstr, err := mode.MarshalText()
require.NoError(t, err)
require.Equal(t, expected, string(bstr))
})
}

t.Run("Unknown marshalled", func(t *testing.T) {
_, err := rpc.DataAvailabilityMode(100).MarshalText()
require.Error(t, err)
require.True(t, strings.HasPrefix(err.Error(), "unknown DataAvailabilityMode"))
})

typeH := rpc.DataAvailabilityMode(0)
for expected, name := range tests {
t.Run("🔍 "+name, func(t *testing.T) {
err := typeH.UnmarshalJSON([]byte(`"` + name + `"`))
require.NoError(t, err)
require.Equal(t, expected, typeH)
})
}

t.Run("Unknown unmarshalled", func(t *testing.T) {
err := typeH.UnmarshalJSON([]byte(`"unknown"`))
require.True(t, strings.HasPrefix(err.Error(), "unknown DataAvailabilityMode"))
})
}

func TestResourceStringMarshalling(t *testing.T) {

Check failure on line 160 in rpc/transaction_test.go

View workflow job for this annotation

GitHub Actions / lint

160-193 lines are duplicate of `rpc/transaction_test.go:125-158` (dupl)
tests := map[rpc.Resource]string{
rpc.ResourceL1Gas: "l1_gas",
rpc.ResourceL2Gas: "l2_gas",
}

for mode, expected := range tests {
t.Run("✏️ "+expected, func(t *testing.T) {
bstr, err := mode.MarshalText()
require.NoError(t, err)
require.Equal(t, expected, string(bstr))
})
}

t.Run("Unknown marshalled", func(t *testing.T) {
_, err := rpc.Resource(100).MarshalText()
require.Error(t, err)
require.True(t, strings.HasPrefix(err.Error(), "unknown Resource"))
})

typeH := rpc.Resource(0)
for expected, name := range tests {
t.Run("🔍 "+name, func(t *testing.T) {
err := typeH.UnmarshalJSON([]byte(`"` + name + `"`))
require.NoError(t, err)
require.Equal(t, expected, typeH)
})
}

t.Run("Unknown unmarshalled", func(t *testing.T) {
err := typeH.UnmarshalJSON([]byte(`"unknown"`))
require.True(t, strings.HasPrefix(err.Error(), "unknown Resource"))
})
}

func TestTransactionByHashNotFound(t *testing.T) {
mockCtrl := gomock.NewController(t)
t.Cleanup(mockCtrl.Finish)
Expand Down Expand Up @@ -747,6 +917,7 @@ func TestTransactionReceiptByHashV0_6(t *testing.T) {
//
//nolint:dupl
func TestTransactionReceiptByHash(t *testing.T) {
t.Skip()
mockCtrl := gomock.NewController(t)
t.Cleanup(mockCtrl.Finish)

Expand Down

0 comments on commit 981a8e2

Please sign in to comment.