azure-cosmos-js/test/functional/udf.spec.ts

74 строки
2.7 KiB
TypeScript

import assert from "assert";
import { UserDefinedFunctionDefinition, Container } from "../../dist-esm/client";
import { removeAllDatabases, getTestContainer } from "../common/TestHelpers";
describe("User Defined Function", function() {
this.timeout(process.env.MOCHA_TIMEOUT || 10000);
let container: Container;
beforeEach(async function() {
await removeAllDatabases();
// get container
container = await getTestContainer("UDFTests");
});
it("nativeApi Should do UDF CRUD operations successfully", async function() {
const { resources: udfs } = await container.scripts.userDefinedFunctions.readAll().fetchAll();
// create a udf
const beforeCreateUdfsCount = udfs.length;
const udfDefinition: UserDefinedFunctionDefinition = {
id: "sample udf",
body: "function () { const x = 10; }"
};
// TODO also handle upsert case
const { resource: udf } = await container.scripts.userDefinedFunctions.create(udfDefinition);
assert.equal(udf.id, udfDefinition.id);
assert.equal(udf.body, "function () { const x = 10; }");
// read udfs after creation
const { resources: udfsAfterCreate } = await container.scripts.userDefinedFunctions.readAll().fetchAll();
assert.equal(udfsAfterCreate.length, beforeCreateUdfsCount + 1, "create should increase the number of udfs");
// query udfs
const querySpec = {
query: "SELECT * FROM root r WHERE r.id=@id",
parameters: [
{
name: "@id",
value: udfDefinition.id
}
]
};
const { resources: results } = await container.scripts.userDefinedFunctions.query(querySpec).fetchAll();
assert(results.length > 0, "number of results for the query should be > 0");
// replace udf
udfDefinition.body = "function () { const x = 10; }";
const { resource: replacedUdf } = await container.scripts
.userDefinedFunction(udfDefinition.id)
.replace(udfDefinition);
assert.equal(replacedUdf.id, udfDefinition.id);
assert.equal(replacedUdf.body, "function () { const x = 10; }");
// read udf
const { resource: udfAfterReplace } = await container.scripts.userDefinedFunction(replacedUdf.id).read();
assert.equal(replacedUdf.id, udfAfterReplace.id);
// delete udf
const { resource: res } = await container.scripts.userDefinedFunction(replacedUdf.id).delete();
// read udfs after deletion
try {
const { resource: badudf } = await container.scripts.userDefinedFunction(replacedUdf.id).read();
assert.fail("Must fail to read after delete");
} catch (err) {
const notFoundErrorCode = 404;
assert.equal(err.code, notFoundErrorCode, "response should return error code 404");
}
});
});