add tests
This commit is contained in:
parent
e251900965
commit
6fb4a20348
15
tests/__init__.py
Normal file
15
tests/__init__.py
Normal file
@ -0,0 +1,15 @@
|
||||
import unittest
|
||||
from . import base
|
||||
from . import api
|
||||
|
||||
|
||||
def suite():
|
||||
suite = unittest.TestSuite()
|
||||
suite.addTest(base.suite())
|
||||
suite.addTest(api.suite())
|
||||
return suite
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
runner = unittest.TextTestRunner()
|
||||
runner.run(suite())
|
9
tests/api/__init__.py
Normal file
9
tests/api/__init__.py
Normal file
@ -0,0 +1,9 @@
|
||||
import unittest
|
||||
from .test_appointment import AppointmentTestCase
|
||||
|
||||
|
||||
def suite():
|
||||
suite = unittest.TestSuite()
|
||||
|
||||
suite.addTest(unittest.makeSuite(AppointmentTestCase))
|
||||
return suite
|
10
tests/api/test_appointment.py
Normal file
10
tests/api/test_appointment.py
Normal file
@ -0,0 +1,10 @@
|
||||
from ..testBase import APITestBase
|
||||
from pony.orm import db_session
|
||||
|
||||
|
||||
class AppointmentTestCase(APITestBase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
|
||||
def test_get_appointement(self):
|
||||
self.make_request("appointment", 200)
|
13
tests/assets/sample.ini
Normal file
13
tests/assets/sample.ini
Normal file
@ -0,0 +1,13 @@
|
||||
[types]
|
||||
float = 1.23
|
||||
int = 42
|
||||
string = Some text here
|
||||
|
||||
[booleans]
|
||||
bool_false = false
|
||||
bool_true = true
|
||||
switch_false = off
|
||||
switch_true = on
|
||||
yn_false = no
|
||||
yn_true = yes
|
||||
|
10
tests/base/__init__.py
Normal file
10
tests/base/__init__.py
Normal file
@ -0,0 +1,10 @@
|
||||
import unittest
|
||||
from .test_DB import DbTestCase
|
||||
from .test_config import ConfigTestCase
|
||||
|
||||
|
||||
def suite():
|
||||
suite = unittest.TestSuite()
|
||||
suite.addTest(unittest.makeSuite(DbTestCase))
|
||||
suite.addTest(unittest.makeSuite(ConfigTestCase))
|
||||
return suite
|
84
tests/base/test_DB.py
Normal file
84
tests/base/test_DB.py
Normal file
@ -0,0 +1,84 @@
|
||||
import unittest
|
||||
import re
|
||||
from datetime import datetime
|
||||
from datetime import timedelta
|
||||
from pony.orm import db_session
|
||||
from ITPlanning import db
|
||||
|
||||
DATE_REGEX = r"^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$"
|
||||
|
||||
|
||||
class DbTestCase(unittest.TestCase):
|
||||
def setUp(self):
|
||||
db.init_database("sqlite:")
|
||||
|
||||
def tearDown(self):
|
||||
db.release_database()
|
||||
|
||||
def create_Customer(self):
|
||||
return db.Customer(
|
||||
first_name="john",
|
||||
last_name="DOE",
|
||||
email="john@doe.fr",
|
||||
localisation="batiment 1",
|
||||
mobile_number="0602020020",
|
||||
phone_number="0321323432",
|
||||
)
|
||||
|
||||
def create_service_category(self):
|
||||
return db.Service_category(
|
||||
name="install",
|
||||
duration=45,
|
||||
free_order=False,
|
||||
description="test Service_category",
|
||||
)
|
||||
|
||||
def create_service(self):
|
||||
service_category = self.create_service_category()
|
||||
return db.Service(
|
||||
name="install", max_appointement=1, service_category=service_category
|
||||
)
|
||||
|
||||
def create_planning(self):
|
||||
return db.Planning(
|
||||
name="refresh1",
|
||||
working_plan='{"monday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:k20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"tuesday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"wednesday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"thursday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]},"friday":{"start":"09:00","end":"18:00","breaks":[{"start":"11:20","end":"11:30"},{"start":"14:30","end":"15:00"}]}',
|
||||
)
|
||||
|
||||
def create_ticket(self):
|
||||
pass
|
||||
|
||||
def create_Planner(self):
|
||||
pass
|
||||
|
||||
@db_session
|
||||
def test_appointement(self):
|
||||
current_date = datetime.now()
|
||||
customer = self.create_Customer()
|
||||
service = self.create_service()
|
||||
planning = self.create_planning()
|
||||
planning.services.add(service)
|
||||
end_datetime = current_date + timedelta(
|
||||
minutes=service.service_category.duration
|
||||
)
|
||||
|
||||
appointment = db.Appointment(
|
||||
book_datetime=current_date,
|
||||
start_datetime=current_date,
|
||||
end_datetime=end_datetime,
|
||||
is_unavaillable=False,
|
||||
service=service,
|
||||
planning=planning,
|
||||
customer=customer,
|
||||
)
|
||||
self.assertIsInstance(appointment, db.Appointment)
|
||||
self.assertIsInstance(appointment.book_datetime, datetime)
|
||||
self.assertIsInstance(appointment.start_datetime, datetime)
|
||||
self.assertIsInstance(appointment.end_datetime, datetime)
|
||||
self.assertIsInstance(appointment.service, db.Service)
|
||||
self.assertIsInstance(appointment.planning, db.Planning)
|
||||
self.assertIsInstance(appointment.customer, db.Customer)
|
||||
|
||||
|
||||
if __name__ == "main":
|
||||
unittest.main()
|
26
tests/base/test_config.py
Normal file
26
tests/base/test_config.py
Normal file
@ -0,0 +1,26 @@
|
||||
import unittest
|
||||
from ITPlanning.config import IniConfig
|
||||
|
||||
|
||||
class ConfigTestCase(unittest.TestCase):
|
||||
def test_sections(self):
|
||||
conf = IniConfig("tests/assets/sample.ini")
|
||||
for attr in ("TYPES", "BOOLEANS"):
|
||||
self.assertTrue(hasattr(conf, attr))
|
||||
self.assertIsInstance(getattr(conf, attr), dict)
|
||||
|
||||
def test_types(self):
|
||||
conf = IniConfig("tests/assets/sample.ini")
|
||||
self.assertIsInstance(conf.TYPES["float"], float)
|
||||
self.assertIsInstance(conf.TYPES["int"], int)
|
||||
self.assertIsInstance(conf.TYPES["string"], str)
|
||||
|
||||
for t in ("bool", "switch", "yn"):
|
||||
self.assertIsInstance(conf.BOOLEANS[t + "_false"], bool)
|
||||
self.assertIsInstance(conf.BOOLEANS[t + "_true"], bool)
|
||||
self.assertFalse(conf.BOOLEANS[t + "_false"])
|
||||
self.assertTrue(conf.BOOLEANS[t + "_true"])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
41
tests/testBase.py
Normal file
41
tests/testBase.py
Normal file
@ -0,0 +1,41 @@
|
||||
import tempfile
|
||||
import unittest
|
||||
import os
|
||||
from ITPlanning.config import DefaultConfig
|
||||
from ITPlanning.db import init_database, release_database
|
||||
from ITPlanning.app import create_app
|
||||
|
||||
|
||||
class TestBase(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.__db = tempfile.mkstemp()
|
||||
self.config = DefaultConfig()
|
||||
self.config.BASE["database_uri"] = "sqlite:///" + self.__db[1]
|
||||
self.config.TESTING = True
|
||||
init_database(self.config.BASE["database_uri"])
|
||||
release_database()
|
||||
self.__app = create_app(self.config)
|
||||
self.client = self.__app.test_client()
|
||||
|
||||
def app_context(self, *args, **kwargs):
|
||||
return self.__app.app_context(*args, **kwargs)
|
||||
|
||||
def request_context(self, *args, **kwargs):
|
||||
return self.__app.test_request_context(*args, **kwargs)
|
||||
|
||||
def tearDown(self):
|
||||
release_database()
|
||||
os.close(self.__db[0])
|
||||
os.remove(self.__db[1])
|
||||
|
||||
|
||||
class APITestBase(TestBase):
|
||||
def make_request(self, endpoint, return_code, args={}, method="get"):
|
||||
if not isinstance(args, dict):
|
||||
raise TypeError("'args', expecting a dict, got " + type(args).__name__)
|
||||
uri = "/api/v1/{}".format(endpoint)
|
||||
|
||||
method = getattr(self.client, method)
|
||||
rv = method(uri, data=args)
|
||||
self.assertEqual(rv.status_code, return_code)
|
||||
return rv
|
Loading…
Reference in New Issue
Block a user