package main

// SEND: 2000000000ugnot

import (
	"std"

	"gno.land/p/testutils"
	"gno.land/r/users"
)

const admin = std.Address("g1us8428u2a5satrlxzagqqa5m6vmuze025anjlj")

func main() {
	caller := std.GetOrigCaller() // main
	users.Register("", "gnouser", "my profile")
	// as admin, grant invites to gnouser
	std.TestSetOrigCaller(admin)
	users.GrantInvites(caller.String() + ":1")
	// switch back to caller
	std.TestSetOrigCaller(caller)
	// invite another addr
	test1 := testutils.TestAddress("test1")
	users.Invite(test1.String())
	// switch to test1
	std.TestSetOrigCaller(test1)
	std.TestSetOrigSend(std.Coins{{"dontcare", 1}}, nil)
	users.Register(caller, "satoshi", "my other profile")
	println(users.Render(""))
	println("========================================")
	println(users.Render("gnouser"))
	println("========================================")
	println(users.Render("satoshi"))
	println("========================================")
	println(users.Render("badname"))
}

// Output:
// * [gnouser](/r/users:gnouser)
//  * [satoshi](/r/users:satoshi)
//
// ========================================
// ## user gnouser
//
//  * address = g17rgsdnfxzza0sdfsdma37sdwxagsz378833ca4
//  * 9 invites
//
// my profile
//
// ========================================
// ## user satoshi
//
//  * address = g1w3jhxap3ta047h6lta047h6lta047h6l4mfnm7
//  * 0 invites
//  * invited by g17rgsdnfxzza0sdfsdma37sdwxagsz378833ca4
//
// my other profile
//
// ========================================
// unknown username badname