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

150 lines
5.1 KiB
Python

# -*- coding: utf-8 -*-
import json
import datetime
from random import randint
from django.test import TestCase
from django.test.client import Client
from django.core.urlresolvers import reverse
from django.utils.encoding import force_text
from passerelle_montpellier_encombrants.models import (
EncombrantsManagement,
Commune,
Sector,
CollectDay,
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'
)
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(
'montpellier-encombrants-available-days',
kwargs={'slug': self.instance.slug, 'insee': 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(
'montpellier-encombrants-available-days',
kwargs={'slug': self.instance.slug, 'insee': '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(
'montpellier-encombrants-available-days',
kwargs={'slug': self.instance.slug, 'insee': '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(
'montpellier-encombrants-available-days',
kwargs={'slug': self.instance.slug, 'insee': '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(
'montpellier-encombrants-available-days',
kwargs={'slug': self.instance.slug, 'insee': '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(
'montpellier-encombrants-available-days',
kwargs={'slug': self.instance.slug, 'insee': '34970'},
),
{'adresse': 'route departementale 172'},
)
data = json.loads(force_text(r.content))
self.assertNotEqual(data['data'], [])