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

Reply via email to