Skip to content

Commit

Permalink
Test coverage raised
Browse files Browse the repository at this point in the history
  • Loading branch information
vmesel committed Nov 1, 2019
1 parent 59854c0 commit d84c92a
Show file tree
Hide file tree
Showing 7 changed files with 182 additions and 19 deletions.
11 changes: 0 additions & 11 deletions pyjobs/core/managers.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,6 @@ def created_in_the_last(self, days, premium=False):
created_at__lte=datetime.today(),
)

def created_days_ago(self, days, premium=False):
if premium:
return self.filter(
premium_at__gt=datetime.today() - timedelta(days=days + 1),
premium_at__lte=datetime.today() - timedelta(days=days),
)
return self.filter(
created_at__gt=datetime.today() - timedelta(days=days + 1),
created_at__lte=datetime.today() - timedelta(days=days),
)

def search(self, term):
if not term:
return self
Expand Down
2 changes: 1 addition & 1 deletion pyjobs/core/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ def get_absolute_url(self):
return "/job/{}".format(self.pk)

def get_jobs_to_get_feedback(self):
return Job.objects.created_days_ago(14)
return Job.objects.created_in_the_last(15)

def get_expiration_date(self):
return self.created_at + timedelta(days=30)
Expand Down
79 changes: 79 additions & 0 deletions pyjobs/core/tests/test_admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
from django.test import TestCase
from model_mommy import mommy
from unittest.mock import patch
from datetime import datetime
from django.contrib.auth.models import User
from pyjobs.core.models import Job
from pyjobs.core.admin import *


class TestUpdateCreatedAtFunc(TestCase):
@patch("pyjobs.marketing.triggers.post_telegram_channel")
def setUp(self, _mocked_post_telegram_channel):
self.jobs = mommy.make(Job, _quantity=10 * 3, public=True)

def test_update_created_at(self):
qs = Job.objects.all()
created_at_value = self.jobs[0].created_at
update_created_at("a", "request_here", self.jobs[:1])
self.jobs[0].refresh_from_db()
mod_created_at_value = self.jobs[0].created_at
self.assertFalse(created_at_value == mod_created_at_value)

@patch("pyjobs.core.admin.send_offer_email_template")
def test_send_email_offer(self, _mocked_send_offer):
send_email_offer("request", "request", self.jobs)
_mocked_send_offer.assert_called()

@patch("pyjobs.core.admin.send_feedback_collection_email")
def test_send_feedback_collection_email(
self, _mocked_send_feedback_collection_email
):
send_feedback_collection("request", "request", self.jobs)
_mocked_send_feedback_collection_email.assert_called()

@patch("pyjobs.core.admin.subscribe_user_to_mailer")
def test_subscribe_user_to_mailer(self, _mocked_subscribe_user_to_mailer):
add_subscriber("request", "request", self.jobs)
_mocked_subscribe_user_to_mailer.assert_called()


class TestSendingChallengesToOldApplicants(TestCase):
@patch("pyjobs.marketing.triggers.post_telegram_channel")
def setUp(self, _mocked_post_telegram_channel):
self.job = Job.objects.create(
title="Vaga 3",
workplace="Sao Paulo",
company_name="XPTO",
company_email="[email protected]",
description="Job bem maneiro",
premium=True,
public=True,
)
self.job.save()

@patch("pyjobs.core.admin.get_email_with_template")
def test_sending(self, _mocked_get_email_with_template):
self.user = User.objects.create_user(
username="jacob", email="[email protected]", password="top_secret"
)

self.profile = Profile.objects.create(
user=self.user,
github="http://www.github.com/foobar",
linkedin="http://www.linkedin.com/in/foobar",
portfolio="http://www.foobar.com/",
cellphone="11981435390",
)

self.job_application = JobApplication.objects.create(
user=self.user, job=self.job
)

self.job.is_challenging = True
self.job.save()

self.jobs = [self.job]

send_challenge_to_old_applicants("modeladmin", "request", self.jobs)
_mocked_get_email_with_template.assert_called()
24 changes: 24 additions & 0 deletions pyjobs/core/tests/test_job_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -284,3 +284,27 @@ def test_if_str_rep_is_ok(self):

def test_if_repr_rep_is_ok(self):
self.assertEqual(self.skill.__repr__(), self.skill.name)


class JobManagerTest(TestCase):
@patch("pyjobs.marketing.triggers.post_telegram_channel")
def setUp(self, _mocked_post_telegram_channel):
self.job = Job(
title="Vaga 1",
workplace="Sao Paulo",
company_name="XPTO",
application_link="http://www.xpto.com.br/apply",
company_email="[email protected]",
description="Job bem maneiro",
premium=True,
)
self.job.created_at = datetime.now() - timedelta(14)
self.job.premium_at = datetime.now() - timedelta(14)
self.job.save()

def test_if_job_in_premium_manager(self):
qs = Job.objects.premium().created_in_the_last(30, premium=True)
qs_term = Job.objects.search(term="Vaga 1")

self.assertIn(self.job, qs)
self.assertIn(self.job, qs_term)
21 changes: 21 additions & 0 deletions pyjobs/core/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,27 @@ def test_return_register_new_job_status_code(self):
self.assertEqual(response.status_code, 302)


class SitemapTestingView(TestCase):
@patch("pyjobs.marketing.triggers.post_telegram_channel")
def setUp(self, _mocked_post_telegram_channel):
self.job = Job(
title="Vaga 1",
workplace="Sao Paulo",
company_name="XPTO",
application_link="http://www.xpto.com.br/apply",
company_email="[email protected]",
description="Job bem maneiro",
requirements="Job bem maneiro",
)
self.job.save()
self.client = Client()

def test_if_status_code_is_two_hundred_on(self):
response = self.client.get("/sitemap.xml")
self.assertEqual(200, response.status_code)
self.assertIn("lastmod", response.content.decode("utf-8"))


class TestingRestrictedViews(TestCase):
@responses.activate
@patch("pyjobs.marketing.triggers.post_telegram_channel")
Expand Down
14 changes: 8 additions & 6 deletions pyjobs/marketing/newsletter.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@


def subscribe_user_to_mailer(profile):
status = True
if not settings.MAILERLITE_API_KEY:
return

Expand All @@ -15,22 +16,22 @@ def subscribe_user_to_mailer(profile):
"x-mailerlite-apikey": settings.MAILERLITE_API_KEY,
}

url = "https://api.mailerlite.com/api/v2/subscribers"

try:
req = requests.post(url, data=content, headers=headers)
req = requests.post("https://api.mailerlite.com/api/v2/subscribers", data=content, headers=headers)
except: # TODO specify which errors can be raised at this point
pass
status = False
return status


def subscribe_user_to_chimp(profile):
status = True
configs = (
settings.MAILCHIMP_API_KEY,
settings.MAILCHIMP_USERNAME,
settings.MAILCHIMP_LIST_KEY,
)
if not all(configs):
return
return False

client = MailChimp(settings.MAILCHIMP_API_KEY, settings.MAILCHIMP_USERNAME)
try:
Expand All @@ -39,4 +40,5 @@ def subscribe_user_to_chimp(profile):
{"status": "subscribed", "email_address": profile.user.email},
)
except: # TODO specify which errors can be raised at this point
pass
status = False
return status
50 changes: 49 additions & 1 deletion pyjobs/marketing/tests/test_newsletter.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from unittest.mock import patch
import responses
from pyjobs.core.models import Job, Profile
from pyjobs.marketing.newsletter import subscribe_user_to_chimp
from pyjobs.marketing.newsletter import subscribe_user_to_chimp, subscribe_user_to_mailer
from django.conf import settings


Expand Down Expand Up @@ -46,3 +46,51 @@ def test_if_called(self, patched_mc):
patched_mc.return_value.lists.members.create.assert_called_once_with(
"CCC", {"status": "subscribed", "email_address": "[email protected]"}
)

@patch('pyjobs.marketing.newsletter.MailChimp')
def test_subscribe_failed(self, _mocked_post):
_mocked_post.side_effect = Exception("Exception")
out = subscribe_user_to_chimp(self.profile)
self.assertFalse(out)

class NewsletterMailerliteTest(TestCase):
@responses.activate
def setUp(self):
responses.add(
responses.POST,
"https://api.mailerlite.com/api/v2/subscribers",
json={"status": "Success"},
status=200,
)
self.user = User.objects.create_user(
username="[email protected]",
email="[email protected]",
password="top_secret",
first_name="Vinicius",
last_name="Mesel",
)
self.profile = Profile(
user=self.user,
github="http://www.aaa.com.br",
linkedin="http://www.aaa.com.br",
portfolio="http://www.aaa.com.br",
)
self.profile.save()

@override_settings(
MAILERLITE_API_KEY="AAA"
)
@patch('pyjobs.marketing.newsletter.requests.post')
def test_subscribe_user_to_mailer(self, _mocked_post):
out = subscribe_user_to_mailer(self.profile)
_mocked_post.assert_called_once()
self.assertTrue(out)

@patch('pyjobs.marketing.newsletter.requests.post')
@patch('pyjobs.marketing.newsletter.json.dumps')
def test_subscribe_user_to_mailer(self, _mocked_post, _mocked_json_dumps):
_mocked_post.side_effect = Exception("Exception")
out = subscribe_user_to_mailer(self.profile)
_mocked_json_dumps.assert_called_once()
# _mocked_post.assert_called_once()
self.assertFalse(out)

0 comments on commit d84c92a

Please sign in to comment.