aboutsummaryrefslogtreecommitdiff
path: root/ihatemoney/tests/common/ihatemoney_testcase.py
diff options
context:
space:
mode:
Diffstat (limited to 'ihatemoney/tests/common/ihatemoney_testcase.py')
-rw-r--r--ihatemoney/tests/common/ihatemoney_testcase.py70
1 files changed, 70 insertions, 0 deletions
diff --git a/ihatemoney/tests/common/ihatemoney_testcase.py b/ihatemoney/tests/common/ihatemoney_testcase.py
new file mode 100644
index 0000000..2e59059
--- /dev/null
+++ b/ihatemoney/tests/common/ihatemoney_testcase.py
@@ -0,0 +1,70 @@
+from flask_testing import TestCase
+from werkzeug.security import generate_password_hash
+
+from ihatemoney import models
+from ihatemoney.run import create_app, db
+
+
+class BaseTestCase(TestCase):
+
+ SECRET_KEY = "TEST SESSION"
+
+ def create_app(self):
+ # Pass the test object as a configuration.
+ return create_app(self)
+
+ def setUp(self):
+ db.create_all()
+
+ def tearDown(self):
+ # clean after testing
+ db.session.remove()
+ db.drop_all()
+
+ def login(self, project, password=None, test_client=None):
+ password = password or project
+
+ return self.client.post(
+ "/authenticate",
+ data=dict(id=project, password=password),
+ follow_redirects=True,
+ )
+
+ def post_project(self, name, follow_redirects=True):
+ """Create a fake project"""
+ # create the project
+ return self.client.post(
+ "/create",
+ data={
+ "name": name,
+ "id": name,
+ "password": name,
+ "contact_email": f"{name}@notmyidea.org",
+ "default_currency": "USD",
+ },
+ follow_redirects=follow_redirects,
+ )
+
+ def create_project(self, name):
+ project = models.Project(
+ id=name,
+ name=str(name),
+ password=generate_password_hash(name),
+ contact_email=f"{name}@notmyidea.org",
+ default_currency="USD",
+ )
+ models.db.session.add(project)
+ models.db.session.commit()
+
+
+class IhatemoneyTestCase(BaseTestCase):
+ SQLALCHEMY_DATABASE_URI = "sqlite://"
+ TESTING = True
+ WTF_CSRF_ENABLED = False # Simplifies the tests.
+
+ def assertStatus(self, expected, resp, url=""):
+ return self.assertEqual(
+ expected,
+ resp.status_code,
+ f"{url} expected {expected}, got {resp.status_code}",
+ )