Import the fixtures into the test database for queries
This commit is contained in:
parent
ce3863e1b5
commit
5bd790e915
@ -18,6 +18,7 @@ class DBRevision:
|
|||||||
self.request_number,
|
self.request_number,
|
||||||
self.request_id,
|
self.request_id,
|
||||||
) = row
|
) = row
|
||||||
|
self.rev = int(self.rev)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"Rev {self.project}/{self.rev} Md5 {self.unexpanded_srcmd5} {self.commit_time} {self.userid} {self.request_number}"
|
return f"Rev {self.project}/{self.rev} Md5 {self.unexpanded_srcmd5} {self.commit_time} {self.userid} {self.request_number}"
|
||||||
@ -25,6 +26,16 @@ class DBRevision:
|
|||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"[{self.__str__()}]"
|
return f"[{self.__str__()}]"
|
||||||
|
|
||||||
|
def __eq__(self, other):
|
||||||
|
return self.dbid == other.dbid
|
||||||
|
|
||||||
|
def __lt__(self, other):
|
||||||
|
if self.project != other.project:
|
||||||
|
return self.project < other.project
|
||||||
|
if self.package != other.package:
|
||||||
|
return self.package < other.package
|
||||||
|
return self.rev < other.rev
|
||||||
|
|
||||||
def as_dict(self, db):
|
def as_dict(self, db):
|
||||||
"""Return a dict we can put into YAML for test cases"""
|
"""Return a dict we can put into YAML for test cases"""
|
||||||
ret = {
|
ret = {
|
||||||
@ -164,3 +175,55 @@ class DBRevision:
|
|||||||
(project, package),
|
(project, package),
|
||||||
)
|
)
|
||||||
return [row[0] for row in cur.fetchall()]
|
return [row[0] for row in cur.fetchall()]
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def import_fixture_dict(db, rev_dict):
|
||||||
|
"""Used in test cases to read a revision from fixtures into the test database"""
|
||||||
|
with db.cursor() as cur:
|
||||||
|
cur.execute(
|
||||||
|
"""INSERT INTO revisions (project, package, rev, unexpanded_srcmd5, expanded_srcmd5, commit_time, userid, comment, broken)
|
||||||
|
VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s) RETURNING id""",
|
||||||
|
(
|
||||||
|
rev_dict["project"],
|
||||||
|
rev_dict["package"],
|
||||||
|
rev_dict["rev"],
|
||||||
|
rev_dict["unexpanded_srcmd5"],
|
||||||
|
rev_dict["expanded_srcmd5"],
|
||||||
|
rev_dict["commit_time"],
|
||||||
|
rev_dict["userid"],
|
||||||
|
rev_dict["comment"],
|
||||||
|
rev_dict["broken"],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
rev_id = cur.fetchone()[0]
|
||||||
|
for file_dict in rev_dict["files"]:
|
||||||
|
cur.execute(
|
||||||
|
"INSERT INTO files (md5, mtime, name, size, revision_id) VALUES(%s, %s, %s, %s, %s)",
|
||||||
|
(
|
||||||
|
file_dict["md5"],
|
||||||
|
file_dict["mtime"],
|
||||||
|
file_dict["name"],
|
||||||
|
file_dict["size"],
|
||||||
|
rev_id,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
request = rev_dict.get("request")
|
||||||
|
if request:
|
||||||
|
cur.execute(
|
||||||
|
"""INSERT INTO requests (creator, number, source_project, source_package,
|
||||||
|
source_rev, state, type) VALUES (%s, %s, %s, %s, %s, %s, %s) RETURNING id""",
|
||||||
|
(
|
||||||
|
request["creator"],
|
||||||
|
request["number"],
|
||||||
|
request.get("source_project"),
|
||||||
|
request.get("source_package"),
|
||||||
|
request.get("source_rev"),
|
||||||
|
request["state"],
|
||||||
|
request["type"],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
request_id = cur.fetchone()[0]
|
||||||
|
cur.execute(
|
||||||
|
"UPDATE revisions SET request_id=%s, request_number=%s WHERE id=%s",
|
||||||
|
(request_id, request["number"], rev_id),
|
||||||
|
)
|
||||||
|
26
tests/tree_test.py
Normal file
26
tests/tree_test.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import os
|
||||||
|
import unittest
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
from lib.db import DB
|
||||||
|
from lib.db_revision import DBRevision
|
||||||
|
|
||||||
|
|
||||||
|
class TestTreeMethods(unittest.TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.db = DB(section="test")
|
||||||
|
path = os.path.join(os.path.dirname(__file__), "fixtures/zsh-data.yaml")
|
||||||
|
with open(path, "r") as f:
|
||||||
|
zsh_data = yaml.safe_load(f)
|
||||||
|
for rev in zsh_data["revisions"]:
|
||||||
|
DBRevision.import_fixture_dict(self.db, rev)
|
||||||
|
|
||||||
|
def test_create_tree(self):
|
||||||
|
factory_revisions = DBRevision.all_revisions(self.db, "openSUSE:Factory", "zsh")
|
||||||
|
pprint(sorted(factory_revisions))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
unittest.main()
|
Loading…
Reference in New Issue
Block a user