def setUp(self):
     self.super()
     self.sprint = self.teh.create_sprint(self.sprint_name())
     self.aggregator = BurndownDataAggregator(self.env)
     self.confirmer = BurndownDataConfirmCommitment(self.env)
Esempio n. 2
0
 def setUp(self):
     self.super()
     self.sprint = self.teh.create_sprint(self.sprint_name())
     self.aggregator = BurndownDataAggregator(self.env)
     self.confirmer = BurndownDataConfirmCommitment(self.env)
class ConfirmCommitmentTest(AgiloTestCase):
    
    def setUp(self):
        self.super()
        self.sprint = self.teh.create_sprint(self.sprint_name())
        self.aggregator = BurndownDataAggregator(self.env)
        self.confirmer = BurndownDataConfirmCommitment(self.env)
    
    def changes(self, sprint=None):
        return self.aggregator.changes_for_sprint(sprint and ValueObject(name=sprint) or self.sprint)
    
    def create_change(self, delta=23, marker_key=None, marker_value=None, **kwargs):
        change = BurndownDataChange(self.env)
        change.type = BurndownDataConstants.REMAINING_TIME
        change.scope = self.sprint.name
        change.when = now()
        change.set_delta(delta)
        for key, value in kwargs.items():
            setattr(change, key, value)
        if marker_key is not None:
            change.update_marker(marker_key, marker_value)
        return change
    
    def insert_changes(self):
        self.create_change().save()
        self.create_change().save()
        self.create_change().save()
    
    
    
    def test_can_remove_all_entries_that_are_already_set_for_a_sprint(self):
        self.insert_changes()
        self.confirmer.remove_old_changes_for_sprint(self.sprint)
        self.assert_length(0, self.changes())
    
    # TODO: might need to care about the key so story burndown values are not / too removed?
    def test_will_not_touch_entries_for_other_sprints_when_removing(self):
        self.insert_changes()
        self.create_change(scope='fnord').save()
        self.confirmer.remove_old_changes_for_sprint(self.sprint)
        self.assert_length(0, self.changes())
        self.assert_length(1, self.changes(sprint='fnord'))
    
    def test_sum_remaining_time_in_sprint(self):
        self.create_change(delta=3).save()
        self.assert_equals(3, self.confirmer.sum_remaining_time_for_sprint(self.sprint))
        self.create_change(delta=5).save()
        self.assert_equals(8, self.confirmer.sum_remaining_time_for_sprint(self.sprint))
        self.create_change(delta=10).save()
        self.assert_equals(18, self.confirmer.sum_remaining_time_for_sprint(self.sprint))
        self.create_change(delta=-12).save()
        self.assert_equals(6, self.confirmer.sum_remaining_time_for_sprint(self.sprint))
    
    def test_adding_initial_remaining_time(self):
        self.confirmer.add_initial_change_for_sprint_with_remaining_time(self.sprint, 10)
        self.assert_length(1, self.changes())
        self.assert_equals(10, self.changes()[0].delta())
    
    def test_created_initial_burndown_element_has_correct_time(self):
        self.confirmer.add_initial_change_for_sprint_with_remaining_time(self.sprint, 23)
        self.assert_almost_equals(now(), self.changes()[0].when, max_delta=timedelta(seconds=2))
    
    def test_enters_sum_of_removed_burndown_as_first_entry_after_removing_all_others(self):
        self.create_change(delta=10).save()
        self.create_change(delta=7).save()
        self.create_change(delta=6).save()
        self.confirmer.confirm_commitment_for_sprint(self.sprint)
        self.assert_length(1, self.changes())
        self.assert_equals(23, self.changes()[0].delta())
    
    # TODO: Consider to only remove ticket-change-entries until the target time!
    def test_can_set_time_of_commitment(self):
        self.create_change(delta=30).save()
        some_time_ago = now() - timedelta(days=3)
        self.confirmer.confirm_commitment_for_sprint(self.sprint, when=some_time_ago)
        self.assert_length(1, self.changes())
        self.assert_almost_equals(some_time_ago, self.changes()[0].when, max_delta=timedelta(seconds=2))
    
    def test_can_add_metadata_with_commitment_for_each_component_if_filtered_burndown_is_activated(self):
        self.teh.enable_burndown_filter()
        self.create_change(delta=3, when=self.sprint.start, marker_key=Key.COMPONENT, marker_value='foo').save()
        self.create_change(delta=5, when=self.sprint.start, marker_key=Key.COMPONENT, marker_value='bar').save()
        self.create_change(delta=7, when=self.sprint.start).save()
        self.confirmer.confirm_commitment_for_sprint(self.sprint, when=self.sprint.start)
        self.assert_length(1, self.changes())
        change = self.changes()[0]
        self.assert_true(change.has_marker(BurndownDataConstants.DELTAS_BY_COMPONENT))
        deltas = change.marker_value(BurndownDataConstants.DELTAS_BY_COMPONENT)
        self.assert_equals(dict(foo=3, bar=5), deltas)
    
    def test_stores_correct_component_metadata_if_confirm_commitment_is_pressed_twice(self):
        self.teh.enable_burndown_filter()
        self.create_change(delta=3, when=self.sprint.start, marker_key=Key.COMPONENT, marker_value='foo').save()
        self.confirmer.confirm_commitment_for_sprint(self.sprint, when=self.sprint.start)
        self.confirmer.confirm_commitment_for_sprint(self.sprint, when=self.sprint.start)
        
        self.assert_length(1, self.changes())
        change = self.changes()[0]
        deltas = change.marker_value(BurndownDataConstants.DELTAS_BY_COMPONENT)
        self.assert_equals(dict(foo=3), deltas)
Esempio n. 4
0
class ConfirmCommitmentTest(AgiloTestCase):
    def setUp(self):
        self.super()
        self.sprint = self.teh.create_sprint(self.sprint_name())
        self.aggregator = BurndownDataAggregator(self.env)
        self.confirmer = BurndownDataConfirmCommitment(self.env)

    def changes(self, sprint=None):
        return self.aggregator.changes_for_sprint(
            sprint and ValueObject(name=sprint) or self.sprint)

    def create_change(self,
                      delta=23,
                      marker_key=None,
                      marker_value=None,
                      **kwargs):
        change = BurndownDataChange(self.env)
        change.type = BurndownDataConstants.REMAINING_TIME
        change.scope = self.sprint.name
        change.when = now()
        change.set_delta(delta)
        for key, value in kwargs.items():
            setattr(change, key, value)
        if marker_key is not None:
            change.update_marker(marker_key, marker_value)
        return change

    def insert_changes(self):
        self.create_change().save()
        self.create_change().save()
        self.create_change().save()

    def test_can_remove_all_entries_that_are_already_set_for_a_sprint(self):
        self.insert_changes()
        self.confirmer.remove_old_changes_for_sprint(self.sprint)
        self.assert_length(0, self.changes())

    # TODO: might need to care about the key so story burndown values are not / too removed?
    def test_will_not_touch_entries_for_other_sprints_when_removing(self):
        self.insert_changes()
        self.create_change(scope='fnord').save()
        self.confirmer.remove_old_changes_for_sprint(self.sprint)
        self.assert_length(0, self.changes())
        self.assert_length(1, self.changes(sprint='fnord'))

    def test_sum_remaining_time_in_sprint(self):
        self.create_change(delta=3).save()
        self.assert_equals(
            3, self.confirmer.sum_remaining_time_for_sprint(self.sprint))
        self.create_change(delta=5).save()
        self.assert_equals(
            8, self.confirmer.sum_remaining_time_for_sprint(self.sprint))
        self.create_change(delta=10).save()
        self.assert_equals(
            18, self.confirmer.sum_remaining_time_for_sprint(self.sprint))
        self.create_change(delta=-12).save()
        self.assert_equals(
            6, self.confirmer.sum_remaining_time_for_sprint(self.sprint))

    def test_adding_initial_remaining_time(self):
        self.confirmer.add_initial_change_for_sprint_with_remaining_time(
            self.sprint, 10)
        self.assert_length(1, self.changes())
        self.assert_equals(10, self.changes()[0].delta())

    def test_created_initial_burndown_element_has_correct_time(self):
        self.confirmer.add_initial_change_for_sprint_with_remaining_time(
            self.sprint, 23)
        self.assert_almost_equals(now(),
                                  self.changes()[0].when,
                                  max_delta=timedelta(seconds=2))

    def test_enters_sum_of_removed_burndown_as_first_entry_after_removing_all_others(
            self):
        self.create_change(delta=10).save()
        self.create_change(delta=7).save()
        self.create_change(delta=6).save()
        self.confirmer.confirm_commitment_for_sprint(self.sprint)
        self.assert_length(1, self.changes())
        self.assert_equals(23, self.changes()[0].delta())

    # TODO: Consider to only remove ticket-change-entries until the target time!
    def test_can_set_time_of_commitment(self):
        self.create_change(delta=30).save()
        some_time_ago = now() - timedelta(days=3)
        self.confirmer.confirm_commitment_for_sprint(self.sprint,
                                                     when=some_time_ago)
        self.assert_length(1, self.changes())
        self.assert_almost_equals(some_time_ago,
                                  self.changes()[0].when,
                                  max_delta=timedelta(seconds=2))

    def test_can_add_metadata_with_commitment_for_each_component_if_filtered_burndown_is_activated(
            self):
        self.teh.enable_burndown_filter()
        self.create_change(delta=3,
                           when=self.sprint.start,
                           marker_key=Key.COMPONENT,
                           marker_value='foo').save()
        self.create_change(delta=5,
                           when=self.sprint.start,
                           marker_key=Key.COMPONENT,
                           marker_value='bar').save()
        self.create_change(delta=7, when=self.sprint.start).save()
        self.confirmer.confirm_commitment_for_sprint(self.sprint,
                                                     when=self.sprint.start)
        self.assert_length(1, self.changes())
        change = self.changes()[0]
        self.assert_true(
            change.has_marker(BurndownDataConstants.DELTAS_BY_COMPONENT))
        deltas = change.marker_value(BurndownDataConstants.DELTAS_BY_COMPONENT)
        self.assert_equals(dict(foo=3, bar=5), deltas)

    def test_stores_correct_component_metadata_if_confirm_commitment_is_pressed_twice(
            self):
        self.teh.enable_burndown_filter()
        self.create_change(delta=3,
                           when=self.sprint.start,
                           marker_key=Key.COMPONENT,
                           marker_value='foo').save()
        self.confirmer.confirm_commitment_for_sprint(self.sprint,
                                                     when=self.sprint.start)
        self.confirmer.confirm_commitment_for_sprint(self.sprint,
                                                     when=self.sprint.start)

        self.assert_length(1, self.changes())
        change = self.changes()[0]
        deltas = change.marker_value(BurndownDataConstants.DELTAS_BY_COMPONENT)
        self.assert_equals(dict(foo=3), deltas)