diff --git a/cmr/queries.py b/cmr/queries.py index cdf9f2e..a0b6d1c 100644 --- a/cmr/queries.py +++ b/cmr/queries.py @@ -774,17 +774,29 @@ def entry_title(self, entry_title: str) -> Self: return self - def platform(self, platform: str) -> Self: + def platform( + self, + platform: Union[str, Sequence[str]], + *platforms: str, + ) -> Self: """ Filter by the satellite platform the granule came from. - :param platform: name of the satellite + :param platform: name(s) of the satellite platform :returns: self """ if not platform: raise ValueError("Please provide a value for platform") + if platforms: + if not isinstance(platform, str): + raise TypeError( + "Platform must be of type str when providing multiple " + "arguments" + ) + platform = [platform, *platforms] + self.params['platform'] = platform return self diff --git a/tests/test_collection.py b/tests/test_collection.py index 2c2d866..adb4d07 100644 --- a/tests/test_collection.py +++ b/tests/test_collection.py @@ -144,6 +144,22 @@ def test_platform(self): self.assertIn("platform", query.params) self.assertEqual(query.params["platform"], "1B") + def test_multiple_platforms(self): + query = CollectionQuery() + + query.platform("Aqua", "Terra") + + self.assertIn("platform", query.params) + self.assertEqual(query.params["platform"], ["Aqua", "Terra"]) + + def test_multiple_platforms_from_list(self): + query = CollectionQuery() + + query.platform(["Aqua", "Terra"]) + + self.assertIn("platform", query.params) + self.assertEqual(query.params["platform"], ["Aqua", "Terra"]) + def test_empty_platform(self): query = CollectionQuery() diff --git a/tests/test_granule.py b/tests/test_granule.py index fbf188f..7d6d4f6 100644 --- a/tests/test_granule.py +++ b/tests/test_granule.py @@ -344,6 +344,22 @@ def test_platform(self): self.assertIn(self.platform, query.params) self.assertEqual(query.params[self.platform], "1B") + def test_multiple_platforms(self): + query = GranuleQuery() + + query.platform("Aqua", "Terra") + + self.assertIn(self.platform, query.params) + self.assertEqual(query.params[self.platform], ["Aqua", "Terra"]) + + def test_multiple_platforms_from_list(self): + query = GranuleQuery() + + query.platform(["Aqua", "Terra"]) + + self.assertIn(self.platform, query.params) + self.assertEqual(query.params[self.platform], ["Aqua", "Terra"]) + def test_sort_key(self): query = GranuleQuery() # Various sort keys using this as an example