Jean-Frédéric has uploaded a new change for review.
https://gerrit.wikimedia.org/r/281812
Change subject: Extract method extract_elements_from_template_param from
update_database
......................................................................
Extract method extract_elements_from_template_param from update_database
This method provides non-trivial logic that should be tested.
It is also used in several places.
Also add unittest for it.
Change-Id: If22b08bfe661a7d5ad8bc77738ee597755cb4a84
---
M erfgoedbot/converters.py
M erfgoedbot/update_database.py
M tests/test_converters.py
3 files changed, 38 insertions(+), 11 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/labs/tools/heritage
refs/changes/12/281812/1
diff --git a/erfgoedbot/converters.py b/erfgoedbot/converters.py
index 95d1a3d..2f8a95b 100644
--- a/erfgoedbot/converters.py
+++ b/erfgoedbot/converters.py
@@ -69,3 +69,14 @@
if match:
result = match.group('category')
return result
+
+
+def extract_elements_from_template_param(template_param):
+
+ """Extract and sanitize the contents of a parsed template param."""
+
+ (field, _, value) = template_param.partition(u'=')
+ # Remove leading or trailing spaces
+ field = field.strip()
+ value = value.split("<ref")[0].strip()
+ return (field, value)
diff --git a/erfgoedbot/update_database.py b/erfgoedbot/update_database.py
index 65d6846..caeec64 100755
--- a/erfgoedbot/update_database.py
+++ b/erfgoedbot/update_database.py
@@ -18,7 +18,12 @@
import MySQLdb
from pywikibot import config
from pywikibot import pagegenerators
-from converters import CH1903Converter, extractWikilink,
remove_commons_category_prefix
+from converters import (
+ extractWikilink,
+ extract_elements_from_template_param,
+ remove_commons_category_prefix,
+ CH1903Converter
+)
def connectDatabase():
@@ -295,11 +300,7 @@
validFields.append(field.get(u'source'))
for param in params:
- # Split at =
- (field, sep, value) = param.partition(u'=')
- # Remove leading or trailing spaces
- field = field.strip()
- value = value.split("<ref")[0].strip()
+ (field, value) = extract_elements_from_template_param(param)
# Check first that field is not empty
if field.strip():
@@ -334,11 +335,7 @@
contents['title'] = title
for param in params:
- # Split at =
- (field, sep, value) = param.partition(u'=')
- # Remove leading or trailing spaces
- field = field.strip()
- value = value.split("<ref")[0].strip()
+ (field, value) = extract_elements_from_template_param(param)
# Check first that field is not empty
if field.strip():
diff --git a/tests/test_converters.py b/tests/test_converters.py
index 1182836..9936ad5 100644
--- a/tests/test_converters.py
+++ b/tests/test_converters.py
@@ -4,6 +4,7 @@
from erfgoedbot.converters import (
ucfirst,
extractWikilink,
+ extract_elements_from_template_param,
remove_commons_category_prefix,
CH1903Converter
)
@@ -84,3 +85,21 @@
def test_CH1903Converter_dummy(self):
expected = (45.42221774940194, -0.15036807152500034)
self.assertEquals(CH1903Converter('1', '1'), expected)
+
+
+class TestExtractElementsFromTemplateParam(unittest.TestCase):
+
+ """Test the extract_elements_from_template_param method."""
+
+ def test_extract_elements_from_template_param_empty_string(self):
+ self.assertEquals(extract_elements_from_template_param(''), ('', ''))
+
+ def test_extract_elements_from_template_param(self):
+ input_value = 'id=identifiant'
+ expected = (u'id', u'identifiant')
+ self.assertEquals(extract_elements_from_template_param(input_value),
expected)
+
+ def test_extract_elements_from_template_param_with_reference(self):
+ input_value = 'name=My monument name<ref>Serious reference</ref>'
+ expected = (u'name', u'My monument name')
+ self.assertEquals(extract_elements_from_template_param(input_value),
expected)
--
To view, visit https://gerrit.wikimedia.org/r/281812
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: If22b08bfe661a7d5ad8bc77738ee597755cb4a84
Gerrit-PatchSet: 1
Gerrit-Project: labs/tools/heritage
Gerrit-Branch: master
Gerrit-Owner: Jean-Frédéric <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits