def checkIssueState(req): result = req.get("result") parameters = result.get('parameters') if parameters is None: return {} issueNo = Common.getParameter(req, None, 'issueNo') issue = Issue.fromIssueNo(issueNo) speech = '%s is %s.' % (issue.key, issue.statusName) return Common.makeCommonResponse(speech)
def testPrintTimeDelta(self): timeDelta = dt.timedelta(hours=12, minutes=35, seconds=23) timeDeltaStr = Common.printTimeDelta(timeDelta) self.assertEqual(timeDeltaStr, "12 hours, 35 minutes, 23 seconds later") timeDeltaBefore = dt.timedelta(hours=-12, minutes=35, seconds=23) timeDeltaBeforeStr = Common.printTimeDelta(timeDeltaBefore) self.assertEqual(timeDeltaBeforeStr, "12 hours, 35 minutes, 23 seconds ago") timeDeltaBefore = dt.timedelta(minutes=35, seconds=23) timeDeltaBeforeStr = Common.printTimeDelta(timeDeltaBefore) self.assertEqual(timeDeltaBeforeStr, "35 minutes, 23 seconds later")
def checkIssueDeploymentState(req): result = req.get("result") parameters = result.get('parameters') if parameters is None: return {} issueNo = Common.getParameter(req, None, 'issueNo') tense = Common.getParameter(req, None, 'tense') issue = Issue.fromIssueNo(issueNo) matchParameters = {'isDeployed': issue.isDeployed, 'tense': tense} message = Common.getMessageFromFile('outputs.yaml', 'checkIssueDeployment', matchParameters) deploymentDate = issue.deploymentDate if deploymentDate is not None: deploymentDate = Common.printDateTime(deploymentDate) message = Common.fillParameters( { 'issueNo': issue.key, 'deploymentDate': deploymentDate, 'nextDeploymentDate': Common.printTimeDelta( issue.timeToNextDeployment) }, message) speech = message return Common.makeCommonResponse(speech)
def checkReleaseState(req): result = req.get("result") parameters = result.get('parameters') if parameters is None: return {} releaseName = Common.getParameter(req, 'release-name-context', 'release-name') if releaseName is None: return {} releaseState = Common.getParameter(req, 'release-name-context', 'release-state') if releaseState is None: return {} result, build = findBuildState(releaseName) speech = "%s release is %s" % (releaseName, result.value) return Common.makeCommonResponse(speech)
def testParameterFilling(self): build = BambooAdapter.Build() build.lifeCycleState = 'Running' build.buildRelativeTime = '12:00:00' valuesToFill = {'build': build, 'releaseName': 'prod'} filledString = Common.fillParameters( valuesToFill, '{releaseName} release is completed at {build.buildRelativeTime}.') self.assertEqual(filledString, 'prod release is completed at 12:00:00.')
def testGetModelFromFile2(self): parameters = { 'tense': 'past', 'currentBuildState': BambooAdapter.BuildState.RUNNING.value } message = Common.getMessageFromFile('outputs.yaml', 'checkReleaseTime', parameters) self.assertEqual( message, '{releaseName} will be completed in {build.prettyTimeRemaining}.')
def testGetModelFromFile(self): parameters = { 'releaseState': 'running', 'tense': 'past', 'buildResult': BambooAdapter.BuildState.COMPLETE.value } message = Common.getMessageFromFile('outputs.yaml', 'checkReleaseTime', parameters) self.assertEqual( message, '{releaseName} release is completed {build.buildRelativeTime}.')
def testParameterFillingWithMethodPassing(self): def timeToNextBuild(values): releaseName = values.get('releaseName') if releaseName == 'prod': return '3:11:00' else: return '2:00:00' valuesToFill = { 'releaseName': 'prod', 'timeToNextBuild': timeToNextBuild } filledString = Common.fillParameters( valuesToFill, '{releaseName} release will start in {timeToNextBuild} hours.') self.assertEqual(filledString, 'prod release will start in 3:11:00 hours.')
def checkReleaseTime(req): result = req.get("result") parameters = result.get('parameters') if parameters is None: return {} releaseName = Common.getParameter(req, 'release-name-context', 'release-name') tense = Common.getParameter(req, 'release-name-context', 'tense') askedReleaseState = Common.getParameter(req, 'release-name-context', 'release-state') currentBuildState, build = findBuildState(releaseName) matchParameters = { 'askedBuildState': askedReleaseState, 'tense': tense, 'currentBuildState': currentBuildState.value } message = Common.getMessageFromFile('outputs.yaml', 'checkReleaseTime', matchParameters) message = Common.fillParameters( { 'releaseName': releaseName, 'build': build, 'timeToNextBuild': timeToNextBuild }, message) speech = message return Common.makeCommonResponse(speech)
def testPrintDatetime(self): datetime = dateutil.parser.parse('2017-01-02T12:22:36.686+0200') datetimeText = Common.printDateTime(datetime) self.assertEqual(datetimeText, '02 January 2017 13:22:36')
def testParameterExtraction(self): matches = Common.extractParametersFromText( '{hello} beautiful {world} tell me {some.Joke}') self.assertEqual(matches, ['hello', 'world', 'some.Joke'])