Skip to content

Commit

Permalink
Merge pull request EGCETSII#26 from Penyagolosa-3/postproc-josescrue
Browse files Browse the repository at this point in the history
Postproc josescrue
  • Loading branch information
Jomer1998 authored Dec 29, 2021
2 parents 3f99f3d + 4f302e9 commit 7fad889
Showing 1 changed file with 172 additions and 3 deletions.
175 changes: 172 additions & 3 deletions decide/postproc/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,13 @@ def test_identity(self):

def test_borda(self):
"""
* Definicion: Test que verifica que el algoritmo borda funciona correctamente
* Definición: Test que verifica que el algoritmo borda funciona correctamente
* Entrada: Votación
- Number: id de la opción
- Option: nombre de la opción
- Option: Nombre de la opción
- Votes: Número de votos que recibe en la votación
- Group: Grupo de votación al que pertenece
* Salida: los datos de entrada con un nuevo parámetro llamado total
* Salida: Los datos de entrada con un nuevo parámetro llamado total
que supone el valor de esa opción tras aplicar el algoritmo
"""
data = {
Expand Down Expand Up @@ -80,3 +80,172 @@ def test_borda(self):

values = response.json()
self.assertEqual(values, expected_result)

def test_bordaWrongPath(self):
"""
* Definición: Test que verifica que obtenemos un not found al realizar
un post a una página que no existe
* Entrada: Votación
- Number: id del partido
- Option: Nombre de la opción
- Votes: Número de votos que recibe en la votación
- Group: Grupo de votación al que pertenece
* Salida: 404, not found
"""
data = {
"type": "BORDA",
"options": [
{ "option": "Option 1", "number": 1, "votes": 3, "group":"g1" },
{ "option": "Option 2", "number": 2, "votes": 26, "group":"g1" },
{ "option": "Option 3", "number": 3, "votes": 9, "group":"g1" },
{ "option": "Option 1", "number": 4, "votes": 12, "group":"g2" },
{ "option": "Option 2", "number": 5, "votes": 7, "group":"g2" },
{ "option": "Option 3", "number": 6, "votes": 2, "group":"g2" }
]
}

response = self.client.post("/postprocesado/", data, format="json")
self.assertEqual(response.status_code, 404)

def test_bordaNoType(self):
"""
* Definición: Test donde no se especifica type en el json de entrada
* Entrada: Votación
- Number: id del partido
- Option: Nombre de la opción
- Votes: Número de votos que recibe en la votación
- Group: Grupo de votación al que pertenece
* Salida: Los datos de entrada tras aplicarle el type por defecto
(es decir, la función identity)
"""
data = {
"options": [
{ "option": "Option 1", "number": 1, "votes": 10, "group":"g1" },
{ "option": "Option 2", "number": 2, "votes": 7, "group":"g1" },
{ "option": "Option 3", "number": 3, "votes": 8, "group":"g1" }
]
}

expected_result = [
{ "option": "Option 1", "number": 1, "votes": 10, "group":"g1", "postproc":10},
{ "option": "Option 3", "number": 3, "votes": 8, "group":"g1" , "postproc":8},
{ "option": "Option 2", "number": 2, "votes": 7, "group":"g1" , "postproc":7}
]

response = self.client.post("/postproc/", data, format="json")
self.assertEqual(response.status_code, 200)

values = response.json()
self.assertEqual(values, expected_result)

def test_bordaGrupoUnico(self):
"""
* Definición: Test donde solo existe un grupo de votación
* Entrada: Votación
- Number: id del partido
- Option: Nombre de la opcion
- Votes: Número de votos que recibe en la votación
- Group: Grupo de votación al que pertenece
* Salida: Los datos de entrada con un nuevo parámetro llamado total
que supone el valor de esa opción tras aplicar el algoritmo
"""
data = {
"type": "BORDA",
"options": [
{ "option": "Option 1", "number": 1, "votes": 10, "group":"g1" },
{ "option": "Option 2", "number": 2, "votes": 7, "group":"g1" },
{ "option": "Option 3", "number": 3, "votes": 8, "group":"g1" }
]
}

expected_result = [

{ "option": "Option 1", "number": 1, "votes": 10, "group":"g1", "total":75 },
{ "option": "Option 3", "number": 3, "votes": 8, "group":"g1", "total": 50},
{ "option": "Option 2", "number": 2, "votes": 7, "group":"g1", "total":25}
]

response = self.client.post("/postproc/", data, format="json")
self.assertEqual(response.status_code, 200)

values = response.json()
self.assertEqual(values, expected_result)

def test_bordaNoGroup(self):
"""
* Definición: Test donde los votos no están agrupados
* Entrada: Votación
- Number: id del partido
- Option: Nombre de la opción
- Votes: Número de votos que recibe en la votación
* Salida: Mensaje de error, indicando que no es posible
agrupar los votos
"""

data = {
"type": "BORDA",
"options": [
{ "option": "Option 1", "number": 1, "votes": 5},
{ "option": "Option 2", "number": 2, "votes": 10},
{ "option": "Option 3", "number": 3, "votes": 7},
{ "option": "Option 1", "number": 4, "votes": 8},
{ "option": "Option 2", "number": 5, "votes": 3},
{ "option": "Option 3", "number": 6, "votes": 2}
]
}

expected_result = {'message': 'Los votos no se pueden agrupar'}

response = self.client.post("/postproc/", data, format="json")
self.assertEqual(response.status_code, 200)

values = response.json()
self.assertEqual(values, expected_result)

def test_bordaPos2(self):
"""
* Definición: Test que verifica que el algoritmo borda funciona correctamente
con más opciones y más grupos de votación
* Entrada: Votación
- Number: id de la opción
- Option: Nombre de la opción
- Votes: Número de votos que recibe en la votación
- Group: Grupo de votación al que pertenece
* Salida: Los datos de entrada con un nuevo parámetro llamado total
que supone el valor de esa opción tras aplicar el algoritmo
"""

data = {
"type": "BORDA",
"options": [
{ "option": "Option 1", "number": 1, "votes": 105, "group":"g1" },
{ "option": "Option 2", "number": 2, "votes": 453, "group":"g1" },
{ "option": "Option 3", "number": 3, "votes": 242, "group":"g1" },
{ "option": "Option 1", "number": 4, "votes": 67, "group":"g2" },
{ "option": "Option 2", "number": 5, "votes": 23, "group":"g2" },
{ "option": "Option 3", "number": 6, "votes": 45, "group":"g2" },
{ "option": "Option 1", "number": 7, "votes": 230, "group":"g3" },
{ "option": "Option 2", "number": 8, "votes": 334, "group":"g3" },
{ "option": "Option 3", "number": 9, "votes": 234, "group":"g3" }

]
}
expected_result = [
{ "option": "Option 2", "number": 2, "votes": 453, "group":"g1", "total":2400},
{ "option": "Option 2", "number": 8, "votes": 334, "group":"g3", "total":2394},
{ "option": "Option 3", "number": 3, "votes": 242, "group":"g1", "total":1600},
{ "option": "Option 3", "number": 9, "votes": 234, "group":"g3", "total":1596},
{ "option": "Option 1", "number": 1, "votes": 105, "group":"g1", "total":800},
{ "option": "Option 1", "number": 7, "votes": 230, "group":"g3", "total":798},
{ "option": "Option 1", "number": 4, "votes": 67, "group":"g2","total":405},
{ "option": "Option 3", "number": 6, "votes": 45, "group":"g2", "total":270},
{ "option": "Option 2", "number": 5, "votes": 23, "group":"g2", "total":135}

]


response = self.client.post('/postproc/', data, format='json')
self.assertEqual(response.status_code, 200)

values = response.json()
self.assertEqual(values, expected_result)

0 comments on commit 7fad889

Please sign in to comment.