Skip to content

Commit a5cef66

Browse files
omarsyVillaquiranm
authored andcommitted
feat: add test
1 parent 296d1f5 commit a5cef66

File tree

5 files changed

+131
-15
lines changed

5 files changed

+131
-15
lines changed

examples/gno.land/p/demo/teritori/worx/worxs.gno

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ package worx
33
import (
44
"gno.land/p/demo/avl"
55
"gno.land/p/demo/ufmt"
6+
"time"
67
)
78

89
type WorxKeeper struct {
9-
worxs []*Worx
10+
worxs *avl.Tree
1011
}
1112

1213
const dayToSeconds = 1
@@ -18,7 +19,16 @@ func NewWorxKeeper() *WorxKeeper {
1819
}
1920

2021
func (keeper *WorxKeeper) Store(worx *Worx) {
21-
keeper.worxs = append(keeper.worxs, worx)
22+
storekey := ufmt.Sprintf("%d", time.Now().Unix())
23+
worxs, ok:= keeper.worxs.Get(storekey)
24+
if ok {
25+
worxsOnDay := worxs.([]*Worx)
26+
worxsOnDay = append(worxsOnDay, worx)
27+
keeper.worxs.Set(storekey, worxsOnDay)
28+
return
29+
}
30+
31+
keeper.worxs.Set(storekey, []*Worx{worx})
2232
}
2333

2434
func (keeper *WorxKeeper) Get() []*Worx {
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package worx
2+
3+
import (
4+
"testing"
5+
"gno.land/p/demo/rand"
6+
"gno.land/p/demo/testutils"
7+
"gno.land/p/demo/ufmt"
8+
"std"
9+
)
10+
11+
func TestAddGet(t *testing.T) {
12+
keeper := NewWorxKeeper()
13+
user1 := testutils.TestAddress("user1")
14+
if len(keeper.Get()) != 0{
15+
t.Fatalf("Keeper is not empty initialized")
16+
}
17+
18+
fillRandomWorx(keeper, 10123423, user1)
19+
if len(keeper.Get()) != 1{
20+
t.Fatalf("Keeper Worx was not added to keeper 1")
21+
}
22+
23+
fillRandomWorx(keeper, 10123423, user1)
24+
if len(keeper.Get()) != 2{
25+
t.Fatalf("Keeper Worx was not added to keeper 2")
26+
}
27+
}
28+
29+
func TestGetFromDate(t *testing.T) {
30+
keeper := NewWorxKeeper()
31+
user1 := testutils.TestAddress("user1")
32+
if len(keeper.Get()) != 0{
33+
t.Fatalf("Keeper is not empty initialized")
34+
}
35+
36+
for i:=0; i < 100; i++ {
37+
fillRandomWorx(keeper, int64(i*10), user1)
38+
}
39+
40+
if len(keeper.Get()) != 100{
41+
t.Fatalf("Keeper Worx was not totally added")
42+
}
43+
44+
if len(keeper.GetFromDate(1003)) != 0 {
45+
t.Fatalf("Get From Date Should have found 0 registers")
46+
}
47+
48+
if len(keeper.GetFromDate(903)) != 9 {
49+
t.Fatalf("Get From Date Should have found 9 registers")
50+
}
51+
52+
}
53+
54+
func fillRandomWorx(keeper *WorxKeeper, timestamp int64, address std.Address){
55+
r := rand.New()
56+
keeper.Store(NewWorx(
57+
r.Intn(25),
58+
"somekey",
59+
address,
60+
r.Intn(100),
61+
timestamp,
62+
))
63+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package worx_aggregator
2+
3+
import (
4+
"std"
5+
)
6+
7+
var adminAddr std.Address
8+
9+
func assertIsAdmin() {
10+
if std.PrevRealm().Addr() != adminAddr {
11+
panic("restricted area")
12+
}
13+
}
14+
15+
func setAdminAddress(address std.Address) {
16+
adminAddr = address
17+
}
18+
19+
func SetAdminAddress(address std.Address) {
20+
assertIsAdmin()
21+
setAdminAddress(address)
22+
}

examples/gno.land/r/demo/teritori/worx_aggregator/worx.gno

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,16 @@ import (
88
)
99

1010
var (
11-
admin std.Address
12-
registeredProviders avl.Tree
13-
worxByAddress avl.Tree
11+
registeredProviders *avl.Tree
12+
worxByAddress *avl.Tree
1413
)
1514

15+
func init() {
16+
registeredProviders = avl.NewTree()
17+
worxByAddress = avl.NewTree()
18+
setAdminAddress(std.PrevRealm().Addr())
19+
}
20+
1621
func Push(hours int, metadata string, addr std.Address, points int, timestamp int64) {
1722
assertRegistered(addr)
1823

@@ -31,13 +36,13 @@ func getKeeper(addr std.Address) *worx.WorxKeeper {
3136
if ok {
3237
return data.(*worx.WorxKeeper)
3338
}
34-
return &worx.WorxKeeper{}
39+
return worx.NewWorxKeeper()
3540
}
3641

3742
func RegisterDataProvider(addr std.Address) {
38-
assertAdmin()
43+
assertIsAdmin()
3944
_, ok := registeredProviders.Get(string(addr))
40-
if !ok {
45+
if ok {
4146
panic("Data provider already registered")
4247
}
4348
registeredProviders.Set(string(addr), 0)
@@ -50,9 +55,3 @@ func assertRegistered(addr std.Address) {
5055
panic("caller realm is not registered as provider")
5156
}
5257
}
53-
54-
func assertAdmin() {
55-
if std.PrevRealm().Addr() != admin {
56-
panic("unathorized")
57-
}
58-
}
Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package worx_aggregator
22

33
import (
4+
"std"
45
"testing"
6+
7+
"gno.land/p/demo/avl"
58
"gno.land/p/demo/testutils"
69
)
710

8-
func TestPushCallerNotRegistered(t * testing.T){
11+
func TestPushCallerNotRegistered(t *testing.T) {
912
user1 := testutils.TestAddress("user1")
1013
defer func() {
1114
if v := recover(); v == nil {
@@ -14,3 +17,22 @@ func TestPushCallerNotRegistered(t * testing.T){
1417
}()
1518
Push(1, "", user1, 3, 10)
1619
}
20+
21+
func TestHappyPath(t *testing.T) {
22+
registeredProviders = avl.NewTree()
23+
worxByAddress = avl.NewTree()
24+
25+
realm := testutils.TestAddress("realm")
26+
admin := testutils.TestAddress("admin")
27+
user1 := testutils.TestAddress("user1")
28+
29+
setAdminAddress(admin)
30+
31+
std.TestSetOrigCaller(admin)
32+
33+
RegisterDataProvider(realm)
34+
35+
std.TestSetOrigCaller(realm)
36+
37+
Push(1, "", user1, 3, 10)
38+
}

0 commit comments

Comments
 (0)