2
2
from asserts import assert_component_equal
3
3
4
4
import vizro .models as vm
5
- from vizro .managers import model_manager
5
+ from vizro .managers import data_manager , model_manager
6
6
from vizro .models ._action ._actions_chain import ActionsChain
7
7
from vizro .models ._controls .parameter import Parameter
8
8
from vizro .models .types import CapturedCallable
@@ -52,8 +52,8 @@ def test_duplicate_parameter_target_failed_two_params(self):
52
52
Parameter (targets = ["scatter_chart.x" ], selector = vm .Dropdown (options = ["lifeExp" , "pop" ]))
53
53
54
54
55
- @pytest .mark .usefixtures ("managers_one_page_two_graphs" )
56
55
class TestPreBuildMethod :
56
+ @pytest .mark .usefixtures ("managers_one_page_two_graphs" )
57
57
@pytest .mark .parametrize (
58
58
"test_input, title" ,
59
59
[
@@ -73,6 +73,7 @@ def test_set_target_and_title_valid(self, test_input, title):
73
73
assert parameter .targets == ["scatter_chart.x" ]
74
74
assert parameter .selector .title == title
75
75
76
+ @pytest .mark .usefixtures ("managers_one_page_two_graphs" )
76
77
@pytest .mark .parametrize ("test_input" , [vm .Slider (), vm .RangeSlider (), vm .DatePicker ()])
77
78
def test_numerical_and_temporal_selectors_missing_values (self , test_input ):
78
79
parameter = Parameter (targets = ["scatter_chart.x" ], selector = test_input )
@@ -83,6 +84,7 @@ def test_numerical_and_temporal_selectors_missing_values(self, test_input):
83
84
):
84
85
parameter .pre_build ()
85
86
87
+ @pytest .mark .usefixtures ("managers_one_page_two_graphs" )
86
88
@pytest .mark .parametrize ("test_input" , [vm .Checklist (), vm .Dropdown (), vm .RadioItems ()])
87
89
def test_categorical_selectors_with_missing_options (self , test_input ):
88
90
parameter = Parameter (targets = ["scatter_chart.x" ], selector = test_input )
@@ -93,6 +95,7 @@ def test_categorical_selectors_with_missing_options(self, test_input):
93
95
):
94
96
parameter .pre_build ()
95
97
98
+ @pytest .mark .usefixtures ("managers_one_page_two_graphs" )
96
99
@pytest .mark .parametrize (
97
100
"test_input" ,
98
101
[
@@ -111,6 +114,35 @@ def test_set_actions(self, test_input):
111
114
assert isinstance (default_action .actions [0 ].function , CapturedCallable )
112
115
assert default_action .actions [0 ].id == f"parameter_action_{ parameter .id } "
113
116
117
+ @pytest .mark .usefixtures ("managers_one_page_two_graphs_with_dynamic_data" )
118
+ @pytest .mark .parametrize (
119
+ "filter_targets, expected_parameter_targets" ,
120
+ [
121
+ ([], {"scatter_chart.data_frame.first_n" }),
122
+ (["scatter_chart" ], {"scatter_chart.data_frame.first_n" , "filter_id" }),
123
+ (["scatter_chart" , "box_chart" ], {"scatter_chart.data_frame.first_n" , "filter_id" , "box_chart" }),
124
+ ],
125
+ )
126
+ def test_targets_for_data_frame_parameter (
127
+ self , filter_targets , expected_parameter_targets , gapminder_dynamic_first_n_last_n_function
128
+ ):
129
+ data_manager ["gapminder_dynamic_first_n_last_n" ] = gapminder_dynamic_first_n_last_n_function
130
+
131
+ if filter_targets :
132
+ dynamic_filter = vm .Filter (id = "filter_id" , column = "pop" , targets = filter_targets )
133
+ model_manager ["test_page" ].controls .append (dynamic_filter )
134
+ dynamic_filter .pre_build ()
135
+
136
+ data_frame_parameter = vm .Parameter (
137
+ id = "test_data_frame_parameter" ,
138
+ targets = ["scatter_chart.data_frame.first_n" ],
139
+ selector = vm .Slider (id = "first_n_parameter" , min = 1 , max = 10 , step = 1 ),
140
+ )
141
+ model_manager ["test_page" ].controls .append (data_frame_parameter )
142
+ data_frame_parameter .pre_build ()
143
+
144
+ assert set (data_frame_parameter .targets ) == expected_parameter_targets
145
+
114
146
115
147
@pytest .mark .usefixtures ("managers_one_page_two_graphs" )
116
148
class TestParameterBuild :
0 commit comments