Pruebas del modelo 23-24
EJERCICIO 4: TEST DE MODELO SIN PERSISTENCIA
Gracias al análisis de cobertura, podemos comprobar que en voting/models.py hay 4 líneas que nunca son ejecutadas por ninguno de los tests legacy que tenemos. Tres de estas líneas, se corresponden con métodos __str__. Para poder mejorar la cobertura, vamos a añadir un test con este propósito en voting/test.py.
def test_to_string(self):
        #Crea un objeto votacion
        v = self.create_voting()
        #Verifica que el nombre de la votacion es test voting
        self.assertEquals(str(v),"test voting")
        #Verifica que la descripcion de la pregunta sea test question
        self.assertEquals(str(v.question),"test question")
        #Verifica que la primera opcion es option1 (2)
        self.assertEquals(str(v.question.options.all()[0]),"option 1 (2)")
Si volvemos a lanzar el análisis de cobertura, podremos comprobar cómo ahora ha aumentado ligeramente en este módulo.
EJERCICIO 5: TEST DE MODELO CON PERSISTENCIA
Como puede observarse, en este nuevo caso de prueba, no verificamos ninguna acción CRUD, que también han quedado sin cubrir. Vamos ahora a añadir un nuevo test que sí lo haga: crearemos una votación sencilla con una pregunta y dos opciones de respuesta. Tras esto, comprobaremos que se haya almacenado correctamente en la base de datos.
Para ello, crearemos una nueva clase dentro de voting/tests.py:
class VotingModelTestCase(BaseTestCase):
    def setUp(self):
        q = Question(desc='Descripcion')
        q.save()
        
        opt1 = QuestionOption(question=q, option='opcion 1')
        opt1.save()
        opt1 = QuestionOption(question=q, option='opcion 2')
        opt1.save()
        self.v = Voting(name='Votacion', question=q)
        self.v.save()
        super().setUp()
    def tearDown(self):
        super().tearDown()
        self.v = None
    def testExist(self):
        v=Voting.objects.get(name='Votacion')
        self.assertEquals(v.question.options.all()[0].option, "opcion 1")