unlock_test.gno

package params

import (
	"testing"

	"gno.land/p/nt/testutils/v0"
	"gno.land/p/nt/urequire/v0"
	"gno.land/r/gov/dao"
	ini "gno.land/r/gov/dao/v3/init"
)

var g1user = testutils.TestAddress("g1user")

func init() {
	testing.SetRealm(testing.NewUserRealm(g1user))
	ini.InitWithUsers(g1user)
}

func TestProUnlockTransfer(t *testing.T) {
	testing.SetRealm(testing.NewUserRealm(g1user))

	pr := ProposeUnlockTransferRequest()
	id := dao.MustCreateProposal(cross, pr)
	p, err := dao.GetProposal(cross, id)
	urequire.NoError(t, err)
	urequire.Equal(t, unlockTransferTitle, p.Title())
}

func TestFailUnlockTransfer(t *testing.T) {
	testing.SetRealm(testing.NewUserRealm(g1user))

	pr := ProposeUnlockTransferRequest()
	id := dao.MustCreateProposal(cross, pr)
	urequire.AbortsWithMessage(
		t,
		"proposal didn't reach supermajority yet: 66.66",
		func() {
			dao.ExecuteProposal(cross, id)
		},
	)
}

func TestExeUnlockTransfer(t *testing.T) {
	testing.SetRealm(testing.NewUserRealm(g1user))

	pr := ProposeUnlockTransferRequest()
	id := dao.MustCreateProposal(cross, pr)
	_, err := dao.GetProposal(cross, id)
	urequire.NoError(t, err)
	// urequire.True(t, dao.Active == p.Status()) // TODO

	urequire.NotPanics(
		t,
		func() {
			dao.MustVoteOnProposal(cross, dao.VoteRequest{
				Option:     dao.YesVote,
				ProposalID: dao.ProposalID(id),
			})
		},
	)

	urequire.NotPanics(
		t,
		func() {
			dao.ExecuteProposal(cross, id)
		},
	)
}