mirror of
https://github.com/AdrienHallet/HaitiWater.git
synced 2026-10-28 10:25:56 +00:00
693 lines
23 KiB
Python
693 lines
23 KiB
Python
import json
|
|
|
|
from django.contrib.auth.models import User, Group
|
|
from django.core.files import File
|
|
from django.db import connection
|
|
from django.test import TestCase, override_settings
|
|
from django.test.client import Client
|
|
|
|
from ...consumers.models import Consumer
|
|
from ...financial.models import Payment
|
|
from ...report.models import Ticket, BreakType, UrgencyType
|
|
from ...water_network.models import Zone, Element, ElementType, ElementStatus
|
|
|
|
|
|
@override_settings(CACHES={'default': {'BACKEND': 'django.core.cache.backends.dummy.DummyCache'}})
|
|
class TableTests(TestCase):
|
|
fixtures = ["initial_data"]
|
|
|
|
@classmethod # Horrible hack to get the views
|
|
def setUpClass(cls):
|
|
super(TableTests, cls).setUpClass()
|
|
|
|
file_handle = open('views.sql', 'r+')
|
|
sql_file = File(file_handle)
|
|
sql = sql_file.read()
|
|
|
|
cursor = connection.cursor()
|
|
cursor.execute(sql)
|
|
cursor.close()
|
|
|
|
def setUp(self):
|
|
self.client = Client()
|
|
self.client.login(username="Protos", password="Protos")
|
|
|
|
superzone = Zone.objects.get(name="Haiti")
|
|
zone = Zone(name="zone", superzone=superzone, subzones=["zone"],
|
|
fountain_price=100, fountain_duration=10,
|
|
kiosk_price=200, kiosk_duration=12,
|
|
indiv_base_price=300)
|
|
zone.save()
|
|
|
|
superzone.subzones.append(zone.name)
|
|
superzone.save()
|
|
|
|
fountain = Element(name="fountain", type=ElementType.FOUNTAIN.name,
|
|
status=ElementStatus.OK.name, location="fountain", zone=superzone)
|
|
fountain.save()
|
|
|
|
indiv = Element(name="indiv", type=ElementType.INDIVIDUAL.name,
|
|
status=ElementStatus.OK.name, location="indiv", zone=superzone)
|
|
indiv.save()
|
|
|
|
user = User.objects.create_user(username="user_zone", email="test@gmail.com", password="test",
|
|
first_name="test", last_name="test")
|
|
user.profile.phone_number = None
|
|
user.profile.zone = zone
|
|
user.profile.save()
|
|
my_group = Group.objects.get(name='Gestionnaire de zone')
|
|
my_group.user_set.add(user)
|
|
|
|
user = User.objects.create_user(username="user_fountain", email="test@gmail.com", password="test",
|
|
first_name="test", last_name="test")
|
|
user.profile.phone_number = None
|
|
user.profile.outlets.append(fountain.id)
|
|
user.profile.save()
|
|
my_group = Group.objects.get(name='Gestionnaire de fontaine')
|
|
my_group.user_set.add(user)
|
|
|
|
consumer_fountain = Consumer(first_name="consumer", last_name="fountain", gender="M",
|
|
location="test", household_size=1, water_outlet=fountain)
|
|
consumer_fountain.save()
|
|
|
|
consumer_indiv = Consumer(first_name="consumer", last_name="indiv", gender="M",
|
|
location="test", household_size=1, water_outlet=indiv)
|
|
consumer_indiv.save()
|
|
|
|
ticket = Ticket(water_outlet=fountain, type=BreakType.MECHANICAL.name,
|
|
comment="test", urgency=UrgencyType.LOW.name)
|
|
ticket.save()
|
|
|
|
payment = Payment(consumer=consumer_fountain, water_outlet=fountain, amount=100)
|
|
payment.save()
|
|
|
|
self.client.post("/api/gis/?id={}&action=add".format(fountain.id), {
|
|
"geometry": {
|
|
"type": "Point",
|
|
"coordinates": [-72.331783, 19.394068]
|
|
}
|
|
}, content_type="application/json")
|
|
|
|
def tearDown(self):
|
|
self.client.logout()
|
|
|
|
def test_get_table_not_connected(self):
|
|
self.client.logout()
|
|
|
|
response = self.client.get("/api/table/")
|
|
self.assertEqual(response.status_code, 403)
|
|
|
|
# Zone
|
|
|
|
def test_get_zone(self):
|
|
response = self.client.get("/api/table/", {
|
|
"name": "zone",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc"
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 2)
|
|
self.assertEqual(result["recordsFiltered"], 2)
|
|
self.assertEqual(len(result["data"]), 2)
|
|
|
|
def test_get_zone_sub(self):
|
|
self.client.login(username="user_zone", password="test")
|
|
|
|
response = self.client.get("/api/table/", {
|
|
"name": "zone",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc"
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 1)
|
|
self.assertEqual(result["recordsFiltered"], 1)
|
|
self.assertEqual(len(result["data"]), 1)
|
|
|
|
def test_get_zone_unauthorized(self):
|
|
self.client.login(username="user_fountain", password="test")
|
|
|
|
response = self.client.get("/api/table/", {
|
|
"name": "zone",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc"
|
|
})
|
|
self.assertEqual(response.status_code, 403)
|
|
|
|
# Element
|
|
|
|
def test_get_element(self):
|
|
response = self.client.get("/api/table/", {
|
|
"name": "water_element",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc"
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 2)
|
|
self.assertEqual(result["recordsFiltered"], 2)
|
|
self.assertEqual(len(result["data"]), 2)
|
|
|
|
def test_get_element_sub(self):
|
|
self.client.login(username="user_zone", password="test")
|
|
|
|
response = self.client.get("/api/table/", {
|
|
"name": "water_element",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc"
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 0)
|
|
self.assertEqual(result["recordsFiltered"], 0)
|
|
self.assertEqual(len(result["data"]), 0)
|
|
|
|
def test_get_element_fountain(self):
|
|
self.client.login(username="user_fountain", password="test")
|
|
|
|
response = self.client.get("/api/table/", {
|
|
"name": "water_element",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc"
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 1)
|
|
self.assertEqual(result["recordsFiltered"], 1)
|
|
self.assertEqual(len(result["data"]), 1)
|
|
|
|
# Consumer
|
|
|
|
def test_get_consumer(self):
|
|
response = self.client.get("/api/table/", {
|
|
"name": "consumer",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc"
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 2)
|
|
self.assertEqual(result["recordsFiltered"], 2)
|
|
self.assertEqual(len(result["data"]), 2)
|
|
|
|
def test_get_consumer_sub(self):
|
|
self.client.login(username="user_zone", password="test")
|
|
|
|
response = self.client.get("/api/table/", {
|
|
"name": "consumer",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc"
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 0)
|
|
self.assertEqual(result["recordsFiltered"], 0)
|
|
self.assertEqual(len(result["data"]), 0)
|
|
|
|
def test_get_consumer_fountain(self):
|
|
self.client.login(username="user_fountain", password="test")
|
|
|
|
response = self.client.get("/api/table/", {
|
|
"name": "consumer",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc"
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 1)
|
|
self.assertEqual(result["recordsFiltered"], 1)
|
|
self.assertEqual(len(result["data"]), 1)
|
|
|
|
# Manager
|
|
|
|
def test_get_manager(self):
|
|
response = self.client.get("/api/table/", {
|
|
"name": "manager",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc"
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 3)
|
|
self.assertEqual(result["recordsFiltered"], 3)
|
|
self.assertEqual(len(result["data"]), 3)
|
|
|
|
def test_get_manager_sub(self):
|
|
self.client.login(username="user_zone", password="test")
|
|
|
|
response = self.client.get("/api/table/", {
|
|
"name": "manager",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc"
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 1)
|
|
self.assertEqual(result["recordsFiltered"], 1)
|
|
self.assertEqual(len(result["data"]), 1)
|
|
|
|
def test_get_manager_unauthorized(self):
|
|
self.client.login(username="user_fountain", password="test")
|
|
|
|
response = self.client.get("/api/table/", {
|
|
"name": "manager",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc"
|
|
})
|
|
self.assertEqual(response.status_code, 403)
|
|
|
|
# Ticket
|
|
|
|
def test_get_ticket(self):
|
|
response = self.client.get("/api/table/", {
|
|
"name": "ticket",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc"
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 1)
|
|
self.assertEqual(result["recordsFiltered"], 1)
|
|
self.assertEqual(len(result["data"]), 1)
|
|
|
|
def test_get_ticket_sub(self):
|
|
self.client.login(username="user_zone", password="test")
|
|
|
|
response = self.client.get("/api/table/", {
|
|
"name": "ticket",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc"
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 0)
|
|
self.assertEqual(result["recordsFiltered"], 0)
|
|
self.assertEqual(len(result["data"]), 0)
|
|
|
|
def test_get_ticket_fountain(self):
|
|
self.client.login(username="user_fountain", password="test")
|
|
|
|
response = self.client.get("/api/table/", {
|
|
"name": "ticket",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc"
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 1)
|
|
self.assertEqual(result["recordsFiltered"], 1)
|
|
self.assertEqual(len(result["data"]), 1)
|
|
|
|
# Payment
|
|
|
|
def test_get_payment(self):
|
|
response = self.client.get("/api/table/", {
|
|
"name": "payment",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc"
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
def test_get_payment_user(self):
|
|
consumer = Consumer.objects.get(last_name="fountain")
|
|
response = self.client.get("/api/table/", {
|
|
"name": "payment",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc",
|
|
"user": consumer.id
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 1)
|
|
self.assertEqual(result["recordsFiltered"], 1)
|
|
self.assertEqual(len(result["data"]), 1)
|
|
|
|
def test_get_payment_sub(self):
|
|
self.client.login(username="user_zone", password="test")
|
|
|
|
consumer = Consumer.objects.get(last_name="fountain")
|
|
response = self.client.get("/api/table/", {
|
|
"name": "payment",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc",
|
|
"user": consumer.id
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 0)
|
|
self.assertEqual(result["recordsFiltered"], 0)
|
|
self.assertEqual(len(result["data"]), 0)
|
|
|
|
def test_get_payment_fountain(self):
|
|
self.client.login(username="user_fountain", password="test")
|
|
|
|
consumer = Consumer.objects.get(last_name="fountain")
|
|
response = self.client.get("/api/table/", {
|
|
"name": "payment",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc",
|
|
"user": consumer.id
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 1)
|
|
self.assertEqual(result["recordsFiltered"], 1)
|
|
self.assertEqual(len(result["data"]), 1)
|
|
|
|
# Logs
|
|
|
|
def test_get_log(self):
|
|
response = self.client.get("/api/table/", {
|
|
"name": "logs",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc"
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 0)
|
|
self.assertEqual(result["recordsFiltered"], 0)
|
|
self.assertEqual(len(result["data"]), 0)
|
|
|
|
def test_get_log_history(self):
|
|
response = self.client.get("/api/table/", {
|
|
"name": "logs_history",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc"
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 0)
|
|
self.assertEqual(result["recordsFiltered"], 0)
|
|
self.assertEqual(len(result["data"]), 0)
|
|
|
|
# Datatable
|
|
|
|
def test_search_none(self):
|
|
response = self.client.get("/api/table/", {
|
|
"name": "zone",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc",
|
|
"search[value]": "test",
|
|
"columns[1][searchable]": True
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 2)
|
|
self.assertEqual(result["recordsFiltered"], 0)
|
|
self.assertEqual(len(result["data"]), 0)
|
|
|
|
def test_search_in(self):
|
|
response = self.client.get("/api/table/", {
|
|
"name": "zone",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc",
|
|
"search[value]": "Haiti",
|
|
"columns[1][searchable]": True
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 2)
|
|
self.assertEqual(result["recordsFiltered"], 1)
|
|
self.assertEqual(len(result["data"]), 1)
|
|
|
|
def test_too_long(self):
|
|
for i in range(18):
|
|
self.client.post("/api/add/", {"table": "zone", "name": "test" + str(i)})
|
|
|
|
response = self.client.get("/api/table/", {
|
|
"name": "zone",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc",
|
|
"start": "0",
|
|
"length": "10"
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 20)
|
|
self.assertEqual(result["recordsFiltered"], 20)
|
|
self.assertEqual(len(result["data"]), 10)
|
|
|
|
def test_second_page(self):
|
|
for i in range(18):
|
|
self.client.post("/api/add/", {"table": "zone", "name": "test" + str(i)})
|
|
|
|
response = self.client.get("/api/table/", {
|
|
"name": "zone",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "asc",
|
|
"start": "5",
|
|
"length": "5"
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 20)
|
|
self.assertEqual(result["recordsFiltered"], 20)
|
|
self.assertEqual(len(result["data"]), 5)
|
|
|
|
def test_desc(self):
|
|
for i in range(18):
|
|
self.client.post("/api/add/", {"table": "zone", "name": "test" + str(i)})
|
|
|
|
response = self.client.get("/api/table/", {
|
|
"name": "zone",
|
|
"order[0][column]": "0",
|
|
"order[0][dir]": "desc",
|
|
"start": "0",
|
|
"length": "10"
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["recordsTotal"], 20)
|
|
self.assertEqual(result["recordsFiltered"], 20)
|
|
self.assertEqual(len(result["data"]), 10)
|
|
|
|
# Graph
|
|
|
|
def test_get_graph_not_connected(self):
|
|
self.client.logout()
|
|
|
|
response = self.client.get("/api/graph/")
|
|
self.assertEqual(response.status_code, 403)
|
|
|
|
def test_get_graph_gender(self):
|
|
response = self.client.get("/api/graph/", {"type": "consumer_gender_pie"})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(len(result["jsonarray"]), 3)
|
|
self.assertEqual(result["jsonarray"][1]["data"], 2)
|
|
|
|
def test_get_graph_gender_sub(self):
|
|
self.client.login(username="user_zone", password="test")
|
|
|
|
response = self.client.get("/api/graph/", {"type": "consumer_gender_pie"})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(len(result["jsonarray"]), 3)
|
|
self.assertEqual(result["jsonarray"][1]["data"], 0)
|
|
|
|
def test_get_graph_gender_fountain(self):
|
|
self.client.login(username="user_fountain", password="test")
|
|
|
|
response = self.client.get("/api/graph/", {"type": "consumer_gender_pie"})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(len(result["jsonarray"]), 3)
|
|
self.assertEqual(result["jsonarray"][1]["data"], 1)
|
|
|
|
def test_get_graph_volume(self):
|
|
response = self.client.get("/api/graph/", {"type": "average_monthly_volume_per_zone"})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(len(result["jsonarray"][0]["label"]), 2)
|
|
|
|
def test_get_graph_volume_sub(self):
|
|
self.client.login(username="user_zone", password="test")
|
|
|
|
response = self.client.get("/api/graph/", {"type": "average_monthly_volume_per_zone"})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(len(result["jsonarray"][0]["label"]), 1)
|
|
|
|
def test_get_graph_volume_fountain(self):
|
|
self.client.login(username="user_fountain", password="test")
|
|
|
|
response = self.client.get("/api/graph/", {"type": "average_monthly_volume_per_zone"})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(len(result["jsonarray"][0]["label"]), 1)
|
|
|
|
# GIS
|
|
|
|
def test_get_gis_not_connected(self):
|
|
self.client.logout()
|
|
|
|
response = self.client.get("/api/gis/")
|
|
self.assertEqual(response.status_code, 403)
|
|
|
|
def test_get_gis(self):
|
|
response = self.client.get("/api/gis/")
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(len(result), 1)
|
|
|
|
def test_get_gis_sub(self):
|
|
self.client.login(username="user_zone", password="test")
|
|
|
|
response = self.client.get("/api/gis/")
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(len(result), 0)
|
|
|
|
def test_get_gis_fountain(self):
|
|
self.client.login(username="user_fountain", password="test")
|
|
|
|
response = self.client.get("/api/gis/")
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(len(result), 1)
|
|
|
|
def test_get_gis_marker(self):
|
|
response = self.client.get("/api/gis/", {"marker": "fountain"})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(len(result), 1)
|
|
|
|
def test_get_gis_no_marker(self):
|
|
response = self.client.get("/api/gis/", {"marker": "kiosk"})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(len(result), 0)
|
|
|
|
# Details
|
|
|
|
def test_get_details_not_connected(self):
|
|
self.client.logout()
|
|
|
|
response = self.client.get("/api/details/")
|
|
self.assertEqual(response.status_code, 403)
|
|
|
|
def test_get_details_payment(self):
|
|
consumer = Consumer.objects.get(last_name="fountain")
|
|
response = self.client.get("/api/details/", {
|
|
"table": "payment",
|
|
"id": consumer.id
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["balance"], 100)
|
|
|
|
def test_get_details_payment_not_exists(self):
|
|
response = self.client.get("/api/details/", {
|
|
"table": "payment",
|
|
"id": 1000
|
|
})
|
|
self.assertEqual(response.status_code, 400)
|
|
|
|
def test_get_details_payment_unauthorized(self):
|
|
self.client.login(username="user_zone", password="test")
|
|
|
|
consumer = Consumer.objects.get(last_name="fountain")
|
|
response = self.client.get("/api/details/", {
|
|
"table": "payment",
|
|
"id": consumer.id
|
|
})
|
|
self.assertEqual(response.status_code, 403)
|
|
|
|
def test_get_details_location(self):
|
|
fountain = Element.objects.get(name="fountain")
|
|
response = self.client.get("/api/details/", {
|
|
"table": "water_element",
|
|
"id": fountain.id
|
|
})
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(result["localization"], "fountain")
|
|
self.assertIsNotNone(result["geoJSON"])
|
|
|
|
def test_get_details_location_not_exists(self):
|
|
response = self.client.get("/api/details/", {
|
|
"table": "water_element",
|
|
"id": 1000
|
|
})
|
|
self.assertEqual(response.status_code, 400)
|
|
|
|
def test_get_details_location_unauthorized(self):
|
|
self.client.login(username="user_zone", password="test")
|
|
|
|
fountain = Element.objects.get(name="fountain")
|
|
response = self.client.get("/api/details/", {
|
|
"table": "water_element",
|
|
"id": fountain.id
|
|
})
|
|
self.assertEqual(response.status_code, 403)
|
|
|
|
# Outlets
|
|
|
|
def test_get_outlets_not_connected(self):
|
|
self.client.logout()
|
|
|
|
response = self.client.get("/api/outlets/")
|
|
self.assertEqual(response.status_code, 403)
|
|
|
|
def test_get_outlets(self):
|
|
response = self.client.get("/api/outlets/")
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(len(result["data"]), 2)
|
|
|
|
def test_get_outlets_sub(self):
|
|
self.client.login(username="user_zone", password="test")
|
|
|
|
response = self.client.get("/api/outlets/")
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(len(result["data"]), 0)
|
|
|
|
def test_get_outlets_fountain(self):
|
|
self.client.login(username="user_fountain", password="test")
|
|
|
|
response = self.client.get("/api/outlets/")
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
result = json.loads(response.content)
|
|
self.assertEqual(len(result["data"]), 1)
|