Takosaga commited on
Commit
74ebdce
·
1 Parent(s): ca5d5e7

test: update widget tests for APKG export components

Browse files
Files changed (1) hide show
  1. tests/widgets_test.py +26 -21
tests/widgets_test.py CHANGED
@@ -93,31 +93,30 @@ def test_voice_map_instruct_strings_format():
93
 
94
 
95
  def test_enable_phase2_returns_tuple(_mock_gradio):
96
- """_enable_phase2() returns tuple of (Checkbox, Checkbox, Button, Dropdown, Button, CSS).
97
-
98
- Export button is VISIBLE but DISABLED here — it is enabled after Phase 2 completes
99
- (when _current_cards is populated) via _on_media_generation_complete().
100
- """
101
  from frontend.ui.widgets import _enable_phase2
102
 
103
  result = _enable_phase2()
104
  assert isinstance(result, tuple)
105
- assert len(result) == 6
106
 
107
 
108
  def test_reset_to_idle_returns_tuple(_mock_gradio):
109
- """_reset_to_idle() returns tuple with interactive=False, disabled CSS string, export button, and file component."""
110
  from frontend.ui.widgets import _reset_to_idle
111
 
112
  result = _reset_to_idle()
113
  assert isinstance(result, tuple)
114
- assert len(result) == 8
115
  # Element at index 5 should be a CSS string (non-empty)
116
  assert isinstance(result[5], str)
117
  assert len(result[5]) > 0
118
- # Elements at indices 6, 7 should be the export button and file component mocks
119
- assert isinstance(result[6], MagicMock) # export_btn
120
- assert isinstance(result[7], MagicMock) # export_file
 
 
 
121
 
122
 
123
  def test_reset_to_idle_disabled_css_content(_mock_gradio):
@@ -125,6 +124,7 @@ def test_reset_to_idle_disabled_css_content(_mock_gradio):
125
  from frontend.ui.widgets import _reset_to_idle
126
 
127
  result = _reset_to_idle()
 
128
  css = result[5]
129
  assert "europalex-btn-disabled" in css or "toggle-images" in css
130
  assert "#voice-dropdown" in css
@@ -153,12 +153,12 @@ def test_enable_language_dropdown_on_audio_false(_mock_gradio):
153
 
154
 
155
  def test_restore_generate_cards_button_returns_tuple(_mock_gradio):
156
- """_restore_generate_cards_button() returns tuple of (Button, Button)."""
157
  from frontend.ui.widgets import _restore_generate_cards_button
158
 
159
  result = _restore_generate_cards_button()
160
  assert isinstance(result, tuple)
161
- assert len(result) == 2
162
 
163
 
164
  def test_restore_generate_cards_button_makes_button_visible_interactive(_mock_gradio):
@@ -166,33 +166,38 @@ def test_restore_generate_cards_button_makes_button_visible_interactive(_mock_gr
166
  from frontend.ui.widgets import _restore_generate_cards_button
167
 
168
  _restore_generate_cards_button()
169
- # gr.Button was called twice: first for generate_cards_btn, then for export_btn
170
  calls = _mock_gradio.Button.call_args_list
171
- assert len(calls) == 2
172
  first_call_kwargs = calls[0].kwargs if calls[0].kwargs else calls[0][1]
173
  assert first_call_kwargs.get("visible") is True
174
  assert first_call_kwargs.get("interactive") is True
175
 
176
 
177
  def test_restore_generate_cards_button_export_stays_disabled(_mock_gradio):
178
- """Export button stays visible but disabled."""
179
  from frontend.ui.widgets import _restore_generate_cards_button
180
 
181
  _restore_generate_cards_button()
182
  calls = _mock_gradio.Button.call_args_list
183
- assert len(calls) == 2
 
184
  second_call_kwargs = calls[1].kwargs if calls[1].kwargs else calls[1][1]
185
  assert second_call_kwargs.get("visible") is True
186
  assert second_call_kwargs.get("interactive") is False
 
 
 
 
187
 
188
 
189
  def test_restore_generate_cards_button_only_returns_tuple(_mock_gradio):
190
- """_restore_generate_cards_button_only() returns tuple of 3 (Button, Button, Button)."""
191
  from frontend.ui.widgets import _restore_generate_cards_button_only
192
 
193
  result = _restore_generate_cards_button_only()
194
  assert isinstance(result, tuple)
195
- assert len(result) == 3
196
 
197
 
198
  def test_restore_generate_cards_button_only_hides_generate_text(_mock_gradio):
@@ -201,7 +206,7 @@ def test_restore_generate_cards_button_only_hides_generate_text(_mock_gradio):
201
 
202
  _restore_generate_cards_button_only()
203
  calls = _mock_gradio.Button.call_args_list
204
- assert len(calls) == 3
205
  first_call_kwargs = calls[0].kwargs if calls[0].kwargs else calls[0][1]
206
  assert first_call_kwargs.get("visible") is False
207
 
@@ -212,7 +217,7 @@ def test_restore_generate_cards_button_only_restores_generate_cards(_mock_gradio
212
 
213
  _restore_generate_cards_button_only()
214
  calls = _mock_gradio.Button.call_args_list
215
- assert len(calls) == 3
216
  second_call_kwargs = calls[1].kwargs if calls[1].kwargs else calls[1][1]
217
  assert second_call_kwargs.get("visible") is True
218
  assert second_call_kwargs.get("interactive") is True
 
93
 
94
 
95
  def test_enable_phase2_returns_tuple(_mock_gradio):
96
+ """_enable_phase2() returns tuple of (Checkbox, Checkbox, Button, Dropdown, Button, Button, File, File, CSS)."""
 
 
 
 
97
  from frontend.ui.widgets import _enable_phase2
98
 
99
  result = _enable_phase2()
100
  assert isinstance(result, tuple)
101
+ assert len(result) == 9
102
 
103
 
104
  def test_reset_to_idle_returns_tuple(_mock_gradio):
105
+ """_reset_to_idle() returns tuple with interactive=False, disabled CSS string, export buttons, and file components."""
106
  from frontend.ui.widgets import _reset_to_idle
107
 
108
  result = _reset_to_idle()
109
  assert isinstance(result, tuple)
110
+ assert len(result) == 10
111
  # Element at index 5 should be a CSS string (non-empty)
112
  assert isinstance(result[5], str)
113
  assert len(result[5]) > 0
114
+ # Elements at indices 6, 7 should be the export buttons
115
+ assert isinstance(result[6], MagicMock) # export_csv_btn
116
+ assert isinstance(result[7], MagicMock) # export_apkg_btn
117
+ # Elements at indices 8, 9 should be the file components
118
+ assert isinstance(result[8], MagicMock) # export_file
119
+ assert isinstance(result[9], MagicMock) # export_apkg_file
120
 
121
 
122
  def test_reset_to_idle_disabled_css_content(_mock_gradio):
 
124
  from frontend.ui.widgets import _reset_to_idle
125
 
126
  result = _reset_to_idle()
127
+ # CSS is at index 5 (after generate_text_btn, images_toggle, audio_toggle, generate_cards_btn, voice_dropdown)
128
  css = result[5]
129
  assert "europalex-btn-disabled" in css or "toggle-images" in css
130
  assert "#voice-dropdown" in css
 
153
 
154
 
155
  def test_restore_generate_cards_button_returns_tuple(_mock_gradio):
156
+ """_restore_generate_cards_button() returns tuple of (Button, Button, Button)."""
157
  from frontend.ui.widgets import _restore_generate_cards_button
158
 
159
  result = _restore_generate_cards_button()
160
  assert isinstance(result, tuple)
161
+ assert len(result) == 3
162
 
163
 
164
  def test_restore_generate_cards_button_makes_button_visible_interactive(_mock_gradio):
 
166
  from frontend.ui.widgets import _restore_generate_cards_button
167
 
168
  _restore_generate_cards_button()
169
+ # gr.Button was called three times: generate_cards_btn, export_csv_btn, export_apkg_btn
170
  calls = _mock_gradio.Button.call_args_list
171
+ assert len(calls) == 3
172
  first_call_kwargs = calls[0].kwargs if calls[0].kwargs else calls[0][1]
173
  assert first_call_kwargs.get("visible") is True
174
  assert first_call_kwargs.get("interactive") is True
175
 
176
 
177
  def test_restore_generate_cards_button_export_stays_disabled(_mock_gradio):
178
+ """Export buttons stay visible but disabled."""
179
  from frontend.ui.widgets import _restore_generate_cards_button
180
 
181
  _restore_generate_cards_button()
182
  calls = _mock_gradio.Button.call_args_list
183
+ assert len(calls) == 3
184
+ # Second call: export_csv_btn (disabled)
185
  second_call_kwargs = calls[1].kwargs if calls[1].kwargs else calls[1][1]
186
  assert second_call_kwargs.get("visible") is True
187
  assert second_call_kwargs.get("interactive") is False
188
+ # Third call: export_apkg_btn (disabled)
189
+ third_call_kwargs = calls[2].kwargs if calls[2].kwargs else calls[2][1]
190
+ assert third_call_kwargs.get("visible") is True
191
+ assert third_call_kwargs.get("interactive") is False
192
 
193
 
194
  def test_restore_generate_cards_button_only_returns_tuple(_mock_gradio):
195
+ """_restore_generate_cards_button_only() returns tuple of 4 (Button, Button, Button, Button)."""
196
  from frontend.ui.widgets import _restore_generate_cards_button_only
197
 
198
  result = _restore_generate_cards_button_only()
199
  assert isinstance(result, tuple)
200
+ assert len(result) == 4
201
 
202
 
203
  def test_restore_generate_cards_button_only_hides_generate_text(_mock_gradio):
 
206
 
207
  _restore_generate_cards_button_only()
208
  calls = _mock_gradio.Button.call_args_list
209
+ assert len(calls) == 4
210
  first_call_kwargs = calls[0].kwargs if calls[0].kwargs else calls[0][1]
211
  assert first_call_kwargs.get("visible") is False
212
 
 
217
 
218
  _restore_generate_cards_button_only()
219
  calls = _mock_gradio.Button.call_args_list
220
+ assert len(calls) == 4
221
  second_call_kwargs = calls[1].kwargs if calls[1].kwargs else calls[1][1]
222
  assert second_call_kwargs.get("visible") is True
223
  assert second_call_kwargs.get("interactive") is True