aboutsummaryrefslogtreecommitdiff
path: root/backend/tests/test_gen_linked_imgs.py
blob: be4b0d1e7fa6e3ae02bd238d6c8dcb7fc074c2ec (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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import unittest
import tempfile
import os

from tests.common import createTestDbTable, readTestDbTable
from tol_data.gen_linked_imgs import genData

class TestGenData(unittest.TestCase):
	def test_gen(self):
		with tempfile.TemporaryDirectory() as tempDir:
			# Create temp tree-of-life db
				# Test tree ('I' means a node has an image):
					# one -> two -> sixI
					#            -> seven
					#            -> eight
					#     -> threeI
					#     -> [nine + ten] -> nineI
					#                     -> ten
					#     -> fiveI -> [twelve + thirteen] -> twelveI
					#                                     -> thirteenI
			dbFile = os.path.join(tempDir, 'data.db')
			createTestDbTable(
				dbFile,
				'CREATE TABLE nodes (name TEXT PRIMARY KEY, id TEXT UNIQUE, tips INT)',
				'INSERT INTO nodes VALUES (?, ?, ?)',
				{
					('one', 'ott1', 8),
					('two', 'ott2', 3),
					('three', 'ott3', 1),
					('[nine + ten]', 'ott4', 2),
					('five', 'ott5', 2),
					('six', 'ott6', 1),
					('seven', 'ott7', 1),
					('eight', 'ott8', 1),
					('nine', 'ott9', 1),
					('ten', 'ott10', 1),
					('[twelve + thirteen]', 'ott11', 2),
					('twelve', 'ott12', 1),
					('thirteen', 'ott13', 1),
				}
			)
			createTestDbTable(
				dbFile,
				'CREATE TABLE edges (parent TEXT, child TEXT, p_support INT, PRIMARY KEY (parent, child))',
				'INSERT INTO edges VALUES (?, ?, ?)',
				{
					('one', 'two', 1),
					('one', 'three', 1),
					('one', '[nine + ten]', 0),
					('one', 'five', 1),
					('two', 'six', 1),
					('two', 'seven', 1),
					('two', 'eight', 0),
					('[nine + ten]', 'nine', 0),
					('[nine + ten]', 'ten', 1),
					('five', '[twelve + thirteen]', 1),
					('[twelve + thirteen]', 'twelve', 1),
					('[twelve + thirteen]', 'thirteen', 0),
				}
			)
			createTestDbTable(
				dbFile,
				'CREATE TABLE node_imgs (name TEXT PRIMARY KEY, img_id INT, src TEXT)',
				'INSERT INTO node_imgs VALUES (?, ?, ?)',
				{
					('six', 1, 'eol'),
					('three', 10, 'enwiki'),
					('nine', 1, 'picked'),
					('five', 2, 'eol'),
					('twelve', 11, 'enwiki'),
					('thirteen', 12, 'enwiki'),
				}
			)

			# Run
			genData(dbFile)

			# Check
			self.assertEqual(
				readTestDbTable(dbFile, 'SELECT name, otol_ids from linked_imgs'),
				{
					('one', 'ott6'),
					('two', 'ott6'),
					('[nine + ten]', 'ott9,'),
					('[twelve + thirteen]', 'ott12,ott13'),
				}
			)