summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/test_backend.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/test_backend.py b/tests/test_backend.py
new file mode 100644
index 00000000..afc6215d
--- /dev/null
+++ b/tests/test_backend.py
@@ -0,0 +1,59 @@
+
+import os
+import json
+import fatcat
+import fatcat.sql
+import unittest
+import tempfile
+from nose.tools import *
+
+# TODO: replace all these "assert" with unit test version (which displays left
+# and right on failure)
+
+# TODO: http://alextechrants.blogspot.com/2013/08/unit-testing-sqlalchemy-apps.html
+
+## Helpers ##################################################################
+
+def check_entity_fields(e):
+ for key in ('id', 'rev', 'previous', 'state', 'redirect_id', 'edit_id',
+ 'extra_json'):
+ assert_in(key, e)
+ for key in ('id', 'rev'):
+ assert_is_not_none(e[key])
+
+## API Tests ################################################################
+
+class FatcatTestCase(unittest.TestCase):
+
+ def setUp(self):
+ fatcat.app.config['DATABASE_URI'] = 'sqlite://:memory:'
+ fatcat.app.testing = True
+ self.app = fatcat.app.test_client()
+ fatcat.db.create_all()
+
+ def test_health(self):
+ rv = self.app.get('/health')
+ obj = json.loads(rv.data.decode('utf-8'))
+ assert obj['ok']
+
+ def test_works(self):
+
+ # Invalid Id
+ rv = self.app.get('/v0/work/_')
+ assert rv.status_code == 404
+
+ # Missing Id (TODO)
+ #rv = self.app.get('/v0/work/rzga5b9cd7efgh04iljk')
+ #assert rv.status is 404
+
+ # Valid Id
+ rv = self.app.get('/v0/work/r3zga5b9cd7ef8gh084714iljk')
+ assert rv.status_code == 200
+ obj = json.loads(rv.data.decode('utf-8'))
+ check_entity_fields(obj)
+ assert obj['title']
+ assert_equal(obj['work_type'], "journal-article")
+
+ def test_something(self):
+
+ fatcat.sql.populate_db()