def test_bad_option(self): with self.assertRaises(BadSpecError): TransformFactory.get_transform( { "type": "translation", "mobile_or_web": "neither!", "translations": {"0": "zero", "1": {"en": "one", "es": "uno"}, "2": {"en": "two", "es": "dos"}}, } )
def test_string_transform(self): transform = TransformFactory.get_transform({ "type": "custom", "custom_type": "days_elapsed_from_date" }) date = (datetime.utcnow() - timedelta(days=5)).strftime('%Y-%m-%d') self.assertEqual(transform.transform(date), 5)
def get_format_fn(self): """ A function that gets applied to the data just in time before the report is rendered. """ if self.transform: return TransformFactory.get_transform(self.transform).get_transform_function() return None
def setUp(self): self.transform = TransformFactory.get_transform({ "type": "custom", "custom_type": "ethiopian_date_to_gregorian_date", }).get_transform_function()
def test_gregorian_to_ethiopian(self, date_string, expected_result): transform = TransformFactory.get_transform({ "type": "custom", "custom_type": "gregorian_date_to_ethiopian_date", }).get_transform_function() self.assertEqual(expected_result, transform(date_string))
def setUp(self): self.transform = TransformFactory.get_transform({ "type": "number_format", "format_string": "{0:.0f}" }).get_transform_function()
def test_bad_option(self): with self.assertRaises(BadSpecError): TransformFactory.get_transform({ "type": "translation", "mobile_or_web": "neither!", "translations": { "0": "zero", "1": { "en": "one", "es": "uno" }, "2": { "en": "two", "es": "dos" } }, })
def testValidCustom(self): transform = TransformFactory.get_transform({ "type": "custom", "custom_type": "user_display" }) self.assertTrue(isinstance(transform, CustomTransform))
def test_basic_translation(self): transform = TransformFactory.get_transform({ "type": "translation", "translations": { "#0000FF": "Blue" }, }).get_transform_function() self.assertEqual(transform('#0000FF'), 'Blue') self.assertEqual(transform('#123456'), '#123456')
def test_datetime_transform(self): transform = TransformFactory.get_transform({ "type": "custom", "custom_type": "days_elapsed_from_date" }) self.assertEqual( transform.transform(datetime.utcnow() - timedelta(days=5)), 5)
def parsed_expression(self, context): from corehq.apps.userreports.expressions.factory import ExpressionFactory expression = ExpressionFactory.from_spec(self.expression, context) datatype_transform = transform_from_datatype(self.datatype) if self.transform: generic_transform = TransformFactory.get_transform(self.transform).get_transform_function() inner_getter = TransformedGetter(expression, generic_transform) else: inner_getter = expression return TransformedGetter(inner_getter, datatype_transform)
def test_spanish_language_translation(self): transform = TransformFactory.get_transform( { "type": "translation", "translations": {"#0000FF": {"en": "Blue", "es": "Azul"}, "#800080": {"en": "Purple", "es": "Morado"}}, } ).get_transform_function() self.assertEqual(transform("#0000FF"), "Azul") self.assertEqual(transform("#800080"), "Morado") self.assertEqual(transform("#123456"), "#123456")
def test_markdown_rendering(self): transform = TransformFactory.get_transform({ "type": "markdown", }).get_transform_function() self.assertEqual(transform('Hello World!'), '<p>Hello World!</p>') self.assertEqual(transform('Hello **strong** world!'), '<p>Hello <strong>strong</strong> world!</p>') self.assertEqual(transform('Hello [example](http://www.example.com)!'), '<p>Hello <a href="http://www.example.com">example</a>!</p>') self.assertEqual(transform('Hello <script>alert("pwned!");</script>'), '<p>Hello <script>alert("pwned!");</script></p>')
def test_dont_translate_for_mobile(self): transform = TransformFactory.get_transform({ "type": "translation", "mobile_or_web": "mobile", "translations": { "#0000FF": "Blue", "#800080": [["en", "Purple"], ["es", "Morado"]], # legacy, mobile-only format }, }).get_transform_function() self.assertEqual(transform('#0000FF'), '#0000FF') self.assertEqual(transform('#800080'), '#800080') self.assertEqual(transform('#123456'), '#123456')
def test_multi_translation(self): transform = TransformFactory.get_transform({ "type": "multiple_value_string_translation", "translations": { "#0000FF": "Blue", "#800080": "Purple" }, "delimiter": " " }).get_transform_function() self.assertEqual(transform('#0000FF #800080'), 'Blue Purple') self.assertEqual(transform('#800080 #123456'), 'Purple #123456') self.assertEqual(transform('#123 #123456'), '#123 #123456') self.assertEqual(transform("#0000FF"), "Blue")
def test_spanish_language_translation(self): transform = TransformFactory.get_transform({ "type": "translation", "translations": { "#0000FF": { "en": "Blue", "es": "Azul", }, "#800080": { "en": "Purple", "es": "Morado", } }, }).get_transform_function() self.assertEqual(transform('#0000FF'), 'Azul') self.assertEqual(transform('#800080'), 'Morado') self.assertEqual(transform('#123456'), '#123456')
def testMissingType(self): with self.assertRaises(BadSpecError): TransformFactory.get_transform({"custom_type": "user_display"})
def testInvalidCustomType(self): with self.assertRaises(BadSpecError): TransformFactory.get_transform({ "type": "custom", "custom_type": "not_valid" })
def testInvalidType(self): with self.assertRaises(BadSpecError): TransformFactory.get_transform({"type": "not_a_transform_type", "custom_type": "user_display"})
def testInvalidType(self): with self.assertRaises(BadSpecError): TransformFactory.get_transform({ "type": "not_a_transform_type", "custom_type": "user_display" })
def test_basic_translation(self): transform = TransformFactory.get_transform( {"type": "translation", "translations": {"#0000FF": "Blue"}} ).get_transform_function() self.assertEqual(transform("#0000FF"), "Blue") self.assertEqual(transform("#123456"), "#123456")
def get_format_fn(self): if self.transform: return TransformFactory.get_transform(self.transform).get_transform_function() return None
def test_missing_translation(self): transform = TransformFactory.get_transform({ "type": "translation", "translations": {}, }).get_transform_function() self.assertEqual(transform('foo'), 'foo')
def testInvalidCustomType(self): with self.assertRaises(BadSpecError): TransformFactory.get_transform({"type": "custom", "custom_type": "not_valid"})
def testValidCustom(self): transform = TransformFactory.get_transform({"type": "custom", "custom_type": "user_display"}) self.assertTrue(isinstance(transform, CustomTransform))
def test_datetime_transform(self): transform = TransformFactory.get_transform({"type": "custom", "custom_type": "days_elapsed_from_date"}) self.assertEqual(transform.transform(datetime.utcnow() - timedelta(days=5)), 5)
def setUp(self): self.transform = TransformFactory.get_transform( {"type": "number_format", "format_string": "{0:.0f}"} ).get_transform_function()
def test_missing_translation(self): transform = TransformFactory.get_transform({"type": "translation", "translations": {}}).get_transform_function() self.assertEqual(transform("foo"), "foo")