Add tests

This commit is contained in:
Adria Navarro 2025-01-30 11:26:05 +01:00
parent cfe296bcc9
commit 42eefddd5c
1 changed files with 116 additions and 0 deletions

View File

@ -656,6 +656,122 @@ if (descriptions.length) {
{ id: expectValidId },
])
})
it("can handle all bson field types", async () => {
collection = generator.guid()
await withCollection(async collection => {
await collection.insertOne({
_id: new BSON.ObjectId("65b0123456789abcdef01234"),
stringField: "This is a string",
numberField: 42,
doubleField: new BSON.Double(42.42),
integerField: new BSON.Int32(123),
longField: new BSON.Long("9223372036854775807"),
booleanField: true,
nullField: null,
arrayField: [1, 2, 3, "four", { nested: true }],
objectField: {
nestedString: "nested",
nestedNumber: 99,
},
dateField: { $date: "2025-01-30T12:00:00Z" },
// timestampField: new BSON.Timestamp({ t: 1706616000, i: 1 }),
binaryField: new BSON.Binary(
new TextEncoder().encode("bufferValue")
),
objectIdField: new BSON.ObjectId("65b0123456789abcdef01235"),
regexField: new BSON.BSONRegExp("^Hello.*", "i"),
minKeyField: new BSON.MinKey(),
maxKeyField: new BSON.MaxKey(),
decimalField: new BSON.Decimal128("12345.6789"),
codeField: new BSON.Code(
"function() { return 'Hello, World!'; }"
),
codeWithScopeField: new BSON.Code(
"function(x) { return x * 2; }",
{ x: 10 }
),
})
})
const query = await createQuery({
fields: {
json: {},
extra: {
actionType: "find",
collection,
},
},
transformer: "return data.map(x => ({ ...x }))",
})
const result = await config.api.query.execute(query._id!)
expect(result.data).toEqual([
{
_id: "65b0123456789abcdef01234",
arrayField: [
1,
2,
3,
"four",
{
nested: true,
},
],
binaryField: "YnVmZmVyVmFsdWU=",
booleanField: true,
codeField: {
code: "function() { return 'Hello, World!'; }",
},
codeWithScopeField: {
code: "function(x) { return x * 2; }",
scope: {
x: 10,
},
},
dateField: "2025-01-30T12:00:00.000Z",
decimalField: {
bytes: {
"0": 21,
"1": 205,
"10": 0,
"11": 0,
"12": 0,
"13": 0,
"14": 56,
"15": 48,
"2": 91,
"3": 7,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"8": 0,
"9": 0,
},
},
doubleField: 42.42,
integerField: 123,
longField: {
high: 2147483647,
low: -1,
unsigned: false,
},
maxKeyField: {},
minKeyField: {},
nullField: null,
numberField: 42,
objectField: {
nestedNumber: 99,
nestedString: "nested",
},
objectIdField: "65b0123456789abcdef01235",
regexField: {},
stringField: "This is a string",
},
])
})
})
it("should throw an error if the incorrect actionType is specified", async () => {