Add $first accumulator tests#228
Conversation
|
🤖 Auto-triaged by documentdb-triage-tool. Applied: Reasoningcomponent from path globs (test-coverage, test-framework); effort from diff stats (926+2 LOC, 6 files); LLM: Adds new integration test coverage for the $first accumulator operator under the compatibility tests path, a functional improvement to test quality. If a label is wrong, remove it manually and ping |
|
applied #214 (review): Add tests: arity tests, BSON constant tests, expression tests, expression error propagation, empty-group behavior, and order dependence tests |
Signed-off-by: Alina (Xi) Li <Alina.Li@improving.com>
|
|
||
| # Property [BSON Type Preservation]: $first returns the first document's | ||
| # value with its BSON type preserved exactly. | ||
| FIRST_BSON_TYPE_TESTS: list[AccumulatorTestCase] = [ |
There was a problem hiding this comment.
Flakiness in FIRST_BSON_TYPE_TESTS and FIRST_SPECIAL_NUMERIC_TESTS
All 17 BSON-type tests have shape docs=[{"v": }, {"v": 999}] and assert the typed value. Same
issue: no $sort, so "first" is whatever the engine returns.
[Required] Either:
- Add _id to each doc and {"$sort": {"_id": 1}} before $group,
Update generared files with initial change Signed-off-by: Alina (Xi) Li <Alina.Li@improving.com>
Signed-off-by: Alina (Xi) Li <Alina.Li@improving.com>
Signed-off-by: Alina (Xi) Li <Alina.Li@improving.com>
Signed-off-by: Alina (Xi) Li <Alina.Li@improving.com>
Signed-off-by: Alina (Xi) Li <Alina.Li@improving.com>
Signed-off-by: Alina (Xi) Li <Alina.Li@improving.com>
Signed-off-by: Alina (Xi) Li <Alina.Li@improving.com>
Signed-off-by: Alina (Xi) Li <Alina.Li@improving.com>
Add tests: arity tests, BSON constant tests, expression tests, expression error propogation, empty-group behavior, and order dependence tests Signed-off-by: Alina (Xi) Li <Alina.Li@improving.com>
| "special_float_nan", | ||
| docs=[{"v": FLOAT_NAN}, {"v": 999}], | ||
| pipeline=[{"$group": {"_id": None, "result": {"$first": "$v"}}}], | ||
| expected=[{"_id": None, "result": pytest.approx(math.nan, nan_ok=True)}], |
There was a problem hiding this comment.
pytest.approx(math.nan, nan_ok=True) is wrong helper here, The framework already has its own NaN-equality handling — _replace_nan at assertions.py:323
This change adds tests for the $first accumulator operator.
Add accumulator operator tests for $first. Tests database $first behavior, output collection, syntax, and expected errors.
Integration tests are in
documentdb_tests/compatibility/tests/core/operator/accumulators/test_accumulators_first_integration.py