From b7d9663bf470d180745108e3238537ca791cdd2f Mon Sep 17 00:00:00 2001 From: Hieu Vu <72878483+hieuvubk@users.noreply.github.com> Date: Tue, 25 Oct 2022 14:55:08 +0700 Subject: [PATCH 1/2] add tests for GetIfFound --- osmoutils/store_helper_test.go | 90 ++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/osmoutils/store_helper_test.go b/osmoutils/store_helper_test.go index bbae8526fbd..e601663778c 100644 --- a/osmoutils/store_helper_test.go +++ b/osmoutils/store_helper_test.go @@ -811,6 +811,96 @@ func (s *TestSuite) TestMustGet() { } } +// TestMustGet tests that GetIfFound returns a boolean indicating +// whether value exists for the given key and error +func (s *TestSuite) TestGetIfFound() { + tests := map[string]struct { + // keys and values to preset + preSetKeyValues map[string]proto.Message + + // keys and values to attempt to get and validate + expectedGetKeyValues map[string]proto.Message + + actualResultProto proto.Message + + expectFound bool + + expectErr bool + }{ + "basic valid test": { + preSetKeyValues: map[string]proto.Message{ + keyA: &sdk.DecProto{Dec: sdk.OneDec()}, + keyB: &sdk.DecProto{Dec: sdk.OneDec().Add(sdk.OneDec())}, + keyC: &sdk.DecProto{Dec: sdk.OneDec().Add(sdk.OneDec())}, + }, + + expectedGetKeyValues: map[string]proto.Message{ + keyA: &sdk.DecProto{Dec: sdk.OneDec()}, + keyB: &sdk.DecProto{Dec: sdk.OneDec().Add(sdk.OneDec())}, + keyC: &sdk.DecProto{Dec: sdk.OneDec().Add(sdk.OneDec())}, + }, + + actualResultProto: &sdk.DecProto{}, + + expectFound: true, + }, + "attempt to get non-existent key - not found & no err return": { + preSetKeyValues: map[string]proto.Message{ + keyA: &sdk.DecProto{Dec: sdk.OneDec()}, + keyC: &sdk.DecProto{Dec: sdk.OneDec().Add(sdk.OneDec())}, + }, + + expectedGetKeyValues: map[string]proto.Message{ + keyB: &sdk.DecProto{Dec: sdk.OneDec().Add(sdk.OneDec())}, + }, + + actualResultProto: &sdk.DecProto{}, + + expectFound: false, + + expectErr: false, + }, + "invalid proto Dec vs TwapRecord - found but Unmarshal err": { + preSetKeyValues: map[string]proto.Message{ + keyA: &sdk.DecProto{Dec: sdk.OneDec()}, + }, + + expectedGetKeyValues: map[string]proto.Message{ + keyA: &sdk.DecProto{Dec: sdk.OneDec()}, + }, + + actualResultProto: &twaptypes.TwapRecord{}, + + expectFound: true, + + expectErr: true, + }, + } + + for name, tc := range tests { + s.Run(name, func() { + s.SetupStoreWithBasePrefix() + + // Setup + for key, value := range tc.preSetKeyValues { + osmoutils.MustSet(s.store, []byte(key), value) + } + + for key, expectedValue := range tc.expectedGetKeyValues { + // System under test. + found, err := osmoutils.GetIfFound(s.store, []byte(key), tc.actualResultProto) + // Assertions. + s.Require().Equal(found, tc.expectFound) + if tc.expectErr { + s.Require().Error(err) + } else { + s.Require().Equal(expectedValue.String(), tc.actualResultProto.String()) + } + } + }) + } +} + // TestMustSet tests that MustSet updates the store correctly // and panics if an error is encountered. func (s *TestSuite) TestMustSet() { From 0ab283e9e434e8b1be0585f28fe21f358e17247b Mon Sep 17 00:00:00 2001 From: Hieu Vu <72878483+hieuvubk@users.noreply.github.com> Date: Tue, 25 Oct 2022 15:45:21 +0700 Subject: [PATCH 2/2] refactor --- osmoutils/store_helper_test.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/osmoutils/store_helper_test.go b/osmoutils/store_helper_test.go index e601663778c..c5ce97bcd38 100644 --- a/osmoutils/store_helper_test.go +++ b/osmoutils/store_helper_test.go @@ -893,7 +893,9 @@ func (s *TestSuite) TestGetIfFound() { s.Require().Equal(found, tc.expectFound) if tc.expectErr { s.Require().Error(err) - } else { + } + // make sure found by key & Unmarshal successfully + if !tc.expectErr && tc.expectFound { s.Require().Equal(expectedValue.String(), tc.actualResultProto.String()) } }