Skip to content

Commit 446fa5c

Browse files
renzonrenzon
renzon
authored andcommitted
Created page for unavailable product
close #2713
1 parent da0b657 commit 446fa5c

8 files changed

+78
-38
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{% extends 'core/base.html' %}
2+
{% block title %}Curso {{ payment_item_config.name }} indisponível{% endblock %}
3+
{% block description %}Página de curso {{ payment_item_config.name }} indisponível{% endblock %}
4+
{% block body %}
5+
<div class="container">
6+
<div class="row">
7+
<div class="col mb-5">
8+
<h1 class="mt-5">Curso {{ payment_item_config.name }} Indisponível</h1>
9+
10+
<p>Infelizmente essa oferta não está mais disponível. Confira abaixo todos nossos cursos:</p>
11+
<a class="btn btn-primary &raquo;" href="{% url 'modules:index' %}">Ver módulos</a>
12+
</div>
13+
</div>
14+
</div>
15+
{% endblock body %}
16+

pythonpro/checkout/tests/test_landing_page_webdev.py

-12
This file was deleted.

pythonpro/checkout/tests/test_landing_page_webdev_50_off.py

-12
This file was deleted.

pythonpro/checkout/tests/test_landing_page_webdev_oto.py

-12
This file was deleted.

pythonpro/django_assertions.py

+1
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@
88
dj_assert_contains = _dj_testcase.assertContains
99
dj_assert_not_contains = _dj_testcase.assertNotContains
1010
dj_assert_template_used = _dj_testcase.assertTemplateUsed
11+
dj_assert_redirects = _dj_testcase.assertRedirects

pythonpro/domain/checkout_domain.py

+13
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,16 @@ def payment_change_handler(payment_id):
8080

8181

8282
django_pagarme_facade.add_payment_status_changed(payment_change_handler)
83+
84+
85+
def availability_strategy(payment_item_config, request):
86+
if not payment_item_config.is_available():
87+
return False
88+
elif request.GET.get('debug', '').lower() == 'true':
89+
return True
90+
elif payment_item_config.slug.startswith('bootcamp-webdev'):
91+
return core_facade.is_webdev(request.user)
92+
return True
93+
94+
95+
django_pagarme_facade.set_available_payment_config_item_strategy(availability_strategy)

pythonpro/domain/tests/test_checkout/test_payment_page.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@
66

77
@pytest.mark.parametrize('slug', ALL_PRODUCTS)
88
def test_all_slugs_available(client, slug):
9-
resp = client.get(reverse('django_pagarme:pagarme', kwargs={'slug': slug}))
10-
assert resp.status_code == 200
9+
if not slug.startswith('bootcamp-webdev'):
10+
resp = client.get(reverse('django_pagarme:pagarme', kwargs={'slug': slug}))
11+
assert resp.status_code == 200
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
from datetime import timedelta
2+
3+
import pytest
4+
from django.urls import reverse
5+
from django.utils import timezone
6+
from django_pagarme import facade
7+
from django_pagarme.models import PagarmeItemConfig
8+
9+
from pythonpro.django_assertions import dj_assert_redirects
10+
11+
12+
@pytest.fixture
13+
def unavailable_config():
14+
cfg = facade.get_payment_item('pytools')
15+
cfg.available_until = timezone.now() - timedelta(seconds=1)
16+
cfg.save()
17+
return cfg
18+
19+
20+
def test_unavailable_on_db(client, unavailable_config):
21+
assert_unavailable(client, [unavailable_config])
22+
23+
24+
def test_webdev_discount_not_available(client_with_not_level_two_roles):
25+
qs = PagarmeItemConfig.objects.filter(slug__startswith='bootcamp-webdev')
26+
assert qs.count() == 3
27+
assert_unavailable(client_with_not_level_two_roles, qs)
28+
29+
30+
def test_webdev_discount_available_with_debug(client_with_webdev):
31+
qs = PagarmeItemConfig.objects.filter(slug__startswith='bootcamp-webdev')
32+
for pagarme_item_config in qs:
33+
slug_kwargs_args = {'slug': pagarme_item_config.slug}
34+
path = reverse('django_pagarme:pagarme', kwargs=slug_kwargs_args)
35+
path += '?debug=true'
36+
resp = client_with_webdev.get(path)
37+
assert resp.status_code == 200
38+
39+
40+
def assert_unavailable(client, qs):
41+
for pagarme_item_config in qs:
42+
slug_kwargs_args = {'slug': pagarme_item_config.slug}
43+
path = reverse('django_pagarme:pagarme', kwargs=slug_kwargs_args)
44+
resp = client.get(path)
45+
dj_assert_redirects(resp, reverse('django_pagarme:unavailable', kwargs=slug_kwargs_args))

0 commit comments

Comments
 (0)