|
| 1 | +# test_app.py |
| 2 | +import random |
| 3 | +from faker import Faker |
| 4 | + |
| 5 | +from flask import url_for |
| 6 | + |
| 7 | +from config.constants import LANGUAGES |
| 8 | +from database.db_models import EmailList, Presale, Interest |
| 9 | + |
| 10 | +from .factories import PresaleFactory, InterestFactory |
| 11 | + |
| 12 | + |
| 13 | +fake = Faker() |
| 14 | + |
| 15 | + |
| 16 | +def test_root_returns_302(client): |
| 17 | + res = client.get(url_for('root')) |
| 18 | + assert res.status_code == 302 |
| 19 | + |
| 20 | + |
| 21 | +def test_index_returns_200(client): |
| 22 | + res = client.get(url_for('index', lang_code=random.choice(LANGUAGES))) |
| 23 | + assert res.status_code == 200 |
| 24 | + |
| 25 | + |
| 26 | +def test_join_mailing_and_unsubscribe(mock_send_message, session, client): |
| 27 | + data = { |
| 28 | + "email": fake.safe_email(), |
| 29 | + "ip_addr": fake.ipv4(), |
| 30 | + } |
| 31 | + res = client.post(url_for('join_mailing_list'), |
| 32 | + data=data) |
| 33 | + |
| 34 | + assert res.status_code == 200 |
| 35 | + assert EmailList.query.filter_by(email=data['email']).first() is not None |
| 36 | + |
| 37 | + # try to unsubscribe the created EmailList object above |
| 38 | + res = client.get("{url}?email={param}". |
| 39 | + format(url=url_for('unsubscribe'), |
| 40 | + param=data['email'])) |
| 41 | + |
| 42 | + assert res.status_code == 302 |
| 43 | + assert EmailList.query.filter_by(email=data['email'], |
| 44 | + unsubscribed=True).first() is not None |
| 45 | + |
| 46 | + |
| 47 | +def test_join_presale(mock_send_message, mock_captcha, session, client): |
| 48 | + data = PresaleFactory.stub().__dict__ |
| 49 | + data['confirm'] = True |
| 50 | + |
| 51 | + res = client.post(url_for('join_presale'), data=data) |
| 52 | + created_obj = Presale.query.filter_by(email=data['email']).first() |
| 53 | + |
| 54 | + assert created_obj.id is not None |
| 55 | + assert res.status_code == 200 |
| 56 | + |
| 57 | + |
| 58 | +def test_partners_interest(mock_send_message, mock_captcha, session, client): |
| 59 | + data = InterestFactory.stub().__dict__ |
| 60 | + data['confirm'] = True |
| 61 | + |
| 62 | + res = client.post(url_for('partners_interest'), data=data) |
| 63 | + created_obj = Interest.query.filter_by(email=data['email']).first() |
| 64 | + |
| 65 | + assert created_obj.id is not None |
| 66 | + assert res.status_code == 200 |
0 commit comments