Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitfc9d45a

Browse files
Copilotzkoppert
andcommitted
Add 3 additional test cases for label metrics with creation-time labels and varied timeframes
Co-authored-by: zkoppert <6935431+zkoppert@users.noreply.github.com>
1 parentdb42ac2 commitfc9d45a

File tree

1 file changed

+110
-0
lines changed

1 file changed

+110
-0
lines changed

‎test_labels.py‎

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,116 @@ def test_get_label_metrics_closed_issue_label_remains_through_closure(self):
156156
expected_duration=timedelta(days=8)
157157
self.assertEqual(metrics["stays-applied"],expected_duration)
158158

159+
deftest_get_label_metrics_label_applied_at_creation_and_removed_before_closure(self):
160+
"""Test get_label_metrics for a label applied at issue creation and removed before closure"""
161+
# Test scenario where label is applied at creation and later removed:
162+
# Issue created: day 0 (2021-01-01) with label applied
163+
# Label removed: day 7 (2021-01-08)
164+
# Issue closed: day 20 (2021-01-21)
165+
# Expected duration: 7 days (from creation to removal)
166+
167+
issue=MagicMock()
168+
issue.issue=MagicMock(spec=github3.issues.Issue)
169+
issue.created_at="2021-01-01T00:00:00Z"
170+
issue.closed_at="2021-01-21T00:00:00Z"# 20 days after creation
171+
issue.state="closed"
172+
issue.issue.events.return_value= [
173+
MagicMock(
174+
event="labeled",
175+
label={"name":"creation-label"},
176+
created_at=datetime(2021,1,1,tzinfo=pytz.UTC),# day 0 - at creation
177+
),
178+
MagicMock(
179+
event="unlabeled",
180+
label={"name":"creation-label"},
181+
created_at=datetime(2021,1,8,tzinfo=pytz.UTC),# day 7
182+
),
183+
]
184+
185+
labels= ["creation-label"]
186+
metrics=get_label_metrics(issue,labels)
187+
188+
# Should be 7 days (from creation to removal), not 20 days (full issue duration)
189+
expected_duration=timedelta(days=7)
190+
self.assertEqual(metrics["creation-label"],expected_duration)
191+
192+
deftest_get_label_metrics_label_applied_at_creation_remains_through_closure(self):
193+
"""Test get_label_metrics for a label applied at creation and kept through closure"""
194+
# Test scenario where label is applied at creation and never removed:
195+
# Issue created: day 0 (2021-01-01) with label applied
196+
# Issue closed: day 30 (2021-01-31)
197+
# Expected duration: 30 days (full issue duration)
198+
199+
issue=MagicMock()
200+
issue.issue=MagicMock(spec=github3.issues.Issue)
201+
issue.created_at="2021-01-01T00:00:00Z"
202+
issue.closed_at="2021-01-31T00:00:00Z"# 30 days after creation
203+
issue.state="closed"
204+
issue.issue.events.return_value= [
205+
MagicMock(
206+
event="labeled",
207+
label={"name":"permanent-label"},
208+
created_at=datetime(2021,1,1,tzinfo=pytz.UTC),# day 0 - at creation
209+
),
210+
# No unlabel event - label remains applied
211+
]
212+
213+
labels= ["permanent-label"]
214+
metrics=get_label_metrics(issue,labels)
215+
216+
# Should be 30 days (full issue duration since label was applied at creation)
217+
expected_duration=timedelta(days=30)
218+
self.assertEqual(metrics["permanent-label"],expected_duration)
219+
220+
deftest_get_label_metrics_multiple_labels_different_timeframes(self):
221+
"""Test get_label_metrics with multiple labels having different application patterns and longer timeframes"""
222+
# Test scenario with multiple labels and longer timeframes:
223+
# Issue created: day 0 (2021-01-01)
224+
# Label A applied: day 0 (at creation)
225+
# Label B applied: day 14 (2021-01-15)
226+
# Label A removed: day 21 (2021-01-22)
227+
# Label B removed: day 35 (2021-02-05)
228+
# Issue closed: day 60 (2021-03-02)
229+
# Expected: Label A = 21 days, Label B = 21 days
230+
231+
issue=MagicMock()
232+
issue.issue=MagicMock(spec=github3.issues.Issue)
233+
issue.created_at="2021-01-01T00:00:00Z"
234+
issue.closed_at="2021-03-02T00:00:00Z"# 60 days after creation
235+
issue.state="closed"
236+
issue.issue.events.return_value= [
237+
MagicMock(
238+
event="labeled",
239+
label={"name":"label-a"},
240+
created_at=datetime(2021,1,1,tzinfo=pytz.UTC),# day 0 - at creation
241+
),
242+
MagicMock(
243+
event="labeled",
244+
label={"name":"label-b"},
245+
created_at=datetime(2021,1,15,tzinfo=pytz.UTC),# day 14
246+
),
247+
MagicMock(
248+
event="unlabeled",
249+
label={"name":"label-a"},
250+
created_at=datetime(2021,1,22,tzinfo=pytz.UTC),# day 21
251+
),
252+
MagicMock(
253+
event="unlabeled",
254+
label={"name":"label-b"},
255+
created_at=datetime(2021,2,5,tzinfo=pytz.UTC),# day 35
256+
),
257+
]
258+
259+
labels= ["label-a","label-b"]
260+
metrics=get_label_metrics(issue,labels)
261+
262+
# Label A: 21 days (from day 0 to day 21)
263+
# Label B: 21 days (from day 14 to day 35)
264+
expected_duration_a=timedelta(days=21)
265+
expected_duration_b=timedelta(days=21)
266+
self.assertEqual(metrics["label-a"],expected_duration_a)
267+
self.assertEqual(metrics["label-b"],expected_duration_b)
268+
159269

160270
classTestGetAverageTimeInLabels(unittest.TestCase):
161271
"""Unit tests for get_stats_time_in_labels"""

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp