def run(self, edit, issue_key=None): window = self.view.window() if not issue_key: window.run_command('prompt_issue_key', {'callback': 'open_issue'}) else: connection = LimeConnection() issue = connection.get(issue_key) TEMPLATE = ( "{key} - {name}\n" "@@ Projekt: {project}\n" "@@ Projekt Name: {project_name}\n" "@@ Reporter: {reporter}\n" "@@ Bearbeiter: {assignee}\n" # "@@ Updated: {updated}\n" "@@ Sprint: {version}\n" "\n" "@@ Description:\n" "{description}\n" "\n" "@@ Text:\n" "{text}\n" ) keywords = re.findall(r'\{([a-z_]+)\}', TEMPLATE) valuesMap = {} for key in keywords: valuesMap[key] = issue.getattr(key) text = TEMPLATE.format(**valuesMap) window.new_file() view = window.active_view() view.insert(edit, 0, text)
def run(self, edit, issue_key=None): window = self.view.window() if not issue_key: window.run_command('prompt_issue_key', {'callback': 'get_jira_headline'}) else: connection = LimeConnection() issue = connection.get(issue_key) region = self.view.sel() line = self.view.line(region[0]) self.view.insert(edit, line.end(), "\n@ "+issue.key+" - "+issue.name+"\n"+issue.description)
def run(self, edit, issue_key=None): window = self.view.window() if not issue_key: window.run_command('prompt_issue_key', {'callback': 'new_tests'}) else: connection = LimeConnection() issue = connection.get(issue_key) TEST_HEAD_TEMPLATE = ( "{key} - {name}\n" "{description}\n" "\n" "@@ Projekt: {project}\n" "@@ Story: {key}\n" "@@ Story Reporter: {reporter}\n" "\n" "@@ Version: {version}\n" "@@ Attribute: {attribute}\n" "@@ Testgruppen: {testgroup}\n" '@@ Komponente: {component}\n' '@@ Stichwörter: {lables}\n' '@@ Bearbeiter: {assignee}\n' "\n" ) keywords = re.findall(r'\{([a-z_]+)\}', TEST_HEAD_TEMPLATE) valuesMap = {} for key in keywords: valuesMap[key] = issue.getattr(key) valuesMap['attribute'] = "Regressionstest, Live-Test, Automatisiert" valuesMap['key'] = issue_key settings = sublime.load_settings('JiraWithLime.sublime-settings') valuesMap['assignee'] = settings.get('assignee', "") valuesMap['component'] = settings.get('component', "") valuesMap['testgroup'] = settings.get('testgroup', "") text = TEST_HEAD_TEMPLATE.format(**valuesMap) window.new_file() view = window.active_view() view.insert(edit, 0, text) window.run_command('add_test_template') window.run_command('add_test_template') window.run_command('add_test_template')
class CreateTestCycleCommand(sublime_plugin.TextCommand): def run(self, edit, cycletype, issue_key=None): self.window = self.view.window() self.util = Util() settings = sublime.load_settings("JiraWithLime.sublime-settings") self.projectKey = settings.get("project", "") self.cycletype = cycletype if not issue_key: window = self.view.window() call = lambda v: window.run_command("create_test_cycle", {"cycletype": cycletype, "issue_key": v}) if cycletype == "story": window.show_input_panel("Key", self.projectKey + "-", call, None, None) else: window.show_input_panel("Lable", "", call, None, None) else: self.connection = LimeConnection() self.environment = "" self.version = "" self.versionId = "" self.key = issue_key if cycletype == "story": self.issue = self.connection.get(issue_key) self.version = self.issue.version self.versionId = self.issue.versionId self.projectId = self.issue.projectId print("projectID #### ", str(self.issue.projectId)) self.window.show_input_panel("Sprint:", self.version, self.setSprint, None, None) else: self.projectId = self.util.getProjectId(self.projectKey) self.window.show_input_panel("Sprint:", "Sprint-", self.setSprint, None, None) def setSprint(self, uinput): if self.version != uinput: self.version = uinput self.versionId = self.util.findVersionId(self.projectId, uinput) self.window.show_input_panel("Umgebung:", "Develop", self.setEnvironment, None, None) def setEnvironment(self, uinput): self.environment = uinput self.pushCycle() def pushCycle(self): testCycle = { "clonedCycleId": "", "name": self.key, "build": self.version, "environment": self.environment, # "description": "Released Cycle1", # "startDate": "17/Oct/13", # "endDate": "17/Jan/14", "projectId": self.projectId, "versionId": self.versionId, } response, data = self.connection.createTestCycle("", testCycle) cycleId = data["id"] if self.cycletype == "story": testcaseLinks = self.issue.getAllTestLinks() else: testcaseLinks = self.util.getAllIssueKeysFromSearch( ["project", "issuetype", "labels"], [self.projectKey, "Test", self.key] ) issuesForCycle = { "issues": testcaseLinks, "versionId": self.versionId, "cycleId": cycleId, "projectId": self.projectId, "method": "1", } response = self.connection.addTestsToTestCycle(issuesForCycle) sublime.message_dialog("Finish")
class createTestIssuesCommand(sublime_plugin.TextCommand): def run(self, edit, testValues): print("Beginn creating Test Issues") self.window = self.view.window() self.connection = LimeConnection() self.offset = 0 self.parser = MyMarkdownParser() for test in testValues: newIssue = { 'fields' : { "project" : { 'key' : test['project'] }, "summary" : test['name'], "description" : self.parser.build_markdown(test['description']), "issuetype" : { "name" : "Test" }, "priority" : { "id": "3" }, "customfield_15603" : [test['story']], #Story "components" : [], "versions" : [{"name":test['version']}], "labels" : test['labels'], "assignee" : {'name' : test['assignee']} } } if len(test['attributes']) > 0: newIssue['fields']['customfield_15604'] = [] if len(test['testgroups']) > 0: newIssue['fields']['customfield_15601'] = [] for attribut in test['attributes']: if attribut != '': newIssue['fields']['customfield_15604'].append({'value' : attribut}) for testgroup in test['testgroups']: if testgroup != '': newIssue['fields']['customfield_15601'].append(testgroup) for components in test['components']: if components != '': newIssue['fields']['components'].append({"name":components}) if(test['key'] == ''): self.createTest(test, newIssue, edit) else: self.updateTest(test, newIssue, edit) sublime.message_dialog("Finish") def createTest(self, test, newIssue, edit): response, data = self.connection.createTestIssue(newIssue) if response.status_code != 200 and response.status_code != 201 and response.status_code != 204: sublime.error_message("Response: "+str(response.status_code)) raise Exception("Status was", response.status_code) test['issue_id'] = data['id'] test['key'] = data['key'] ### if test['keyLineNr'] > 0: pt = self.view.text_point(test['keyLineNr']-1+self.offset, 0) key_text = " "+test['key'] else: pt = self.view.text_point(test['testLineNr']-1+self.offset, 0) key_text = "\n@@ Key: "+test['key'] self.offset = self.offset + 1 line_region = self.view.line(pt) pt += line_region.b - line_region.a self.view.insert(edit, pt, key_text) ### for i in range(len(test['steps'])): if test['steps'][i] != '' or test['data'][i] != '' or test['result'][i] != '': teststep = { "step": test['steps'][i], "data": test['data'][i], "result": test['result'][i] } self.connection.createTestStep(test['issue_id'], teststep) #ID! 230076 # Link Test # Auf die Blanke URL!! # inward key muss der Tests sein. link = { "type": { "name": "Tests" # Tests, cloned by etc }, "inwardIssue": { "key": test['key'] # Ausgehend }, "outwardIssue": { "key": test['story'] # Wird getestet } } self.connection.createLink("", link) def updateTest(self, test, newIssue, edit): response = self.connection.update(test['key'], newIssue) if response.status_code != 200 and response.status_code != 201 and response.status_code != 204: sublime.error_message("Response: "+str(response.status_code)) raise Exception("Status was", response.status_code) issue = self.connection.get(test['key']) r, data = self.connection.getTestStep(issue.id) for i in range(len(test['steps'])): if test['steps'][i] != '' or test['data'][i] != '' or test['result'][i] != '': teststep = { "step": test['steps'][i], "data": test['data'][i], "result": test['result'][i] } try: print("issue", issue) testStepId = data[i]['id'] self.connection.updateTestStep(str(issue.id)+"/"+str(testStepId), teststep) #ID! 230076 except IndexError: self.connection.createTestStep(issue.id, teststep) #ID! 230076 overSize = len(data) - (len(test['steps'])-1) if overSize > 0: for i in data[len(data)-overSize:]: print('i', i) testStepId = i['id'] self.connection.deleteTestStep(issue.id, testStepId)