@@ -129,3 +129,75 @@ async def test_list_viewers_info_only_default(
129129 # Assert
130130 assert len (viewers ) == 1
131131 assert viewers [0 ].filetype == "CSV"
132+
133+
134+ async def test_get_default_viewer_for_filetype (
135+ studies_dispatcher_repository : StudiesDispatcherRepository ,
136+ consume_filetypes_in_db : dict ,
137+ ):
138+ """Test getting the default viewer for a specific file type."""
139+ # Act
140+ viewer = await studies_dispatcher_repository .get_default_viewer_for_filetype (
141+ file_type = "CSV"
142+ )
143+
144+ # Assert
145+ assert viewer is not None
146+ assert isinstance (viewer , ViewerInfo )
147+ assert viewer .key == consume_filetypes_in_db ["service_key" ]
148+ assert viewer .version == consume_filetypes_in_db ["service_version" ]
149+ assert viewer .filetype == "CSV"
150+ assert viewer .label == consume_filetypes_in_db ["service_display_name" ]
151+
152+ # Test with non-existent filetype
153+ viewer_none = await studies_dispatcher_repository .get_default_viewer_for_filetype (
154+ file_type = "NONEXISTENT"
155+ )
156+ assert viewer_none is None
157+
158+
159+ async def test_find_compatible_viewer_found (
160+ studies_dispatcher_repository : StudiesDispatcherRepository ,
161+ consume_filetypes_in_db : dict ,
162+ ):
163+ """Test finding a compatible viewer service that exists."""
164+ # Act
165+ viewer = await studies_dispatcher_repository .find_compatible_viewer (
166+ file_type = "CSV" ,
167+ service_key = consume_filetypes_in_db ["service_key" ],
168+ service_version = "1.0.0" ,
169+ )
170+
171+ # Assert
172+ assert viewer is not None
173+ assert isinstance (viewer , ViewerInfo )
174+ assert viewer .key == consume_filetypes_in_db ["service_key" ]
175+ assert viewer .version == "1.0.0" # Should use the requested version
176+ assert viewer .filetype == "CSV"
177+ assert viewer .label == consume_filetypes_in_db ["service_display_name" ]
178+
179+
180+ async def test_find_compatible_viewer_not_found (
181+ studies_dispatcher_repository : StudiesDispatcherRepository ,
182+ consume_filetypes_in_db : dict ,
183+ ):
184+ """Test finding a compatible viewer service that doesn't exist."""
185+ # Act - test with non-existent service key
186+ viewer = await studies_dispatcher_repository .find_compatible_viewer (
187+ file_type = "CSV" ,
188+ service_key = "simcore/services/dynamic/nonexistent" ,
189+ service_version = "1.0.0" ,
190+ )
191+
192+ # Assert
193+ assert viewer is None
194+
195+ # Act - test with incompatible filetype
196+ viewer_wrong_filetype = await studies_dispatcher_repository .find_compatible_viewer (
197+ file_type = "NONEXISTENT" ,
198+ service_key = consume_filetypes_in_db ["service_key" ],
199+ service_version = "1.0.0" ,
200+ )
201+
202+ # Assert
203+ assert viewer_wrong_filetype is None
0 commit comments