def test_can_have_two_markers(self): changes = [ BurndownDataChange.create_aggregation_skip_marker(self.env, self.sprint_name()), BurndownDataChange.create_aggregation_skip_marker(self.env, self.sprint_name()), ] aggregated = self.aggregate(changes, interval=timedelta(hours=1)) self.assert_length(2, aggregated) self.assert_equals(0, aggregated[0].remaining_time) self.assert_equals(0, aggregated[1].remaining_time)
def test_can_have_two_markers(self): changes = [ BurndownDataChange.create_aggregation_skip_marker( self.env, self.sprint_name()), BurndownDataChange.create_aggregation_skip_marker( self.env, self.sprint_name()), ] aggregated = self.aggregate(changes, interval=timedelta(hours=1)) self.assert_length(2, aggregated) self.assert_equals(0, aggregated[0].remaining_time) self.assert_equals(0, aggregated[1].remaining_time)
def test_only_changes_surrounded_with_markers_(self): changes = [ BurndownDataChange.create_aggregation_skip_marker(self.env, self.sprint_name()), self.change(timedelta(), 10), self.change(timedelta(), 10), self.change(timedelta(), 10), BurndownDataChange.create_aggregation_skip_marker(self.env, self.sprint_name()), ] aggregated = self.aggregate(changes, interval=timedelta(hours=1)) self.assert_length(2, aggregated) self.assert_equals(0, aggregated[0].remaining_time) self.assert_equals(30, aggregated[1].remaining_time)
def test_only_changes_surrounded_with_markers_(self): changes = [ BurndownDataChange.create_aggregation_skip_marker( self.env, self.sprint_name()), self.change(timedelta(), 10), self.change(timedelta(), 10), self.change(timedelta(), 10), BurndownDataChange.create_aggregation_skip_marker( self.env, self.sprint_name()), ] aggregated = self.aggregate(changes, interval=timedelta(hours=1)) self.assert_length(2, aggregated) self.assert_equals(0, aggregated[0].remaining_time) self.assert_equals(30, aggregated[1].remaining_time)
def test_can_have_normal_intersection_of_entries(self): changes = [ self.change(timedelta(minutes=-1), 10), BurndownDataChange.create_aggregation_skip_marker(self.env, self.sprint_name()), self.change(timedelta(), 10), BurndownDataChange.create_aggregation_skip_marker(self.env, self.sprint_name()), self.change(timedelta(minutes=1), 10), ] aggregated = self.aggregate(changes) self.assert_length(4, aggregated) self.assert_equals(10, aggregated[0].remaining_time) self.assert_equals(10, aggregated[1].remaining_time) self.assert_equals(20, aggregated[2].remaining_time) # this is the jump self.assert_equals(30, aggregated[3].remaining_time)
def test_can_have_normal_intersection_of_entries(self): changes = [ self.change(timedelta(minutes=-1), 10), BurndownDataChange.create_aggregation_skip_marker( self.env, self.sprint_name()), self.change(timedelta(), 10), BurndownDataChange.create_aggregation_skip_marker( self.env, self.sprint_name()), self.change(timedelta(minutes=1), 10), ] aggregated = self.aggregate(changes) self.assert_length(4, aggregated) self.assert_equals(10, aggregated[0].remaining_time) self.assert_equals(10, aggregated[1].remaining_time) self.assert_equals(20, aggregated[2].remaining_time) # this is the jump self.assert_equals(30, aggregated[3].remaining_time)
def test_can_have_skip_marker_as_first_entry(self): changes = [ BurndownDataChange.create_aggregation_skip_marker(self.env, self.sprint_name()), self.change(timedelta(minutes=1), 10), self.change(timedelta(minutes=30), 10), ] aggregated = self.aggregate(changes) self.assert_length(2, aggregated) self.assert_equals(0, aggregated[0].remaining_time) self.assert_equals(20, aggregated[1].remaining_time)
def test_can_have_skip_marker_as_first_entry(self): changes = [ BurndownDataChange.create_aggregation_skip_marker( self.env, self.sprint_name()), self.change(timedelta(minutes=1), 10), self.change(timedelta(minutes=30), 10), ] aggregated = self.aggregate(changes) self.assert_length(2, aggregated) self.assert_equals(0, aggregated[0].remaining_time) self.assert_equals(20, aggregated[1].remaining_time)
def test_can_add_additional_points_when_agregation_is_disabled_with_marker(self): changes = [ self.change(timedelta(minutes=-30), 0), self.change(timedelta(minutes=-1), 10), BurndownDataChange.create_aggregation_skip_marker(self.env, self.sprint_name()), self.change(timedelta(minutes=1), 10), self.change(timedelta(minutes=30), 10), ] aggregated = self.aggregate(changes) self.assert_length(3, aggregated) self.assert_equals(0, aggregated[0].remaining_time) self.assert_equals(10, aggregated[1].remaining_time) self.assert_equals(30, aggregated[2].remaining_time)
def test_can_add_additional_points_when_agregation_is_disabled_with_marker( self): changes = [ self.change(timedelta(minutes=-30), 0), self.change(timedelta(minutes=-1), 10), BurndownDataChange.create_aggregation_skip_marker( self.env, self.sprint_name()), self.change(timedelta(minutes=1), 10), self.change(timedelta(minutes=30), 10), ] aggregated = self.aggregate(changes) self.assert_length(3, aggregated) self.assert_equals(0, aggregated[0].remaining_time) self.assert_equals(10, aggregated[1].remaining_time) self.assert_equals(30, aggregated[2].remaining_time)
def _add_marker_if_neccessary(self, sprint_name): if sprint_name is None: return BurndownDataChange.create_aggregation_skip_marker(self.env, sprint_name).save()
def _add_marker_if_neccessary(self, sprint_name): if sprint_name is None: return BurndownDataChange.create_aggregation_skip_marker( self.env, sprint_name).save()