@@ -468,3 +468,85 @@ def test_can_create_filter_from_new_field(live_server, page, openmap):
468
468
"widget" : "checkbox" ,
469
469
},
470
470
}
471
+
472
+
473
+ def test_can_create_new_filter_on_map_from_panel (live_server , page , openmap ):
474
+ openmap .settings ["properties" ]["onLoadPanel" ] = "datafilters"
475
+ openmap .settings ["properties" ]["fields" ] = [
476
+ {"key" : "name" , "type" : "String" },
477
+ {"key" : "foobar" , "type" : "Number" },
478
+ {"key" : "description" , "type" : "Text" },
479
+ ]
480
+ openmap .save ()
481
+ DataLayerFactory (map = openmap , data = DATALAYER_DATA1 )
482
+ page .goto (f"{ live_server .url } { openmap .get_absolute_url ()} ?edit" )
483
+ page .get_by_role ("button" , name = "Add filter" ).click ()
484
+ page .get_by_label ("Filter on" ).select_option ("foobar" )
485
+ page .get_by_role ("textbox" , name = "Human readable name of the" ).fill ("Foo Bar" )
486
+ page .wait_for_timeout (300 )
487
+ page .get_by_text ("radio" ).click ()
488
+ page .get_by_role ("button" , name = "OK" ).click ()
489
+ expect (
490
+ page .locator (".panel.left" ).get_by_role ("group" , name = "Foo Bar" )
491
+ ).to_be_visible ()
492
+ with page .expect_response (re .compile ("./update/settings/.*" )):
493
+ page .get_by_role ("button" , name = "Save" , exact = True ).click ()
494
+ saved = Map .objects .first ()
495
+ assert saved .settings ["properties" ]["filters" ] == {
496
+ "foobar" : {"label" : "Foo Bar" , "widget" : "radio" }
497
+ }
498
+
499
+
500
+ def test_can_create_new_filter_on_datalayer_from_panel (live_server , page , openmap ):
501
+ openmap .settings ["properties" ]["fields" ] = [
502
+ {"key" : "name" , "type" : "String" },
503
+ {"key" : "foobar" , "type" : "Number" },
504
+ {"key" : "description" , "type" : "Text" },
505
+ ]
506
+ openmap .save ()
507
+ datalayer = DataLayerFactory (map = openmap , data = DATALAYER_DATA1 )
508
+ page .goto (
509
+ f"{ live_server .url } { openmap .get_absolute_url ()} ?edit&onLoadPanel=datafilters"
510
+ )
511
+ page .get_by_role ("button" , name = "Add filter" ).click ()
512
+ expect (page .get_by_label ("Apply filter to" )).to_have_value (f"map:{ openmap .pk } " )
513
+ page .get_by_label ("Apply filter to" ).select_option (f"layer:{ datalayer .pk } " )
514
+ page .get_by_label ("Filter on" ).select_option ("mynumber" )
515
+ page .get_by_role ("textbox" , name = "Human readable name of the" ).fill ("Foo Bar" )
516
+ page .wait_for_timeout (300 )
517
+ page .get_by_text ("radio" ).click ()
518
+ page .get_by_role ("button" , name = "OK" ).click ()
519
+ expect (
520
+ page .locator (".panel.left" ).get_by_role ("group" , name = "Foo Bar" )
521
+ ).to_be_visible ()
522
+ with page .expect_response (re .compile ("./datalayer/update/.*" )):
523
+ page .get_by_role ("button" , name = "Save" , exact = True ).click ()
524
+ saved = DataLayer .objects .first ()
525
+ assert saved .settings ["filters" ] == {
526
+ "mynumber" : {"label" : "Foo Bar" , "widget" : "radio" }
527
+ }
528
+
529
+
530
+ def test_can_edit_filter_from_panel (live_server , page , openmap ):
531
+ openmap .settings ["properties" ]["fields" ] = [
532
+ {"key" : "name" , "type" : "String" },
533
+ {"key" : "foobar" , "type" : "Number" },
534
+ {"key" : "description" , "type" : "Text" },
535
+ ]
536
+ openmap .settings ["properties" ]["filters" ] = {
537
+ "foobar" : {"widget" : "minmax" , "label" : "Foo Bar" },
538
+ "name" : {"widget" : "checkbox" , "label" : "Bar Foo" },
539
+ }
540
+ openmap .save ()
541
+ page .goto (
542
+ f"{ live_server .url } { openmap .get_absolute_url ()} ?edit&onLoadPanel=datafilters"
543
+ )
544
+ page .get_by_role ("group" , name = "Foo Bar" ).get_by_role ("button" ).click ()
545
+ expect (page .get_by_label ("Apply filter to" )).to_have_value ("map:1" )
546
+ expect (page .get_by_label ("Apply filter to" )).to_be_disabled ()
547
+ page .get_by_role ("textbox" , name = "Human readable name of the" ).fill ("Foo Bar Baz" )
548
+ page .wait_for_timeout (300 ) # Input throttling.
549
+ page .get_by_role ("button" , name = "OK" ).click ()
550
+ expect (
551
+ page .get_by_role ("group" , name = "Foo Bar Baz" ).locator ("legend" )
552
+ ).to_be_visible ()
0 commit comments