vmesel/PyJobs

View on GitHub
pyjobs/marketing/tests/test_sharing.py

Summary

Maintainability
D
2 days
Test Coverage
from django.test import TestCase
from unittest.mock import patch
from model_mommy.mommy import make

from pyjobs.marketing.models import Contact, Messages
from django.db.models.signals import post_save
from django.contrib.auth.models import User
from pyjobs.marketing.models import Share
from pyjobs.marketing.forms import SharingForm
from pyjobs.core.models import Job
from django.test import Client


class SharingModelTest(TestCase):
    @patch("pyjobs.marketing.triggers.send_group_notification")
    @patch("pyjobs.marketing.triggers.send_job_to_github_issues")
    @patch("pyjobs.marketing.triggers.post_telegram_channel")
    def setUp(
        self, _mocked_send_group_push, _mock_github, _mocked_post_telegram_channel
    ):
        self.user = User.objects.create_user(
            username="jacob",
            first_name="jacob",
            last_name="bocaj",
            email="jacob@gmail.com",
            password="top_secret",
            is_staff=True,
        )

        self.job = make(Job, title="Dev Python", company_name="Jacob & Co")

        self.sharing_obj = Share.objects.create(
            user_sharing=self.user, user_receiving_email="test@test.com", job=self.job
        )
        self.client = Client()

    def test_model_object_exists(self):
        qs = Share.objects.all()
        self.assertIn(self.sharing_obj, qs)

    def test_sharing_object_has_same_data_as_defined(self):
        obj = Share.objects.all().first()
        self.assertEqual(obj.user_sharing, self.user)
        self.assertEqual(obj.user_receiving_email, "test@test.com")
        self.assertEqual(obj.job, self.job)

    def test_form_instance_with_no_data(self):
        form = SharingForm({})
        self.assertFalse(form.is_valid())

    def test_form_instance_with_valid_data(self):
        form = SharingForm({"user_receiving_email": "test@test.com"})
        self.assertTrue(form.is_valid())

    def test_form_saving_with_valid_data(self):
        form = SharingForm(data={"user_receiving_email": "test2@test.com"})

        form.save(user_sharing=self.user, job=self.job)
        self.assertEqual(len(Share.objects.all()), 2)
        self.assertEqual(Share.objects.all()[1].user_receiving_email, "test2@test.com")
        self.assertEqual(Share.objects.all()[1].user_sharing, self.user)
        self.assertEqual(Share.objects.all()[1].job, self.job)

    def test_job_sharing_view_status_code(self):
        self.client.login(username="jacob", password="top_secret")
        response = self.client.get("/job/{}/share/".format(self.job.unique_slug))
        self.assertEqual(response.status_code, 200)

    def test_job_sharing_view_with_invalid_form_data(self):
        self.client.login(username="jacob", password="top_secret")
        response = self.client.get("/job/{}/share/".format(self.job.unique_slug))
        self.assertEqual(response.status_code, 200)
        data = {"user_receiving_email": "testing"}
        response_post = self.client.post(
            "/job/{}/share/".format(self.job.unique_slug), data=data
        )
        content = response_post.content.decode("utf-8")
        self.assertEqual(response_post.status_code, 200)
        self.assertIn("Email inválido!", content)

    def test_job_sharing_view_with_valid_form_data(self):
        self.client.login(username="jacob", password="top_secret")
        response = self.client.get("/job/{}/share/".format(self.job.unique_slug))
        self.assertEqual(response.status_code, 200)
        data = {"user_receiving_email": "testing@test.com"}
        response_post = self.client.post(
            "/job/{}/share/".format(self.job.unique_slug), data=data
        )
        content = response_post.content.decode("utf-8")
        self.assertEqual(response_post.status_code, 200)
        self.assertIn("Email enviado ao Pythonista", content)