Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 50 additions & 16 deletions doajtest/generate_tests.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,59 @@
"""Generate test files from parameter matrices.

Usage:
python generate_tests.py [matrix_dir] [bundle_name] [run_test import path] [outdir]

matrix_dir: directory under matrices to read (default: "tasks.public_data_dump")
bundle_name: bundle name to load parameter sets for (default: "data_dump")
"""

import argparse, json, re
from combinatrix.testintegration import load_parameter_sets
from portality.lib.paths import rel2abs

def load_cases():
return load_parameter_sets(rel2abs(__file__, "matrices", "tasks.public_data_dump"), "data_dump", "test_id",
{"test_id": []})
def load_cases(matrix_dir, bundle):
return load_parameter_sets(rel2abs(__file__, "matrices", matrix_dir), bundle, "test_id", {"test_id": []})


def main():
p = argparse.ArgumentParser(description="Generate tests from combinatrix matrices")
p.add_argument("matrix_dir", nargs="?", default="tasks.public_data_dump",
help="directory under matrices to read (e.g. 'tasks.public_data_dump')")
p.add_argument("bundle", nargs="?", default="data_dump", help="bundle name to load parameter sets for")
p.add_argument("import_path", nargs="?", default="", help="import for run_test function")
p.add_argument("outdir", nargs="?", default="", help="directory to write the test to")
args = p.parse_args()

STUB = rel2abs(__file__, "matrices", "tasks.public_data_dump", "stub.py")
OUT = rel2abs(__file__, "matrices", "tasks.public_data_dump", "test_tasks_public_data_dump.py")
matrix_dir = args.matrix_dir
bundle = args.bundle
# convert bundle to CapWords (PascalCase) for use in class names
bundle_cap = "".join([p.capitalize() for p in re.split(r'[^0-9A-Za-z]+', bundle) if p])
outdir = args.outdir
import_path = args.import_path

tests = ""
for case in load_cases():
num = case[0].zfill(3)
tests += f"""


# output paths
out_filename = f"test_{bundle}.py"
out_path = rel2abs(__file__, "unit", outdir, out_filename)

tests = f"""
from doajtest.helpers import DoajTestCase
from {import_path} import run_test

class Test{bundle_cap}(DoajTestCase):
"""
for case in load_cases(matrix_dir, bundle):
num = case[0].zfill(3)
args = json.dumps(case[1], indent=2)
tests += f"""
def test_{num}(self):
self.run_test({case[1]})
run_test({args})
"""

with open(STUB, "r") as f:
stub = f.read()
stub += "\n\n"
stub += tests
with open(out_path, "w") as f:
f.write(tests)


with open(OUT, "w") as f:
f.write(stub)
if __name__ == "__main__":
main()
2 changes: 1 addition & 1 deletion doajtest/matrices/tasks.public_data_dump/stub.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from doajtest.fixtures import JournalFixtureFactory, ArticleFixtureFactory
from doajtest.helpers import DoajTestCase
from doajtest.mocks.store import StoreMockFactory
from lib.thread_utils import wait_until
from portality.lib.thread_utils import wait_until
from portality import models, store
from portality.background import BackgroundApi
from portality.core import app
Expand Down
277 changes: 277 additions & 0 deletions doajtest/matrices/triage_workflow/triage_workflow.matrix.csv

Large diffs are not rendered by default.

78 changes: 78 additions & 0 deletions doajtest/matrices/triage_workflow/triage_workflow.settings.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
field,test_id,module,stage,reviewer,action,actor,has_minimal_review,label,state_id,result_module,result_stage,result_reviewer,initial_legacy_status,result_legacy_status,initial_legacy_eg,result_legacy_eg,error
type,index,generated,generated,generated,generated,generated,generated,generated,conditional,conditional,conditional,conditional,conditional,conditional,conditional,conditional,conditional
default,,,,,,,,,,triage,,,,,Triage,Triage,no
,,,,,,,,,,,,,,,,,
values,,triage,in_progress,none,action_edit,assigned_triage,yes,none,1.1,triage,in_progress,none,pending,pending,Triage,Triage,no
values,,,minimal_review,triage,event_claim,assigned_non_triage,no,quick_fail,1.2,quick_fail,minimal_review,assigned,in progress,in progress,,none,AuthoriseException
values,,,,non_triage,event_assign_triage,admin,,quality_review,1.3,quality_review,,,,,,,
values,,,,,event_assign_non_triage,unassigned_triage,,,,rejected,,,,,,,
values,,,,,event_unclaim,unassigned_non_triage,,,,,,,,,,,
values,,,,,event_unassign,,,,,,,,,,,,
values,,,,,event_reassign_triage,,,,,,,,,,,,
values,,,,,event_reassign_non_triage,,,,,,,,,,,,
values,,,,,event_minimal_review,,,,,,,,,,,,
values,,,,,event_fail,,,,,,,,,,,,
values,,,,,event_rescind_minimal_review,,,,,,,,,,,,
values,,,,,event_triaged,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
constraint action,,,,!none,action_edit,,,,,,,,,,,,
constraint action,,,,none,event_claim,,,,,,,,,,,,
constraint action,,,,none,event_assign_triage,,,,,,,,,,,,
constraint action,,,,none,event_assign_non_triage,,,,,,,,,,,,
constraint action,,,,!none,event_unclaim,,,,,,,,,,,,
constraint action,,,,!none,event_unassign,,,,,,,,,,,,
constraint action,,,,!none,event_reassign_triage,,,,,,,,,,,,
constraint action,,,,!none,event_reassign_non_triage,,,,,,,,,,,,
constraint action,,,in_progress,!none,event_minimal_review,,,,,,,,,,,,
constraint action,,,,!none,event_fail,,,,,,,,,,,,
constraint action,,,minimal_review,!none,event_rescind_minimal_review,,,,,,,,,,,,
constraint action,,,minimal_review,!none,event_triaged,,yes,!none,,,,,,,,,
,,,,,,,,,,,,,,,,,
constraint actor,,,,triage,,assigned_triage,,,,,,,,,,,
constraint actor,,,,non_triage,,assigned_non_triage,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
constraint label,,,,,event_triaged,,,quick_fail,,,,,,,,,
constraint label,,,,,event_triaged,,,quality_review,,,,,,,,,
,,,,,,,,,,,,,,,,,
conditional state_id,,triage,*,none,,,,,1.1,,,,,,,,
conditional state_id,,triage,in_progress,!none,,,,,1.2,,,,,,,,
conditional state_id,,triage,minimal_review,!none,,,,,1.3,,,,,,,,
,,triage,,,,,,,,,,,,,,,
conditional result_module,,triage,minimal_review,!none,event_triaged,assigned_triage,yes,quick_fail,,quick_fail,,,,,,,
conditional result_module,,triage,minimal_review,!none,event_triaged,assigned_triage,yes,quality_review,,quality_review,,,,,,,
conditional result_module,,triage,,!none,event_fail,assigned_triage,,,,rejected,,,,,,,
,,triage,,,,,,,,,,,,,,,
conditional result_stage,,triage,,none,event_claim,unassigned_triage,no,,,,in_progress,,,,,,
conditional result_stage,,triage,,none,event_assign_triage,admin,no,,,,in_progress,,,,,,
conditional result_stage,,triage,in_progress,,event_reassign_triage,admin,no,,,,in_progress,,,,,,
conditional result_stage,,triage,minimal_review,,event_rescind_minimal_review,assigned_triage|admin,,,,,in_progress,,,,,,
conditional result_stage,,triage,,none,event_claim,unassigned_triage,yes,,,,minimal_review,,,,,,
conditional result_stage,,triage,,none,event_assign_triage,admin,yes,,,,minimal_review,,,,,,
conditional result_stage,,triage,in_progress,,event_minimal_review,assigned_triage|admin,,,,,minimal_review,,,,,,
conditional result_stage,,triage,minimal_review,,event_reassign_triage,admin,yes,,,,minimal_review,,,,,,
,,,,,,,,,,,,,,,,,
conditional result_reviewer,,,,,event_unclaim|event_unassign|event_fail|event_triaged,,,,,,,none,,,,,
conditional result_reviewer,,,,,event_claim|event_assign_triage|event_reassign_triage,,,,,,,assigned,,,,,
,,,,,,,,,,,,,,,,,
conditional initial_legacy_status,,,,none,,,,,,,,,pending,,,,
conditional initial_legacy_status,,,,!none,,,,,,,,,in progress,,,,
,,,,,,,,,,,,,,,,,
conditional result_legacy_status,,,,,event_unclaim|event_unassign,,,,,,,,,pending,,,
conditional result_legacy_status,,,,,event_claim|event_assign_triage|event_reassign_triage|event_rescind_minimal_review|event_minimal_review|event_triaged,,,,,,,,,in progress,,,
conditional result_legacy_status,,,,,action_edit,,,,,,,,,in progress,,,
conditional result_legacy_status,,,,,event_fail,,,,,,,,,rejected,,,
,,,,,,,,,,,,,,,,,
conditional result_legacy_eg,,,,,event_fail|event_triaged,,,,,,,,,,,none,
,,,,,,,,,,,,,,,,,
conditional error,,,,,event_claim,unassigned_non_triage|admin,,,,,,,,,,,AuthoriseException
conditional error,,,,,event_assign_triage,!admin,,,,,,,,,,,AuthoriseException
conditional error,,,,,event_assign_non_triage,,,,,,,,,,,,AuthoriseException
conditional error,,,,,action_edit,assigned_non_triage|unassigned_triage|unassigned_non_triage,,,,,,,,,,,AuthoriseException
conditional error,,,,,event_unclaim,admin|unassigned_triage|unassigned_non_triage,,,,,,,,,,,AuthoriseException
conditional error,,,,,event_unassign,!admin,,,,,,,,,,,AuthoriseException
conditional error,,,,,event_reassign_triage,!admin,,,,,,,,,,,AuthoriseException
conditional error,,,,,event_reassign_non_triage,,,,,,,,,,,,AuthoriseException
conditional error,,,,,event_minimal_review,assigned_non_triage|unassigned_triage|unassigned_non_triage,,,,,,,,,,,AuthoriseException
conditional error,,,,,event_fail,!assigned_triage,,,,,,,,,,,AuthoriseException
conditional error,,,,,event_rescind_minimal_review,assigned_non_triage|unassigned_triage|unassigned_non_triage,,,,,,,,,,,AuthoriseException
conditional error,,,,,event_triaged,!assigned_triage,,,,,,,,,,,AuthoriseException
Loading
Loading