from django.test import TestCase


class CalculatorTests(TestCase):
    def post(self, num1, op, num2):
        return self.client.post('/', {'num1': num1, 'operation': op, 'num2': num2})

    def test_get(self):
        self.assertEqual(self.client.get('/').status_code, 200)

    def test_operations(self):
        self.assertEqual(self.post(2, 'add', 3).context['result'], 5)
        self.assertEqual(self.post(2, 'subtract', 3).context['result'], -1)
        self.assertEqual(self.post(2, 'multiply', 3).context['result'], 6)
        self.assertEqual(self.post(7, 'divide', 2).context['result'], 3.5)

    def test_divide_by_zero(self):
        response = self.post(1, 'divide', 0)
        self.assertIsNone(response.context['result'])
        self.assertContains(response, 'Cannot divide by zero.')
