diff --git a/examples/nft-nd-nns/tests/nonnative_name_service_test.go b/examples/nft-nd-nns/tests/nonnative_name_service_test.go index 40840981a..ecd602786 100644 --- a/examples/nft-nd-nns/tests/nonnative_name_service_test.go +++ b/examples/nft-nd-nns/tests/nonnative_name_service_test.go @@ -20,10 +20,7 @@ func newNSClient(t *testing.T) *neotest.ContractInvoker { c := neotest.CompileFile(t, e.CommitteeHash, "..", "../nns.yml") e.DeployContract(t, c, nil) - h, err := e.Chain.GetContractScriptHash(1) - require.NoError(t, err) - require.Equal(t, c.Hash, h) - return e.CommitteeInvoker(h) + return e.CommitteeInvoker(c.Hash) } func TestNameService_Price(t *testing.T) { diff --git a/pkg/neotest/basic.go b/pkg/neotest/basic.go index 854a907e2..422c967be 100644 --- a/pkg/neotest/basic.go +++ b/pkg/neotest/basic.go @@ -114,13 +114,24 @@ func (e *Executor) NewAccount(t *testing.T) Signer { return NewSingleSigner(acc) } -// DeployContract compiles and deploys contract to bc. +// DeployContract compiles and deploys contract to bc. It also checks that +// precalculated contract hash matches the actual one. // data is an optional argument to `_deploy`. // Returns hash of the deploy transaction. func (e *Executor) DeployContract(t *testing.T, c *Contract, data interface{}) util.Uint256 { tx := e.NewDeployTx(t, e.Chain, c, data) e.AddNewBlock(t, tx) e.CheckHalt(t, tx.Hash()) + + // Check that precalculated hash matches the real one. + e.CheckTxNotificationEvent(t, tx.Hash(), -1, state.NotificationEvent{ + ScriptHash: e.NativeHash(t, nativenames.Management), + Name: "Deploy", + Item: stackitem.NewArray([]stackitem.Item{ + stackitem.NewByteArray(c.Hash.BytesBE()), + }), + }) + return tx.Hash() }