Search Apps Documentation Source Content File Folder Download Copy Actions Download

profile_test.gno

3.74 Kb ยท 141 lines
  1package profile
  2
  3import (
  4	"testing"
  5
  6	"gno.land/p/nt/testutils"
  7	"gno.land/p/nt/uassert"
  8)
  9
 10// Global addresses for test users
 11var (
 12	alice   = testutils.TestAddress("alice")
 13	bob     = testutils.TestAddress("bob")
 14	charlie = testutils.TestAddress("charlie")
 15	dave    = testutils.TestAddress("dave")
 16	eve     = testutils.TestAddress("eve")
 17	frank   = testutils.TestAddress("frank")
 18	user1   = testutils.TestAddress("user1")
 19	user2   = testutils.TestAddress("user2")
 20)
 21
 22func TestStringFields(t *testing.T) {
 23	testing.SetRealm(testing.NewUserRealm(alice))
 24
 25	// Get before setting
 26	name := GetStringField(alice, DisplayName, "anon")
 27	uassert.Equal(t, "anon", name)
 28
 29	// Set new key
 30	updated := SetStringField(cross, DisplayName, "Alice foo")
 31	uassert.Equal(t, updated, false)
 32	updated = SetStringField(cross, Homepage, "https://example.com")
 33	uassert.Equal(t, updated, false)
 34
 35	// Update the key
 36	updated = SetStringField(cross, DisplayName, "Alice foo")
 37	uassert.Equal(t, updated, true)
 38
 39	// Get after setting
 40	name = GetStringField(alice, DisplayName, "anon")
 41	homepage := GetStringField(alice, Homepage, "")
 42	bio := GetStringField(alice, Bio, "42")
 43
 44	uassert.Equal(t, "Alice foo", name)
 45	uassert.Equal(t, "https://example.com", homepage)
 46	uassert.Equal(t, "42", bio)
 47}
 48
 49func TestIntFields(t *testing.T) {
 50	testing.SetRealm(testing.NewUserRealm(bob))
 51
 52	// Get before setting
 53	age := GetIntField(bob, Age, 25)
 54	uassert.Equal(t, 25, age)
 55
 56	// Set new key
 57	updated := SetIntField(cross, Age, 30)
 58	uassert.Equal(t, updated, false)
 59
 60	// Update the key
 61	updated = SetIntField(cross, Age, 30)
 62	uassert.Equal(t, updated, true)
 63
 64	// Get after setting
 65	age = GetIntField(bob, Age, 25)
 66	uassert.Equal(t, 30, age)
 67}
 68
 69func TestBoolFields(t *testing.T) {
 70	testing.SetRealm(testing.NewUserRealm(charlie))
 71
 72	// Get before setting
 73	hiring := GetBoolField(charlie, AvailableForHiring, false)
 74	uassert.Equal(t, false, hiring)
 75
 76	// Set
 77	updated := SetBoolField(cross, AvailableForHiring, true)
 78	uassert.Equal(t, updated, false)
 79
 80	// Update the key
 81	updated = SetBoolField(cross, AvailableForHiring, true)
 82	uassert.Equal(t, updated, true)
 83
 84	// Get after setting
 85	hiring = GetBoolField(charlie, AvailableForHiring, false)
 86	uassert.Equal(t, true, hiring)
 87}
 88
 89func TestMultipleProfiles(t *testing.T) {
 90	// Set profile for user1
 91	testing.SetRealm(testing.NewUserRealm(user1))
 92	updated := SetStringField(cross, DisplayName, "User One")
 93	uassert.Equal(t, updated, false)
 94
 95	// Set profile for user2
 96	testing.SetRealm(testing.NewUserRealm(user2))
 97	updated = SetStringField(cross, DisplayName, "User Two")
 98	uassert.Equal(t, updated, false)
 99
100	// Get profiles
101	testing.SetRealm(testing.NewUserRealm(user1)) // Switch back to user1
102	name1 := GetStringField(user1, DisplayName, "anon")
103	testing.SetRealm(testing.NewUserRealm(user2)) // Switch back to user2
104	name2 := GetStringField(user2, DisplayName, "anon")
105
106	uassert.Equal(t, "User One", name1)
107	uassert.Equal(t, "User Two", name2)
108}
109
110func TestArbitraryStringField(t *testing.T) {
111	testing.SetRealm(testing.NewUserRealm(user1))
112
113	// Set arbitrary string field
114	updated := SetStringField(cross, "MyEmail", "my@email.com")
115	uassert.Equal(t, updated, false)
116
117	val := GetStringField(user1, "MyEmail", "")
118	uassert.Equal(t, val, "my@email.com")
119}
120
121func TestArbitraryIntField(t *testing.T) {
122	testing.SetRealm(testing.NewUserRealm(user1))
123
124	// Set arbitrary int field
125	updated := SetIntField(cross, "MyIncome", 100_000)
126	uassert.Equal(t, updated, false)
127
128	val := GetIntField(user1, "MyIncome", 0)
129	uassert.Equal(t, val, 100_000)
130}
131
132func TestArbitraryBoolField(t *testing.T) {
133	testing.SetRealm(testing.NewUserRealm(user1))
134
135	// Set arbitrary bool field
136	updated := SetBoolField(cross, "IsWinner", true)
137	uassert.Equal(t, updated, false)
138
139	val := GetBoolField(user1, "IsWinner", false)
140	uassert.Equal(t, val, true)
141}