11from __future__ import absolute_import
22
3- import six
4-
5- from datetime import datetime , timedelta
3+ from datetime import timedelta
64
75import pytest
86from django .db .models import ProtectedError
1614
1715
1816class GroupTest (TestCase ):
17+ def setUp (self ):
18+ super (GroupTest , self ).setUp ()
19+ self .min_ago = (timezone .now () - timedelta (minutes = 1 )).isoformat ()[:19 ]
20+ self .two_min_ago = (timezone .now () - timedelta (minutes = 2 )).isoformat ()[:19 ]
21+ self .sec_ago = (timezone .now () - timedelta (seconds = 1 )).isoformat ()[:19 ]
22+ self .two_sec_ago = (timezone .now () - timedelta (seconds = 1 )).isoformat ()[:19 ]
23+
1924 def test_is_resolved (self ):
2025 group = self .create_group (status = GroupStatus .RESOLVED )
2126 assert group .is_resolved ()
@@ -36,56 +41,68 @@ def test_is_resolved(self):
3641
3742 assert group .is_resolved ()
3843
39- def test_get_oldest_latest_event_no_events (self ):
40- group = self .create_group ()
44+ def test_get_latest_event_no_events (self ):
45+ project = self .create_project ()
46+ group = self .create_group (project = project )
4147 assert group .get_latest_event () is None
42- assert group .get_oldest_event () is None
4348
44- def test_get_oldest_latest_events (self ):
45- group = self .create_group ()
46- for i in range (0 , 3 ):
47- self .create_event (
48- event_id = six .text_type (i ),
49- group = group ,
50- datetime = datetime (2013 , 8 , 13 , 3 , 8 , i ),
51- )
52-
53- assert group .get_latest_event ().event_id == '2'
54- assert group .get_oldest_event ().event_id == '0'
49+ def test_get_latest_event (self ):
50+ self .store_event (
51+ data = {
52+ 'event_id' : 'a' * 32 ,
53+ 'fingerprint' : ['group-1' ],
54+ 'timestamp' : self .two_min_ago ,
55+ },
56+ project_id = self .project .id ,
57+ )
58+ self .store_event (
59+ data = {
60+ 'event_id' : 'b' * 32 ,
61+ 'fingerprint' : ['group-1' ],
62+ 'timestamp' : self .min_ago ,
63+ },
64+ project_id = self .project .id ,
65+ )
5566
56- def test_get_oldest_latest_identical_timestamps (self ):
57- group = self .create_group ()
58- for i in range (0 , 3 ):
59- self .create_event (
60- event_id = six .text_type (i ),
61- group = group ,
62- datetime = datetime (2013 , 8 , 13 , 3 , 8 , 50 ),
63- )
67+ group = Group .objects .first ()
6468
65- assert group .get_latest_event ().event_id == '2'
66- assert group .get_oldest_event ().event_id == '0'
69+ assert group .get_latest_event ().event_id == 'b' * 32
6770
68- def test_get_oldest_latest_almost_identical_timestamps (self ):
69- group = self .create_group ()
70- self .create_event (
71- event_id = '0' ,
72- group = group ,
73- datetime = datetime (2013 , 8 , 13 , 3 , 8 , 0 ), # earliest
74- )
75- for i in range (1 , 3 ):
76- self .create_event (
77- event_id = six .text_type (i ),
78- group = group ,
79- datetime = datetime (2013 , 8 , 13 , 3 , 8 , 30 ), # all in the middle
71+ def test_get_latest_identical_timestamps (self ):
72+ events = []
73+ for i in 'abc' :
74+ event = self .store_event (
75+ data = {
76+ 'event_id' : i * 32 ,
77+ 'fingerprint' : ['group-1' ],
78+ 'timestamp' : self .min_ago ,
79+ },
80+ project_id = self .project .id ,
8081 )
81- self .create_event (
82- event_id = '3' ,
83- group = group ,
84- datetime = datetime (2013 , 8 , 13 , 3 , 8 , 59 ), # latest
82+ events .append (event )
83+
84+ assert events [0 ].group .get_latest_event ().event_id == 'c' * 32
85+
86+ def test_get_latest_almost_identical_timestamps (self ):
87+ self .store_event (
88+ data = {
89+ 'event_id' : 'a' * 32 ,
90+ 'fingerprint' : ['group-1' ],
91+ 'timestamp' : self .two_sec_ago ,
92+ },
93+ project_id = self .project .id ,
94+ )
95+ self .store_event (
96+ data = {
97+ 'event_id' : 'b' * 32 ,
98+ 'fingerprint' : ['group-1' ],
99+ 'timestamp' : self .sec_ago ,
100+ },
101+ project_id = self .project .id ,
85102 )
103+ group = Group .objects .first ()
86104
87- assert group .get_latest_event ().event_id == '3'
88- assert group .get_oldest_event ().event_id == '0'
105+ assert group .get_latest_event ().event_id == 'b' * 32
89106
90107 def test_is_ignored_with_expired_snooze (self ):
91108 group = self .create_group (
0 commit comments