This section covers the JUnit test suite implemented in APIJSONORM/src/test APIJSONORM/src/test/java/apijson/orm/AbstractParserMethodDirectiveTest.java1-193 These tests validate critical ORM behaviors, including request method directive dispatching, table reference parsing, fake delete mapping, and database-specific compatibility layers such as KingbaseES modes.
AbstractParserMethodDirectiveTest)APIJSON supports multiple ways to declare request methods (@get, @post, @put, @delete, etc.) alongside business objects within a single transactional payload [README-extend.md:1-25] [APIJSONORM/src/test/java/apijson/orm/AbstractParserMethodDirectiveTest.java:77-95]. AbstractParserMethodDirectiveTest verifies that global method directives are correctly prioritized, processed ahead of business objects regardless of JSON key ordering, and that invalid structures (such as array-valued method directives) are properly rejected [APIJSONORM/src/test/java/apijson/orm/AbstractParserMethodDirectiveTest.java:77-128].
@delete or @post after the target objects in the JSON payload still results in correct method dispatching [APIJSONORM/src/test/java/apijson/orm/AbstractParserMethodDirectiveTest.java:77-95].@method attribute takes precedence over global method directives [APIJSONORM/src/test/java/apijson/orm/AbstractParserMethodDirectiveTest.java:98-110].String or JSONObject to a method directive throws an IllegalArgumentException [APIJSONORM/src/test/java/apijson/orm/AbstractParserMethodDirectiveTest.java:113-128].Figure 1: Method Directive Validation Flow in AbstractParserMethodDirectiveTest.
Sources: README-extend.md:1-25, APIJSONORM/src/test/java/apijson/orm/AbstractParserMethodDirectiveTest.java:77-128
AbstractObjectParserReferenceTest)Reference parsing allows fields in a request object to reference values from other parsed objects in the same transaction using the key@ syntax (e.g., "id@": "Privacy/id") [APIJSONORM/src/test/java/apijson/orm/AbstractObjectParserReferenceTest.java:25-28]. AbstractObjectParserReferenceTest exercises how AbstractObjectParser handles resolved and unresolved references across various request methods (GET, POST, PUT, DELETE) and table vs. non-table contexts [APIJSONORM/src/test/java/apijson/orm/AbstractObjectParserReferenceTest.java:86-172].
POST and PUT table requests throw an UnsupportedOperationException (wrapped in CommonException) and halt subsequent field processing [APIJSONORM/src/test/java/apijson/orm/AbstractObjectParserReferenceTest.java:87-106].GET and DELETE requests invalidate the target table or skip execution gracefully [APIJSONORM/src/test/java/apijson/orm/AbstractObjectParserReferenceTest.java:108-131].Figure 2: Reference Resolution Validation in AbstractObjectParserReferenceTest.
Sources: APIJSONORM/src/test/java/apijson/orm/AbstractObjectParserReferenceTest.java:25-172
AbstractSQLConfigFakeDeleteTest)APIJSON supports "fake delete" functionality, where physical DELETE operations are intercepted and rewritten as PUT updates that set a specific deletion flag column (e.g., deletedFlag = 1) [APIJSONORM/src/test/java/apijson/orm/AbstractSQLConfigFakeDeleteTest.java:134-145]. AbstractSQLConfigFakeDeleteTest tests configuration validation and statement rewriting rules [APIJSONORM/src/test/java/apijson/orm/AbstractSQLConfigFakeDeleteTest.java:95-152].
AbstractVerifier.ACCESS_FAKE_DELETE_MAP throw an IllegalArgumentException [APIJSONORM/src/test/java/apijson/orm/AbstractSQLConfigFakeDeleteTest.java:108-131].DELETE request on a table configured with fake delete is successfully transformed into a RequestMethod.PUT configuration containing the designated deletion value [APIJSONORM/src/test/java/apijson/orm/AbstractSQLConfigFakeDeleteTest.java:134-145].DELETE method when fake delete is disabled on the configuration instance [APIJSONORM/src/test/java/apijson/orm/AbstractSQLConfigFakeDeleteTest.java:148-152].Figure 3: Fake Delete Rewriting Pipeline in AbstractSQLConfigFakeDeleteTest.
Sources: APIJSONORM/src/test/java/apijson/orm/AbstractSQLConfigFakeDeleteTest.java:95-152
KingbaseCompatibilityTest & KingbaseSQLDialect)KingbaseES supports multiple compatibility modes (MySQL, Oracle, SQL Server). APIJSON abstracts these differences via KingbaseSQLDialect and validates them using KingbaseCompatibilityTest [APIJSONORM/src/test/java/apijson/orm/KingbaseCompatibilityTest.java:30-172] [APIJSONORM/src/main/java/apijson/orm/KingbaseSQLDialect.java:8-86].
DATABASE_KINGBASE_MYSQL, DATABASE_KINGBASE_ORACLE, DATABASE_KINGBASE_SQLSERVER) and verifies correct quoting and syntax flags [APIJSONORM/src/test/java/apijson/orm/KingbaseCompatibilityTest.java:109-125].SELECT, INSERT, UPDATE, and DELETE across MySQL, Oracle, and SQL Server emulation modes [APIJSONORM/src/test/java/apijson/orm/KingbaseCompatibilityTest.java:128-160].regexp_like vs. ~*) [APIJSONORM/src/test/java/apijson/orm/KingbaseCompatibilityTest.java:163-171].Figure 4: Kingbase Compatibility Dialect Routing.
Sources: APIJSONORM/src/test/java/apijson/orm/KingbaseCompatibilityTest.java:30-172, APIJSONORM/src/main/java/apijson/orm/KingbaseSQLDialect.java:8-86
Refresh this wiki
This wiki was recently refreshed. Please wait 6 days to refresh again.