Skip to content

Commit 7f048dc

Browse files
Agentlubomir
authored andcommitted
Add unit tests for GET /api/1/tags/{id}/changes/
Closes #70 Generated-By: OpenCode (google-vertex-anthropic/claude-sonnet-4-6@default)
1 parent 9dbd280 commit 7f048dc

1 file changed

Lines changed: 87 additions & 0 deletions

File tree

tests/test_views.py

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1110,3 +1110,90 @@ def test_changes_with_addtag(self):
11101110
self.assertEqual(rv.status, "200 OK")
11111111
self.assertEqual(len(data["changes"]), 2)
11121112
self.assertEqual(data["changes"], [c.json() for c in self.c.changes])
1113+
1114+
1115+
class TestViewsTagChanges(ViewBaseTest):
1116+
maxDiff = None
1117+
1118+
def setup_composes(self):
1119+
User.create_user(username="odcs")
1120+
self.t = Tag.create(
1121+
db.session,
1122+
"odcs",
1123+
name="test-tag",
1124+
description="A test tag",
1125+
documentation="http://localhost/docs",
1126+
)
1127+
1128+
def test_initial_change(self):
1129+
"""After tag creation there is exactly one 'created' change record."""
1130+
with self._test_request_context(user="odcs"):
1131+
rv = self.client.get("/api/1/tags/test-tag/changes/")
1132+
data = json.loads(rv.get_data(as_text=True))
1133+
self.assertEqual(rv.status, "200 OK")
1134+
self.assertEqual(len(data["changes"]), 1)
1135+
self.assertEqual(data["changes"][0]["action"], "created")
1136+
self.assertEqual(data["changes"], [c.json() for c in self.t.changes])
1137+
1138+
def test_initial_change_by_id(self):
1139+
"""The changes endpoint can also be addressed by numeric tag id."""
1140+
with self._test_request_context(user="odcs"):
1141+
rv = self.client.get("/api/1/tags/%d/changes/" % self.t.id)
1142+
data = json.loads(rv.get_data(as_text=True))
1143+
self.assertEqual(rv.status, "200 OK")
1144+
self.assertEqual(len(data["changes"]), 1)
1145+
self.assertEqual(data["changes"], [c.json() for c in self.t.changes])
1146+
1147+
def test_changes_after_add_tagger(self):
1148+
"""Adding a tagger appends an 'add_tagger' change record."""
1149+
self.t.add_tagger("odcs", username="odcs")
1150+
with self._test_request_context(user="odcs"):
1151+
rv = self.client.get("/api/1/tags/test-tag/changes/")
1152+
data = json.loads(rv.get_data(as_text=True))
1153+
self.assertEqual(rv.status, "200 OK")
1154+
self.assertEqual(len(data["changes"]), 2)
1155+
self.assertEqual(data["changes"][-1]["action"], "add_tagger")
1156+
self.assertEqual(data["changes"], [c.json() for c in self.t.changes])
1157+
1158+
def test_changes_after_remove_tagger(self):
1159+
"""Removing a previously-added tagger appends a 'remove_tagger' change record."""
1160+
self.t.add_tagger("odcs", username="odcs")
1161+
self.t.remove_tagger("odcs", username="odcs")
1162+
with self._test_request_context(user="odcs"):
1163+
rv = self.client.get("/api/1/tags/test-tag/changes/")
1164+
data = json.loads(rv.get_data(as_text=True))
1165+
self.assertEqual(rv.status, "200 OK")
1166+
self.assertEqual(len(data["changes"]), 3)
1167+
self.assertEqual(data["changes"][-1]["action"], "remove_tagger")
1168+
self.assertEqual(data["changes"], [c.json() for c in self.t.changes])
1169+
1170+
def test_changes_after_add_untagger(self):
1171+
"""Adding an untagger appends an 'add_untagger' change record."""
1172+
self.t.add_untagger("odcs", username="odcs")
1173+
with self._test_request_context(user="odcs"):
1174+
rv = self.client.get("/api/1/tags/test-tag/changes/")
1175+
data = json.loads(rv.get_data(as_text=True))
1176+
self.assertEqual(rv.status, "200 OK")
1177+
self.assertEqual(len(data["changes"]), 2)
1178+
self.assertEqual(data["changes"][-1]["action"], "add_untagger")
1179+
self.assertEqual(data["changes"], [c.json() for c in self.t.changes])
1180+
1181+
def test_changes_after_remove_untagger(self):
1182+
"""Removing a previously-added untagger appends a 'remove_untagger' change record."""
1183+
self.t.add_untagger("odcs", username="odcs")
1184+
self.t.remove_untagger("odcs", username="odcs")
1185+
with self._test_request_context(user="odcs"):
1186+
rv = self.client.get("/api/1/tags/test-tag/changes/")
1187+
data = json.loads(rv.get_data(as_text=True))
1188+
self.assertEqual(rv.status, "200 OK")
1189+
self.assertEqual(len(data["changes"]), 3)
1190+
self.assertEqual(data["changes"][-1]["action"], "remove_untagger")
1191+
self.assertEqual(data["changes"], [c.json() for c in self.t.changes])
1192+
1193+
def test_tag_not_found(self):
1194+
"""Requesting changes for a non-existent tag returns 404."""
1195+
with self._test_request_context(user="odcs"):
1196+
rv = self.client.get("/api/1/tags/no-such-tag/changes/")
1197+
data = json.loads(rv.get_data(as_text=True))
1198+
self.assertEqual(rv.status, "404 NOT FOUND")
1199+
self.assertEqual(data["status"], 404)

0 commit comments

Comments
 (0)