示例#1
0
    def test_widget_with_default_settings(self):
        """
            Test the widget with default settings which is defined in django settings file
        """
        zoom = 15
        default_map_center = [51.5073509, -0.12775829999]
        widget_settings = {
            "GooglePointFieldWidget": (
                ("zoom", zoom),
                ("mapCenterLocation", default_map_center),
            )
        }

        with override_settings(MAP_WIDGETS=widget_settings):
            reload_module(mw_widgets)
            widget = mw_widgets.GooglePointFieldWidget()
            self.assertEqual(hasattr(widget, "settings"), True)
            self.assertEqual(hasattr(widget, "settings_namespace"), True)
            self.assertEqual(isinstance(widget.media, django_forms.Media),
                             True)

            # test `map_options` method
            options_str = widget.map_options()
            options = json.loads(options_str)
            self.assertEqual(options.get("zoom"), zoom)
            self.assertEqual(options.get("mapCenterLocation"),
                             default_map_center)

            # test render with Point object value
            point = Point(-104.9903, 39.7392, srid=DJANGO_DEFAULT_SRID_VALUE)
            widget_html_elem_id = "id_location"
            widget_html_elem_name = "location"
            result = widget.render(name=widget_html_elem_name,
                                   value=point,
                                   attrs={'id': widget_html_elem_id})
            self.assertIn(widget.serialize(point), result)
            self.assertIn(
                get_textarea_html(widget_html_elem_id, widget_html_elem_name,
                                  point), result)
            self.assertIn(escapejs(options_str), result)

            # test render with serialized data value
            result = widget.render(name=widget_html_elem_name,
                                   value=widget.serialize(point))
            self.assertIn(widget.serialize(point), result)

            # test widget `attrs` param
            w = mw_widgets.GooglePointFieldWidget(attrs={"max-height": 600})
            self.assertIn("max-height", w.attrs)

            # test widget render `attrs` param with `None` value
            self.assertIn(
                widget_html_elem_name,
                w.render(name=widget_html_elem_name, value=None, attrs=None))
示例#2
0
    def test_widget_with_custom_settings(self):
        """
            Test the widget with custom settings which is updated by `settings` parameter
        """
        zoom = 11
        default_map_center = [52.5073509, -0.23775829999]
        widget_settings = {"GooglePointFieldWidget": (("zoom", zoom), ("mapCenterLocation", default_map_center))}

        widget = mw_widgets.GooglePointFieldWidget(settings=widget_settings)
        self.assertEqual(hasattr(widget, "settings"), True)
        self.assertEqual(hasattr(widget, "settings_namespace"), True)
        self.assertEqual(isinstance(widget.media, django_forms.Media), True)

        # test `map_options` method
        options_str = widget.map_options()
        options = json.loads(options_str)
        self.assertEqual(options.get("zoom"), zoom)
        self.assertEqual(options.get("mapCenterLocation"), default_map_center)

        # test render with Point object value
        point = Point(-105.9903, 38.73922, srid=DJANGO_DEFAULT_SRID_VALUE)
        widget_html_elem_id = "id_location"
        widget_html_elem_name = "location"
        result = widget.render(name=widget_html_elem_name, value=point, attrs={"id": widget_html_elem_id})
        self.assertIn(widget.serialize(point), result)
        self.assertIn(get_textarea_html(widget_html_elem_id, widget_html_elem_name, point), result)
        self.assertIn(escapejs(options_str), result)

        # test render with serialized data value
        result = widget.render(name=widget_html_elem_name, value=widget.serialize(point))
        self.assertIn(widget.serialize(point), result)
示例#3
0
    def test_widget_with_different_srid(self):
        """
            Test the widget with a different `srid` value instead of Geo Django default
        """
        point = Point(-16351.8201902, 6708983.38973, srid=3857)
        widget_html_elem_id = "id_location"
        widget_html_elem_name = "location"
        widget = mw_widgets.GooglePointFieldWidget(map_srid=3857)
        result = widget.render(name=widget_html_elem_name, value=point, attrs={"id": widget_html_elem_id})

        ogr = point.ogr
        ogr.transform(GOOGLE_MAP_DEFAULT_SRID_VALUE)
        point_with_google_map_srid_format = ogr
        self.assertIn(widget.serialize(point_with_google_map_srid_format), result)