def _execute(self, team_controller, date_converter=None, as_key=None): from agilo.scrum.metrics.model import TeamMetrics env = team_controller.env metrics = TeamMetrics(env, sprint=self.sprint, team=self.sprint.team) if metrics is not None: del metrics[self.metric] metrics.save()
def test_as_dict_serializes_all_metrics_entries(self): self.sprint.team = self.team metrics = TeamMetrics(self.env, self.sprint) metrics['bar'] = 7 metrics.save() self.assert_equals({'quux': 42, 'bar': 7}, metrics.as_dict())
class TestTeamMetrics(AgiloTestCase): """Tests for the metrics model class TeamMetrics""" def setUp(self): self.super() self.team = self.teh.create_team(name="The A-Team") self.sprint = self.teh.create_sprint(name="Test Sprint", start=now(), duration=7, team=self.team) self.metrics = TeamMetrics(self.env, self.sprint, self.team) self.metrics['quux'] = 42 self.metrics.save() def test_keys_returns_all_metric_names(self): self.assert_equals(set(['quux']), set(self.metrics.keys())) self.metrics['foo'] = 21 self.assert_equals(set(['foo', 'quux']), set(self.metrics.keys())) def test_metric_iterator_iterates_over_all_metric_names(self): self.assert_equals(['quux'], [i for i in self.metrics]) def test_can_save_decimal_values_in_metrics(self): self.metrics['foo'] = 4.2 self.metrics.save() metrics = TeamMetrics(self.env, self.sprint, self.team) self.assert_equals(4.2, metrics['foo']) def test_can_load_metric_with_specifying_team_explicitely(self): metrics = TeamMetrics(self.env, self.sprint) self.assert_equals(42, metrics['quux']) def test_delete_metric_is_automatically_persistant(self): del self.metrics['quux'] self.assert_none(self.metrics['quux']) metrics = TeamMetrics(self.env, self.sprint, self.team) self.assert_none(metrics['quux']) def test_can_handle_multiple_metrics_with_the_same_key_in_different_sprints(self): second_sprint = self.teh.create_sprint(name="Second Sprint", start=self.sprint.start, duration=5, team=self.team) metrics_key = 'quux' second_metrics = TeamMetrics(self.env, second_sprint) second_metrics[metrics_key] = 21 second_metrics.save() metrics = TeamMetrics(self.env, self.sprint) second_metrics = TeamMetrics(self.env, second_sprint) self.assert_equals(42, metrics[metrics_key]) self.assert_equals(21, second_metrics[metrics_key]) def test_as_dict_serializes_all_metrics_entries(self): self.sprint.team = self.team metrics = TeamMetrics(self.env, self.sprint) metrics['bar'] = 7 metrics.save() self.assert_equals({'quux': 42, 'bar': 7}, metrics.as_dict())
def test_can_handle_multiple_metrics_with_the_same_key_in_different_sprints(self): second_sprint = self.teh.create_sprint(name="Second Sprint", start=self.sprint.start, duration=5, team=self.team) metrics_key = 'quux' second_metrics = TeamMetrics(self.env, second_sprint) second_metrics[metrics_key] = 21 second_metrics.save() metrics = TeamMetrics(self.env, self.sprint) second_metrics = TeamMetrics(self.env, second_sprint) self.assert_equals(42, metrics[metrics_key]) self.assert_equals(21, second_metrics[metrics_key])
def _execute(self, team_controller, date_converter=None, as_key=None): """Execute the command saving the data to the Team Metrics table, using the Team Metrics object""" if not self.sprint.team and not self.team: raise self.CommandError("No Team assigned to the given " \ "Sprint %s!?" % self.sprint.name) from agilo.scrum.metrics.model import TeamMetrics team_metrics = TeamMetrics(team_controller.env, sprint=self.sprint, team=self.team) if team_metrics is not None: team_metrics[self.metric] = self.value team_metrics.save() return team_metrics[self.metric]