Skip to content

Commit

Permalink
Add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
seallard committed Nov 15, 2023
1 parent 3d689ab commit f3261cf
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 8 deletions.
36 changes: 36 additions & 0 deletions tests/store/crud/test_update.py
Original file line number Diff line number Diff line change
Expand Up @@ -482,3 +482,39 @@ def test_update_run_status_using_tower(
# THEN the status is unchanged, and no database errors were raised
assert analysis.status == status
assert analysis.progress == progress


def test_update_analysis_with_comment(analysis_store: MockStore, case_id: str):
# GIVEN an analysis without a comment
analysis: Analysis = analysis_store.get_latest_analysis_for_case(case_id)
analysis.comment = ""

# WHEN updating the analysis with a comment
analysis_store.update_analysis(analysis_id=analysis.id, comment="test")

# THEN the comment should be set
assert analysis.comment == "test"


def test_update_analysis_status(analysis_store: MockStore, case_id: str):
# GIVEN an analysis with a non failed status
analysis: Analysis = analysis_store.get_latest_analysis_for_case(case_id)
assert analysis.status != "failed"

# WHEN giving the analysis a status
analysis_store.update_analysis(analysis_id=analysis.id, status="failed")

# THEN the status should be set
assert analysis.status == "failed"


def test_update_analysis_visibility(analysis_store: MockStore, case_id: str):
# GIVEN an analysis which is not visible
analysis: Analysis = analysis_store.get_latest_analysis_for_case(case_id)
analysis.is_visible = False

# WHEN making the analysis visible
analysis_store.update_analysis(analysis_id=analysis.id, is_visible=True)

# THEN the analysis should be visible
assert analysis.is_visible
7 changes: 6 additions & 1 deletion trailblazer/server/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,12 @@ def analysis(analysis_id):
return abort(404)

if request.method == "PUT":
store.update_analysis(analysis_id=analysis_id, data=request.json)
status: Optional[str] = request.json.get("status", type=str)
comment: Optional[str] = request.json.get("comment", type=str)
is_visible: Optional[bool] = request.json.get("is_visible", type=bool)
store.update_analysis(
analysis_id=analysis_id, comment=comment, status=status, is_visible=is_visible
)

data = analysis.to_dict()
data["jobs"] = [job.to_dict() for job in analysis.jobs]
Expand Down
18 changes: 11 additions & 7 deletions trailblazer/store/crud/update.py
Original file line number Diff line number Diff line change
Expand Up @@ -222,20 +222,24 @@ def update_analysis_comment(self, case_id: str, comment: str) -> None:
)
LOG.info(f"Adding comment {comment} to analysis {analysis.family}")

def update_analysis(self, analysis_id: int, data: dict) -> Analysis:
def update_analysis(
self,
analysis_id: int,
status: Optional[str] = None,
comment: Optional[str] = None,
is_visible: Optional[bool] = None,
) -> Analysis:
"""Update an analysis."""
analysis: Analysis = self.get_analysis_with_id(analysis_id)

if "comment" in data:
comment = str(data["comment"])
if comment:
LOG.info(f"Adding comment {comment} to analysis {analysis.family}")
analysis.comment = comment

if "is_visible" in data:
is_visible = bool(data["is_visible"])
if is_visible:
LOG.info(f"Setting visibility to {is_visible} for analysis {analysis.family}")
analysis.is_visible = is_visible

if "status" in data:
self.update_analysis_status(case_id=analysis.family, status=data["status"])
if status:
self.update_analysis_status(case_id=analysis.family, status=status)
return analysis

0 comments on commit f3261cf

Please sign in to comment.