diff --git a/jenkins_jobs/modules/parameters.py b/jenkins_jobs/modules/parameters.py
index d51883b44..83e0df0bb 100644
--- a/jenkins_jobs/modules/parameters.py
+++ b/jenkins_jobs/modules/parameters.py
@@ -395,29 +395,22 @@ def extended_choice_param(registry, xml_parent, data):
:arg str multi-select-delimiter: value between selections when the
parameter is a multi-select (optiona, default ',')
- Example:
+ Minimal Example:
.. literalinclude:: \
- /../../tests/parameters/fixtures/extended-choice-param001.yaml
+ /../../tests/parameters/fixtures/extended-choice-param-minimal.yaml
:language: yaml
+ Full Example:
+ .. literalinclude:: \
+ /../../tests/parameters/fixtures/extended-choice-param-full.yaml
+ :language: yaml
"""
pdef = base_param(registry, xml_parent, data, False,
'com.cwctravel.hudson.plugins.'
'extended__choice__parameter.'
'ExtendedChoiceParameterDefinition')
- XML.SubElement(pdef, 'value').text = data.get('value', '')
- XML.SubElement(pdef, 'visibleItemCount').text = str(data.get(
- 'visible-items', data.get('visible-item-count', 5)))
- XML.SubElement(pdef, 'multiSelectDelimiter').text = data.get(
- 'multi-select-delimiter', ',')
- XML.SubElement(pdef, 'quoteValue').text = str(data.get('quote-value',
- False)).lower()
- XML.SubElement(pdef, 'defaultValue').text = data.get(
- 'default-value', '')
- XML.SubElement(pdef, 'descriptionPropertyValue').text = data.get(
- 'value-description', '')
- choice = data.get('type', 'single-select')
+
choicedict = {'single-select': 'PT_SINGLE_SELECT',
'multi-select': 'PT_MULTI_SELECT',
'radio': 'PT_RADIO',
@@ -428,23 +421,22 @@ def extended_choice_param(registry, xml_parent, data):
'PT_RADIO': 'PT_RADIO',
'PT_CHECKBOX': 'PT_CHECKBOX',
'PT_TEXTBOX': 'PT_TEXTBOX'}
-
- if choice in choicedict:
- XML.SubElement(pdef, 'type').text = choicedict[choice]
- else:
- raise JenkinsJobsException("Type entered is not valid, must be one "
- "of: single-select, multi-select, radio, "
- "textbox or checkbox")
- XML.SubElement(pdef, 'propertyFile').text = data.get('property-file', '')
- XML.SubElement(pdef, 'propertyKey').text = data.get('property-key', '')
- XML.SubElement(pdef, 'defaultPropertyFile').text = data.get(
- 'default-property-file', '')
- XML.SubElement(pdef, 'defaultPropertyKey').text = data.get(
- 'default-property-key', '')
- XML.SubElement(pdef, 'descriptionPropertyFile').text = data.get(
- 'description-property-file', '')
- XML.SubElement(pdef, 'descriptionPropertyKey').text = data.get(
- 'description-property-key', '')
+ mapping = [
+ ('value', 'value', ''),
+ ('visible-items', 'visibleItemCount', 5),
+ ('multi-select-delimiter', 'multiSelectDelimiter', ','),
+ ('quote-value', 'quoteValue', False),
+ ('default-value', 'defaultValue', ''),
+ ('value-description', 'descriptionPropertyValue', ''),
+ ('type', 'type', 'single-select', choicedict),
+ ('property-file', 'propertyFile', ''),
+ ('property-key', 'propertyKey', ''),
+ ('default-property-file', 'defaultPropertyFile', ''),
+ ('default-property-key', 'defaultPropertyKey', ''),
+ ('description-property-file', 'descriptionPropertyFile', ''),
+ ('description-property-key', 'descriptionPropertyKey', ''),
+ ]
+ convert_mapping_to_xml(pdef, data, mapping, fail_required=True)
def validating_string_param(registry, xml_parent, data):
diff --git a/tests/parameters/fixtures/extended-choice-param002.xml b/tests/parameters/fixtures/extended-choice-param-full.xml
similarity index 100%
rename from tests/parameters/fixtures/extended-choice-param002.xml
rename to tests/parameters/fixtures/extended-choice-param-full.xml
diff --git a/tests/parameters/fixtures/extended-choice-param002.yaml b/tests/parameters/fixtures/extended-choice-param-full.yaml
similarity index 100%
rename from tests/parameters/fixtures/extended-choice-param002.yaml
rename to tests/parameters/fixtures/extended-choice-param-full.yaml
diff --git a/tests/parameters/fixtures/extended-choice-param001.xml b/tests/parameters/fixtures/extended-choice-param-minimal.xml
similarity index 95%
rename from tests/parameters/fixtures/extended-choice-param001.xml
rename to tests/parameters/fixtures/extended-choice-param-minimal.xml
index 45c9bff0a..dcf9f9483 100644
--- a/tests/parameters/fixtures/extended-choice-param001.xml
+++ b/tests/parameters/fixtures/extended-choice-param-minimal.xml
@@ -7,7 +7,7 @@
OPTIONS
Available options
OptionA,OptionB,OptionC
- 2
+ 5
,
false
diff --git a/tests/parameters/fixtures/extended-choice-param001.yaml b/tests/parameters/fixtures/extended-choice-param-minimal.yaml
similarity index 83%
rename from tests/parameters/fixtures/extended-choice-param001.yaml
rename to tests/parameters/fixtures/extended-choice-param-minimal.yaml
index 861e36c26..8a6226e21 100644
--- a/tests/parameters/fixtures/extended-choice-param001.yaml
+++ b/tests/parameters/fixtures/extended-choice-param-minimal.yaml
@@ -4,5 +4,3 @@ parameters:
description: "Available options"
type: 'PT_CHECKBOX'
value: OptionA,OptionB,OptionC
- visible-item-count: "2"
-
diff --git a/tests/parameters/fixtures/extended-choice-param003.xml b/tests/parameters/fixtures/extended-choice-param003.xml
deleted file mode 100644
index 3115f9a9a..000000000
--- a/tests/parameters/fixtures/extended-choice-param003.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
- OPTIONS
- Available options
-
- 2
- ,
- false
- foo
- bar1, bar2, bar3
- PT_SINGLE_SELECT
- /home/foo/property.prop
- key
- /home/property.prop
- fookey
- /home/foo/bar.properties
- bar_desc
-
-
-
-
-
diff --git a/tests/parameters/fixtures/extended-choice-param003.yaml b/tests/parameters/fixtures/extended-choice-param003.yaml
deleted file mode 100644
index fba877782..000000000
--- a/tests/parameters/fixtures/extended-choice-param003.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-parameters:
- - extended-choice:
- name: OPTIONS
- description: "Available options"
- property-file: /home/foo/property.prop
- property-key: key
- visible-items: 2
- default-value: foo
- default-property-file: /home/property.prop
- default-property-key: fookey
- description-property-file: /home/foo/bar.properties
- description-property-key: bar_desc
- value-description: bar1, bar2, bar3
\ No newline at end of file