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!