Skip to content

Commit

Permalink
Added handler for custom fields (#127)
Browse files Browse the repository at this point in the history
  • Loading branch information
Semihal authored and travispavek committed Jun 8, 2018
1 parent 27ae278 commit e17ae5c
Showing 1 changed file with 26 additions and 1 deletion.
27 changes: 26 additions & 1 deletion testrail/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,8 @@ def suite_with_id(self, suite_id):
@UpdateCache(_shared_state['_suites'])
def add_suite(self, suite):
fields = ['name', 'description']
fields.extend(self._custom_field_discover(suite))

project_id = suite.get('project_id')
payload = self._payload_gen(fields, suite)
return self._post('add_suite/%s' % project_id, payload)
Expand Down Expand Up @@ -332,13 +334,17 @@ def milestone_with_id(self, milestone_id, project_id=None):
@UpdateCache(_shared_state['_milestones'])
def add_milestone(self, milestone):
fields = ['name', 'description', 'due_on']
fields.extend(self._custom_field_discover(milestone))

project_id = milestone.get('project_id')
payload = self._payload_gen(fields, milestone)
return self._post('add_milestone/%s' % project_id, payload)

@UpdateCache(_shared_state['_milestones'])
def update_milestone(self, milestone):
fields = ['name', 'description', 'due_on', 'is_completed']
fields.extend(self._custom_field_discover(milestone))

data = self._payload_gen(fields, milestone)
return self._post('update_milestone/%s' % milestone.get('id'), data)

Expand Down Expand Up @@ -384,6 +390,8 @@ def section_with_id(self, section_id):

def add_section(self, section):
fields = ['description', 'suite_id', 'parent_id', 'name']
fields.extend(self._custom_field_discover(section))

project_id = section.get('project_id') or self._project_id
payload = self._payload_gen(fields, section)
#TODO get update cache working for now reset cache
Expand Down Expand Up @@ -412,6 +420,8 @@ def plan_with_id(self, plan_id, with_entries=False):
@UpdateCache(_shared_state['_plans'])
def add_plan(self, plan):
fields = ['name', 'description', 'milestone_id', 'entries']
fields.extend(self._custom_field_discover(plan))

project_id = plan.get('project_id')
payload = self._payload_gen(fields, plan)
return self._post('add_plan/%s' % project_id, payload)
Expand All @@ -420,6 +430,8 @@ def add_plan(self, plan):
def add_plan_entry(self, plan_entry):
fields = ['suite_id', 'name', 'description', 'assignedto_id',
'include_all', 'case_ids', 'config_ids', 'runs']
fields.extend(self._custom_field_discover(plan_entry))

plan_id = plan_entry.get('plan_id')
payload = self._payload_gen(fields, plan_entry)
return self._post('add_plan_entry/%s' % plan_id, payload)
Expand Down Expand Up @@ -447,6 +459,8 @@ def run_with_id(self, run_id):
def add_run(self, run):
fields = ['name', 'description', 'suite_id', 'milestone_id',
'assignedto_id', 'include_all', 'case_ids']
fields.extend(self._custom_field_discover(run))

project_id = run.get('project_id')
payload = self._payload_gen(fields, run)
return self._post('add_run/%s' % project_id, payload)
Expand All @@ -455,6 +469,8 @@ def add_run(self, run):
def update_run(self, run):
fields = [
'name', 'description', 'milestone_id', 'include_all', 'case_ids']
fields.extend(self._custom_field_discover(run))

data = self._payload_gen(fields, run)
return self._post('update_run/%s' % run.get('id'), data)

Expand All @@ -469,13 +485,17 @@ def delete_run(self, run_id):
@UpdateCache(_shared_state['_plans'])
def add_plan(self, plan):
fields = ['name', 'description', 'milestone_id']
fields.extend(self._custom_field_discover(plan))

project_id = plan.get('project_id')
payload = self._payload_gen(fields, plan)
return self._post('add_plan/%s' % project_id, payload)

@UpdateCache(_shared_state['_plans'])
def update_plan(self, plan):
fields = ['name', 'description', 'milestone_id']
fields.extend(self._custom_field_discover(plan))

data = self._payload_gen(fields, plan)
return self._post('update_plan/%s' % plan.get('id'), data)

Expand Down Expand Up @@ -530,6 +550,7 @@ def add_result(self, data):
'elapsed',
'defects',
'assignedto_id']
fields.extend(self._custom_field_discover(data))

payload = self._payload_gen(fields, data)
result = self._post('add_result/%s' % data['test_id'], payload)
Expand All @@ -555,7 +576,8 @@ def add_results(self, results, run_id):

payload = {'results': list()}
for result in results:
payload['results'].append(self._payload_gen(fields, result))
custom_field = fields + self._custom_field_discover(result)
payload['results'].append(self._payload_gen(custom_field + fields, result))

response = self._post('add_results/%s' % run_id, payload)

Expand All @@ -564,6 +586,9 @@ def add_results(self, results, run_id):

return response

def _custom_field_discover(self, entity):
return [field for field in entity.keys() if field.startswith('custom_')]

# Status Requests
def statuses(self):
if self._refresh(self._statuses['ts']):
Expand Down

0 comments on commit e17ae5c

Please sign in to comment.