def testSprintWithTimezoneDifference(self): """Tests the sprint creation and manipulation with Timezone differences""" # Create a Sprint from Berlin with Daylight risk in Summer berlin_tz = get_timezone('GMT +2:00') # 'Europe/Berlin' start_in_berlin = normalize_date(now(tz=berlin_tz)) cmd_create = SprintController.CreateSprintCommand( self.env, name='TimezoneSprint', milestone='MyRelease', team=self.team.name, start=start_in_berlin, duration=15) sprint = self.controller.process_command(cmd_create) # now reload the sprint and check if the date is still valid # and has been correctly saved... but we will read from San # Francisco sf_tz = get_timezone('GMT -7:00') # 'US/Pacific' # obvious, but you never know what pytz timezone does with the # daylight saving. self.assert_equals(start_in_berlin, start_in_berlin.astimezone(sf_tz)) # check that the sprint.start is in UTC timezone self.assert_equals(timedelta(0), sprint.start.utcoffset()) self.assert_equals(start_in_berlin, sprint.start.astimezone(berlin_tz)) # now we read it as UTC and we create a SF timezone datetime start_in_sf = sprint.start.astimezone(sf_tz) # Python should compare the UTC value of the datetimes self.assert_equals(start_in_berlin, start_in_sf)
def testCreateAndSaveValidation(self): params = {'name': 'Sprint', 'milestone': 'Milestone'} self.assert_raises(ICommand.NotValidError, SprintController.CreateSprintCommand, self.env, **params) # Now add all the needed params and make it work params['start'] = now(tz=utc) params['duration'] = 10 # Nothing bad should happen SprintController.CreateSprintCommand(self.env, **params) # Now start to mess around with dates and params del params['duration'] self.assert_raises(ICommand.NotValidError, SprintController.CreateSprintCommand, self.env, **params) params['duration'] = 'asfu' # is a string not convertible to int self.assert_raises(ICommand.NotValidError, SprintController.CreateSprintCommand, self.env, **params) params['duration'] = '10' # is a string but convertible del params['start'] self.assert_raises(ICommand.NotValidError, SprintController.CreateSprintCommand, self.env, **params) params['start'] = now(tz=utc) # again ok self.assert_true('start' in params) self.assert_true('end' in params or 'duration' in params) SprintController.CreateSprintCommand(self.env, **params) # Now provide invalid dates params['end'] = 'ad-232-34534' self.assert_raises(ICommand.NotValidError, SprintController.CreateSprintCommand, self.env, **params)
def testCreateSprintCommand(self): """Tests the creation of a Sprint like a View would do""" sprint_start = normalize_date(now(tz=utc)) cmd_create = SprintController.CreateSprintCommand( self.env, name='AnotherTestSprint', milestone='MyRelease', team=self.team.name, start=sprint_start, duration=15) sprint = self.controller.process_command(cmd_create) self.assert_not_none(sprint) self.assert_equals('AnotherTestSprint', sprint.name) self.assert_equals('MyRelease', sprint.milestone) self.assert_equals('ControllerTeam', sprint.team.name) self.assert_equals(sprint_start, sprint.start) # Negative test, should not create the sprint cause it exists already cmd_create.sprint_name = 'TestSprint' self.assert_none(self.controller.process_command(cmd_create))