def test_query_parse_decimals(self): """Test parsing of floating point numbers as decimals""" responses.add( responses.GET, re.compile(r'^https://.*/query/\?q=SELECT\+ID%2C\+Price\+' r'FROM\+Account$'), body='{"records": [{"ID": "1", "Price": 13.40},' '{"ID": "2", "Price": 1.12345678901234567},' '{"ID": "3", "Price": 123456789012345678},' '{"ID": "4", "Price": 0},' '{"ID": "5", "Price": -1.1234567890123456},' '{"ID": "6", "Price": -12345678901234567}],' '"done": false, "nextRecordsUrl": ' '"https://example.com/query/next-records-id", "totalSize": 6}', status=http.OK) session = requests.Session() client = Salesforce(session_id=tests.SESSION_ID, instance_url=tests.SERVER_URL, session=session, parse_fixed_place=True) result = client.query('SELECT ID, Price FROM Account') self.assertEqual( result, OrderedDict([ ('records', [ OrderedDict([ ('ID', '1'), ('Price', decimal.Decimal('13.40')), ]), OrderedDict([ ('ID', '2'), ('Price', decimal.Decimal('1.12345678901234567')), ]), OrderedDict([ ('ID', '3'), ('Price', decimal.Decimal('123456789012345678')), ]), OrderedDict([ ('ID', '4'), ('Price', decimal.Decimal('0')), ]), OrderedDict([ ('ID', '5'), ('Price', decimal.Decimal('-1.1234567890123456')), ]), OrderedDict([ ('ID', '6'), ('Price', decimal.Decimal('-12345678901234567')), ]), ]), ('done', False), ("nextRecordsUrl", "https://example.com/query/next-records-id"), ('totalSize', 6), ]))
def test_query_include_deleted(self): """Test querying for all records generates the expected request""" responses.add( responses.GET, re.compile(r'^https://.*/queryAll/\?q=SELECT\+ID\+FROM\+Account$'), body='{}', status=http.OK) session = requests.Session() client = Salesforce(session_id=tests.SESSION_ID, instance_url=tests.SERVER_URL, session=session) result = client.query('SELECT ID FROM Account', include_deleted=True) self.assertEqual(result, {})
def test_query(self): """Test querying generates the expected request""" responses.add( responses.GET, re.compile(r"^https://.*/query/\?q=SELECT\+ID\+FROM\+Account$"), body="{}", status=http.OK) session = requests.Session() client = Salesforce(session_id=tests.SESSION_ID, instance_url=tests.SERVER_URL, session=session) result = client.query("SELECT ID FROM Account") self.assertEqual(result, {})
def test_query_parse_float_to_decimal(self): """Test querying generates float as Decimal values""" responses.add( responses.GET, re.compile( r'^https://.*/query/\?q=SELECT\+currency\+FROM\+Account$' ), body='{"currency": 1.0}', status=http.OK, ) session = requests.Session() client = Salesforce( session_id=tests.SESSION_ID, instance_url=tests.SERVER_URL, session=session, parse_float=decimal.Decimal, ) result = client.query('SELECT currency FROM Account') self.assertIsInstance(result["currency"], decimal.Decimal) self.assertNotIsInstance(result["currency"], float) self.assertEqual(result, {"currency": decimal.Decimal(1.0)}) self.assertEqual(result, {"currency": 1.0}) self.assertNotEqual(result, {"currency": "1.0"})