Paso 11

To Share and +4 nLEARNs

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!

Generate comment with AI 2 nL
Scroll to Top