|
27 | 27 | """ |
28 | 28 |
|
29 | 29 | import unittest |
| 30 | +import json |
30 | 31 |
|
31 | 32 | import oracledb |
32 | 33 | import test_env |
@@ -368,5 +369,82 @@ def test_3415_soda_hint_with_invalid_type(self): |
368 | 369 | self.assertRaises(TypeError, coll.saveAndGet, |
369 | 370 | dict(name="Sally", age=36), hint=5) |
370 | 371 |
|
| 372 | + def test_3416_collection_name_and_metadata(self): |
| 373 | + "3416 - test name and metadata attribute" |
| 374 | + soda_db = self.connection.getSodaDatabase() |
| 375 | + collection_name = "TestCollectionMetadata" |
| 376 | + coll = soda_db.createCollection(collection_name) |
| 377 | + self.assertEqual(coll.name, collection_name) |
| 378 | + self.assertEqual(coll.metadata["tableName"], collection_name) |
| 379 | + coll.drop() |
| 380 | + |
| 381 | + def test_3417_insert_many(self): |
| 382 | + "3417 - test insertMany" |
| 383 | + soda_db = self.get_soda_database(minclient=(18, 5)) |
| 384 | + coll = soda_db.createCollection("TestInsertMany") |
| 385 | + values_to_insert = [ |
| 386 | + dict(name="George", age=25), |
| 387 | + soda_db.createDocument(dict(name="Lucas", age=47)) |
| 388 | + ] |
| 389 | + coll.insertMany(values_to_insert) |
| 390 | + self.connection.commit() |
| 391 | + fetched_docs = list(coll.find().getCursor()) |
| 392 | + for fetched_doc, expected_doc in zip(fetched_docs, values_to_insert): |
| 393 | + if isinstance(expected_doc, dict): |
| 394 | + expected_doc = soda_db.createDocument(expected_doc) |
| 395 | + self.assertEqual(fetched_doc.getContent(), |
| 396 | + expected_doc.getContent()) |
| 397 | + self.assertRaisesRegex(oracledb.DatabaseError, "^DPI-1031:", |
| 398 | + coll.insertMany, []) |
| 399 | + coll.drop() |
| 400 | + |
| 401 | + def test_3418_save(self): |
| 402 | + "3418 - test save" |
| 403 | + soda_db = self.get_soda_database(minclient=(19, 9)) |
| 404 | + coll = soda_db.createCollection("TestSodaSave") |
| 405 | + values_to_save = [ |
| 406 | + 12, |
| 407 | + "23", |
| 408 | + soda_db.createDocument(45) |
| 409 | + ] |
| 410 | + for value in values_to_save: |
| 411 | + coll.save(value) |
| 412 | + self.connection.commit() |
| 413 | + fetched_docs = coll.find().getDocuments() |
| 414 | + for fetched_doc, expected_doc in zip(fetched_docs, values_to_save): |
| 415 | + if isinstance(expected_doc, (int, str)): |
| 416 | + expected_doc = soda_db.createDocument(expected_doc) |
| 417 | + self.assertEqual(fetched_doc.getContent(), |
| 418 | + expected_doc.getContent()) |
| 419 | + coll.drop() |
| 420 | + |
| 421 | + def test_3419_save_and_get_with_hint(self): |
| 422 | + "3419 - test saveAndGet with hint" |
| 423 | + soda_db = self.get_soda_database(minclient=(19, 11)) |
| 424 | + cursor = self.connection.cursor() |
| 425 | + statement = """ |
| 426 | + SELECT |
| 427 | + ( SELECT t2.sql_fulltext |
| 428 | + FROM v$sql t2 |
| 429 | + WHERE t2.sql_id = t1.prev_sql_id |
| 430 | + AND t2.child_number = t1.prev_child_number |
| 431 | + ) |
| 432 | + FROM v$session t1 |
| 433 | + WHERE t1.audsid = sys_context('userenv', 'sessionid')""" |
| 434 | + coll = soda_db.createCollection("TestSodaSaveWithHint") |
| 435 | + coll.find().remove() |
| 436 | + values_to_save = [ |
| 437 | + dict(name="Jordan", age=59), |
| 438 | + dict(name="Curry", age=34) |
| 439 | + ] |
| 440 | + hints = ["MONITOR", "NO_MONITOR"] |
| 441 | + |
| 442 | + for value, hint in zip(values_to_save, hints): |
| 443 | + coll.saveAndGet(value, hint=hint) |
| 444 | + coll.find().hint(hint).getOne().getContent() |
| 445 | + cursor.execute(statement) |
| 446 | + result, = cursor.fetchone() |
| 447 | + self.assertTrue(hint in result.read()) |
| 448 | + |
371 | 449 | if __name__ == "__main__": |
372 | 450 | test_env.run_test_cases() |
0 commit comments