import unittest from unittest.mock import patch import simplejson as json from pyecharts import options as opts from pyecharts.charts import Map from pyecharts.faker import Faker class TestMapChart(unittest.TestCase): @patch("pyecharts.render.engine.write_utf8_html_file") def test_map_base(self, fake_writer): c = Map().add( "商家A", [list(z) for z in zip(Faker.provinces, Faker.values())], "china" ) c.render() _, content = fake_writer.call_args[0] self.assertEqual(c.theme, "white") self.assertEqual(c.renderer, "canvas") @patch("pyecharts.render.engine.write_utf8_html_file") def test_map_item_base(self, fake_writer): location_name = ["广东"] location_data = [[100, 200, 300, 400]] mock_data = [ opts.MapItem(name=d[0], value=d[1]) for d in list(zip(location_name, location_data)) ] c = Map().add("商家A", mock_data, "china") c.render() _, content = fake_writer.call_args[0] self.assertEqual(c.theme, "white") self.assertEqual(c.renderer, "canvas") def test_map_emphasis(self): c = Map().add( "商家A", [list(z) for z in zip(Faker.provinces, Faker.values())], "china", emphasis_label_opts=opts.LabelOpts(is_show=False), emphasis_itemstyle_opts=opts.ItemStyleOpts( border_color="white", area_color="red" ), ) options = json.loads(c.dump_options()) expected = { "label": {"show": False, "margin": 8, "valueAnimation": False}, "itemStyle": {"borderColor": "white", "areaColor": "red"}, } self.assertEqual(expected, options["series"][0]["emphasis"]) def test_map_add_geo_json(self): geo_json = { "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": {}, "geometry": { "coordinates": [ [ [118.57812, 26.557402], [118.590394, 26.553081], [118.617087, 26.553059], [118.616111, 26.527755], [118.604148, 26.504904], [118.608376, 26.497294], [118.59623, 26.478385], [118.578807, 26.473754], [118.56458, 26.465373], [118.554474, 26.445927], [118.566533, 26.432851], [118.54632, 26.417928], [118.548079, 26.396854], [118.560868, 26.378456], [118.566104, 26.358824], [118.589836, 26.373463], [118.590222, 26.359802], [118.595801, 26.347859], [118.60369, 26.350515], [118.621191, 26.361783], [118.631475, 26.354788], [118.656162, 26.340797], [118.662964, 26.322656], [118.653222, 26.313452], [118.661204, 26.296272], [118.664809, 26.270524], [118.678076, 26.279442], [118.68585, 26.28836], [118.697277, 26.287725], [118.693599, 26.305557], [118.699533, 26.311078], [118.724644, 26.337465], [118.75152, 26.330542], [118.76682, 26.327157], [118.775794, 26.325234], [118.797129, 26.340542], [118.800059, 26.357136], [118.785137, 26.365115], [118.771085, 26.385377], [118.750534, 26.390836], [118.761617, 26.420202], [118.745161, 26.427236], [118.732826, 26.437957], [118.734248, 26.45448], [118.737767, 26.472405], [118.748152, 26.481723], [118.754353, 26.487893], [118.748195, 26.494063], [118.748238, 26.506403], [118.762057, 26.508959], [118.780881, 26.504741], [118.784598, 26.491919], [118.798615, 26.484013], [118.805766, 26.474876], [118.794544, 26.459227], [118.809178, 26.445137], [118.805487, 26.430479], [118.822825, 26.420838], [118.85278, 26.438461], [118.878615, 26.469605], [118.898227, 26.473649], [118.91784, 26.472777], [118.949511, 26.464885], [118.951619, 26.487056], [118.943747, 26.493838], [118.942741, 26.507994], [118.962064, 26.530816], [118.997866, 26.528448], [119.000968, 26.556946], [119.009563, 26.560258], [119.015767, 26.581621], [119.032957, 26.594999], [119.062507, 26.602235], [119.075945, 26.587083], [119.06329, 26.569473], [119.076433, 26.569869], [119.092152, 26.562702], [119.101005, 26.572732], [119.103604, 26.555941], [119.119788, 26.539555], [119.132, 26.538732], [119.144213, 26.536681], [119.171383, 26.548551], [119.194922, 26.568383], [119.212185, 26.547589], [119.218757, 26.53412], [119.229448, 26.526792], [119.251174, 26.53241], [119.253859, 26.546561], [119.272336, 26.541055], [119.281139, 26.534343], [119.287711, 26.577995], [119.301835, 26.593391], [119.329006, 26.578699], [119.354338, 26.599587], [119.363191, 26.603281], [119.376544, 26.604515], [119.381656, 26.62171], [119.397376, 26.627859], [119.387272, 26.641423], [119.375795, 26.639028], [119.358824, 26.632951], [119.351467, 26.648969], [119.326158, 26.676212], [119.261119, 26.690807], [119.241593, 26.742684], [119.226535, 26.728854], [119.204611, 26.727288], [119.182686, 26.729403], [119.167628, 26.711891], [119.146452, 26.731884], [119.115663, 26.73961], [119.047905, 26.728693], [119.045955, 26.74669], [119.054992, 26.764685], [119.051092, 26.776147], [119.042385, 26.776575], [119.033679, 26.770872], [119.012146, 26.761305], [118.982497, 26.773075], [118.945981, 26.77013], [118.926007, 26.749652], [118.882686, 26.738982], [118.887478, 26.757469], [118.903255, 26.76737], [118.923824, 26.795751], [118.890803, 26.813278], [118.843328, 26.798569], [118.827143, 26.786924], [118.795852, 26.783859], [118.771428, 26.805618], [118.741511, 26.818793], [118.728195, 26.830895], [118.722432, 26.851573], [118.739746, 26.856167], [118.696095, 26.869031], [118.664633, 26.86214], [118.63317, 26.855248], [118.620069, 26.839818], [118.635807, 26.832963], [118.638444, 26.810674], [118.625974, 26.788073], [118.623117, 26.769147], [118.600382, 26.7093], [118.582339, 26.703842], [118.569788, 26.680592], [118.57902, 26.673354], [118.594415, 26.673546], [118.594991, 26.656748], [118.587905, 26.631739], [118.57812, 26.557402], ] ], "type": "Polygon", }, } ], } c = Map() c.add_geo_json(geo_json=geo_json) self.assertEqual(c._geo_json, geo_json)