Por fim, vamos testar a parte de votar:
test("can vote", async (t) => {
const { contract, root } = t.context.accounts
const now = new Date().getTime()
// Crea la elección
await root.call(contract, "create_election", {
endsAt: now + 1000 * 60 * 60,
name: "Test Election",
startsAt: now,
})
// Agrega el candidato
await root.call(contract, "add_candidate_to_election", {
accountId: "test.accountId",
electionId: 0
})
// Agrega otro candidato
await root.call(contract, "add_candidate_to_election", {
accountId: "test.accountId2",
electionId: 0
})
// Vota
await root.call(contract, "vote", {
electionId: 0,
candidateId: "test.accountId"
})
const election: Election = await contract.view("get_election", { electionId: 0 })
const candidates: Candidate[] = election.candidates
t.is(candidates[0].totalVotes, 1)
t.is(candidates[1].totalVotes, 0)
})
Novamente, criamos uma eleição, adicionamos candidatos fictícios e chamamos a função *vote*. Lembre-se que nessa função o timestamp na criação de eleição é importante, uma vez que não será possível votar se a eleição não estiver acontencendo e nosso teste falhará.
Por fim, retornamos os candidatos da eleição e verificamos o número de votos dos mesmos utilizando o método *is*, que verifica o valor de uma variável.
Agora que criamos o testes, podemos executá-los utilizando o seguinte comando no terminal:
npm run test
Caso todos passem, parabéns! Você concluiu com êxito esse curso e seu contrato pode ser deployado com mais segurança!
Connect Your Wallet

What is a Wallet?
Safely store and transfer your crypto and NFTs.
No need to create new accounts or credentials. Connect your wallet and you are good to go!