summaryrefslogtreecommitdiffstats
path: root/tests/test_backend.py
blob: afc6215d87b7c8ae182712b5d0c3c71b6aea45fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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()