cata_system / tecnicas /test /test_words.py
chartManD's picture
Manejo de datos en session, validacion de agregar palabra nueva, trato de palabras seleccionadas
079bb3a
from django.test import TestCase
from django.urls import reverse
from ..models import Palabra
class TestsApiWords(TestCase):
def setUp(self):
Palabra.objects.create(nombre_palabra="salado")
def test_get_words_fail(self):
word_name = "dulce"
expected_error = "no existen palabras"
response = self.client.get(
reverse("cata_system:api_palabras")+f"?palabra={word_name}"
)
self.assertEqual(response.status_code, 200)
res_json = response.json()
self.assertIn("error", res_json)
self.assertEqual(res_json["error"], expected_error)
def test_get_words_no_parameter(self):
expected_error = "parametros no encontrados"
response = self.client.get(reverse("cata_system:api_palabras"))
self.assertEqual(response.status_code, 200)
res_json = response.json()
self.assertIn("error", res_json)
self.assertEqual(res_json["error"], expected_error)
def test_get_words_success(self):
word_name = "sal"
expected_message = "datos localizados"
expected_data = Palabra.objects.filter(
nombre_palabra__contains=word_name)
response = self.client.get(
reverse("cata_system:api_palabras")+f"?palabra={word_name}"
)
self.assertEqual(response.status_code, 200)
res_json = response.json()
self.assertIn("message", res_json)
self.assertEqual(res_json["message"], expected_message)
data = res_json["data"]
self.assertEqual(len(data), len(expected_data))
def test_post_word_success(self):
word_name = "dulce"
expected_message = "palabra creada"
data = {
"nombre_palabra": word_name
}
response = self.client.post(reverse("cata_system:api_palabras"), data)
res_json = response.json()
self.assertIn("message", res_json)
self.assertEqual(res_json["message"], expected_message)
data = res_json["data"]
self.assertIn("id", data)
self.assertIn("nombre_palabra", data)
self.assertEqual(data["nombre_palabra"], word_name)
def test_post_word_lowercase(self):
word_name = "AMargo"
expected_message = "palabra creada"
data = {
"nombre_palabra": word_name
}
response = self.client.post(reverse("cata_system:api_palabras"), data)
res_json = response.json()
self.assertIn("message", res_json)
self.assertEqual(res_json["message"], expected_message)
data = res_json["data"]
self.assertIn("id", data)
self.assertIn("nombre_palabra", data)
self.assertEqual(data["nombre_palabra"], word_name.lower())
def test_post_word_fail(self):
word_name = "salado"
expected_error = "palabra repetida"
data = {"nombre_palabra": word_name}
response = self.client.post(
reverse("cata_system:api_palabras"),
data
)
res_json = response.json()
self.assertIn("error", res_json)
self.assertEqual(res_json["error"], expected_error)
def test_post_word_no_parameter(self):
expected_error = "parametros requeridos"
response = self.client.post(reverse("cata_system:api_palabras"))
res_json = response.json()
self.assertIn("error", res_json)
self.assertEqual(res_json["error"], expected_error)
def test_post_word_too_short(self):
word_name = "ab"
expected_error = "la palabra es muy corta"
data = {"nombre_palabra": word_name}
response = self.client.post(
reverse("cata_system:api_palabras"),
data
)
res_json = response.json()
self.assertIn("error", res_json)
self.assertEqual(res_json["error"], expected_error)