passerelle-montpellier-enco.../tests/test_main.py

183 lines
6.4 KiB
Python

import datetime
import json
from random import randint
from django.contrib.contenttypes.models import ContentType
from django.test import TestCase
from django.test.client import Client
from django.urls import reverse
from django.utils.encoding import force_text
from passerelle.base.models import AccessRight, ApiUser
from passerelle_montpellier_encombrants.models import (
CollectDay,
Commune,
EncombrantsManagement,
Sector,
Street,
)
maurin_streets = (
'CHE DES JARDINS DE MAGUELONE',
'RTE DEPARTEMENTALE 132',
'CHE DE SAINT-HUBERT',
'PLAN DU MAS DE SARDAN',
'R DES ROBINIERS',
)
lattes_streets = (
'AV DE BOIRARGUES',
'RPT DE LA FONTVIN',
'PLAN ROSSINI',
'R DES CYCLAMENS',
'RTE DEPARTEMENTALE 172',
'CHE DU MAS DE CAUSSE À L\'ESTELLE',
)
class EncombrantsTestCase(TestCase):
fixtures = []
def setUp(self):
self.client = Client()
self.instance = EncombrantsManagement.objects.create(
title='montpellier', slug='montpellier', description='encombrants'
)
api, _ = ApiUser.objects.get_or_create(username='all', keytype='', key='')
obj_type = ContentType.objects.get_for_model(self.instance)
AccessRight.objects.update_or_create(
codename='can_access', apiuser=api, resource_type=obj_type, resource_pk=self.instance.pk
)
self.now = datetime.datetime.now()
for mail, insee, name in (
('cournonsec@montpellier3m.fr', '34087', 'Cournonsec'),
('jacou@montpellier3m.fr', '34120', 'Jacou'),
('castelnau@montpellier3m.fr', '34057', 'Castelnau'),
('prades@montpellier3m.fr', '34217', 'Prades'),
('sussargues@montpellier3m.fr', '34307', 'Sussargues'),
):
sector = Sector.objects.create(contact_email=mail)
commune = Commune.objects.create(sector=sector, insee=insee, name=name)
for i in range(2, randint(3, 10)):
when = self.now + datetime.timedelta(days=i)
CollectDay.objects.create(sector=sector, date=when)
def test_collectdays(self):
for commune in Commune.objects.all():
r = self.client.get(
reverse(
'generic-endpoint',
kwargs={
'connector': 'passerelle-montpellier-encombrants',
'endpoint': 'available',
'slug': self.instance.slug,
'rest': commune.insee,
},
)
)
data = json.loads(force_text(r.content))
def test_collectdays_in_communes_with_street(self):
maurin_sector = Sector.objects.create(contact_email='maurin@montpellier3m.fr')
maurin_commune = Commune.objects.create(sector=maurin_sector, name='Maurin', insee='34970')
lattes_sector = Sector.objects.create(contact_email='lattes@montpellier3m.fr')
lattes_commune = Commune.objects.create(sector=lattes_sector, name='Lattes', insee='34970')
for s in maurin_streets:
Street.objects.create(commune=maurin_commune, name=s)
CollectDay.objects.create(sector=maurin_sector, date=self.now + datetime.timedelta(days=2))
# Maurin
r = self.client.get(
reverse(
'generic-endpoint',
kwargs={
'connector': 'passerelle-montpellier-encombrants',
'endpoint': 'available',
'slug': self.instance.slug,
'rest': '34970',
},
),
{'adresse': 'PLAN DU MAS DE SARDAN'},
)
data = json.loads(force_text(r.content))
# self.assertNotEqual(data['data'], [])
# Lattes
for s in lattes_streets:
Street.objects.create(commune=lattes_commune, name=s)
r = self.client.get(
reverse(
'generic-endpoint',
kwargs={
'connector': 'passerelle-montpellier-encombrants',
'endpoint': 'available',
'slug': self.instance.slug,
'rest': '34970',
},
),
{'adresse': 'ROUTE DEPARTEMENTALE 172'},
)
data = json.loads(force_text(r.content))
# self.assertEqual(data['data'], [])
CollectDay.objects.create(sector=lattes_sector, date=self.now + datetime.timedelta(days=4))
r = self.client.get(
reverse(
'generic-endpoint',
kwargs={
'connector': 'passerelle-montpellier-encombrants',
'endpoint': 'available',
'slug': self.instance.slug,
'rest': '34970',
},
),
{'adresse': 'ROUTE DEPARTEMENTALE 172'},
)
data = json.loads(force_text(r.content))
self.assertNotEqual(data['data'], [])
def test_collectdays_nonexisting_street(self):
r = self.client.get(
reverse(
'generic-endpoint',
kwargs={
'connector': 'passerelle-montpellier-encombrants',
'endpoint': 'available',
'slug': self.instance.slug,
'rest': '34970',
},
),
{'adresse': 'Nonexisting street'},
)
data = json.loads(force_text(r.content))
self.assertEqual(data['data'], [])
def test_collectdays_random_case_street(self):
lattes_sector = Sector.objects.create(contact_email='lattes@montpellier3m.fr')
lattes_commune = Commune.objects.create(sector=lattes_sector, name='Lattes', insee='34970')
for s in lattes_streets:
Street.objects.create(commune=lattes_commune, name=s)
CollectDay.objects.create(sector=lattes_sector, date=self.now + datetime.timedelta(days=10))
r = self.client.get(
reverse(
'generic-endpoint',
kwargs={
'connector': 'passerelle-montpellier-encombrants',
'endpoint': 'available',
'slug': self.instance.slug,
'rest': '34970',
},
),
{'adresse': 'route departementale 172'},
)
data = json.loads(force_text(r.content))
self.assertNotEqual(data['data'], [])