def test_list_type(self): filter_definition = {"name": {"in": ["Badger", "Gopher"]}} expected_filter = {"name__in": "Badger,Gopher"} expected_query_string = "name__in=Badger,Gopher" api_filter = ApiFilter(filter_definition) self.assertEqual(expected_filter, api_filter.to_api()) self.assertEqual(expected_query_string, api_filter.to_query_string())
def test_string_type(self): filter_definition = {"name": {"eq": "Badger"}} expected_filter = {"name__eq": "Badger"} expected_query_string = "name__eq=Badger" api_filter = ApiFilter(filter_definition) self.assertEqual(expected_filter, api_filter.to_api()) self.assertEqual(expected_query_string, api_filter.to_query_string())
def device_filter_helper_setter(self, value): """Create a campaign device filter from an API Filter :param self: Instance of the entity for which this is a custom method. :type self: mbed_cloud.foundation.UpdateCampaign :param value: Device filter for campaign :type value: mbed_cloud.client.api_filter.ApiFilter """ if isinstance(value, dict): value = ApiFilter(filter_definition=value, field_renames=Device._renames_to_api) elif isinstance(value, ApiFilter): value.field_renames = Device._renames_to_api elif value is not None: raise TypeError("This field may be either 'dict' or 'ApiFilter'.") # Store the filter as a dictionary for later retrieval if needed self._device_filter_helper.set(value.filter_definition) # Render the filter as a string for serialisation to the API self.device_filter = value.to_query_string()
def test_add_filter(self): api_filter = ApiFilter() self.assertEqual({}, api_filter.to_api()) api_filter.add_filter("created_at", "gte", datetime(2019, 1, 1)) expected_filter = {"created_at__gte": "2019-01-01T00:00:00Z"} self.assertEqual(expected_filter, api_filter.to_api()) api_filter.add_filter("created_at", "lte", date(2019, 12, 31)) expected_filter = { "created_at__gte": "2019-01-01T00:00:00Z", "created_at__lte": "2019-12-31" } self.assertEqual(expected_filter, api_filter.to_api()) api_filter.add_filter("status", "eq", True) expected_filter = { "created_at__gte": "2019-01-01T00:00:00Z", "created_at__lte": "2019-12-31", "status__eq": "true" } expected_query_string = "created_at__gte=2019-01-01T00:00:00Z&created_at__lte=2019-12-31&status__eq=true" self.assertEqual(expected_filter, api_filter.to_api()) self.assertEqual(expected_query_string, api_filter.to_query_string())