Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
it("init", async function() {
this.timeout(30000);
// create temp directory
const projectDir = "df/examples/init";
// Project has already been initialized via the tests script, check data is valid.
// compile project
const graph = await compile({ projectDir }).catch(error => error);
expect(graph).to.not.be.an.instanceof(Error);
const gErrors = utils.validate(graph);
expect(gErrors)
.to.have.property("compilationErrors")
.to.be.an("array").that.is.empty;
expect(gErrors)
.to.have.property("validationErrors")
.to.be.an("array").that.is.empty;
});
});
it("run", async () => {
const credentials = dfapi.credentials.read("redshift", "df/test_credentials/redshift.json");
const compiledGraph = await dfapi.compile({
projectDir: "df/tests/integration/redshift_project"
});
expect(compiledGraph.graphErrors.compilationErrors).to.eql([]);
expect(compiledGraph.graphErrors.validationErrors).to.eql([]);
const dbadapter = dbadapters.create(credentials, "redshift");
const adapter = adapters.create(compiledGraph.projectConfig);
// Redshift transactions are giving us headaches here. Drop tables sequentially.
const dropFunctions = [].concat(
compiledGraph.tables.map(table => () =>
dbadapter.execute(adapter.dropIfExists(table.target, adapter.baseTableType(table.type)))
),
compiledGraph.assertions.map(assertion => () =>
dbadapter.execute(adapter.dropIfExists(assertion.target, "view"))
)
);
await dropFunctions.reduce((promiseChain, fn) => promiseChain.then(fn), Promise.resolve());
// Run the tests.
const testResults = await dfapi.test(credentials, "redshift", compiledGraph.tests);
expect(testResults).to.eql([
{ name: "successful", successful: true },
it("run", async () => {
const credentials = dfapi.credentials.read(
"sqldatawarehouse",
"df/test_credentials/sqldatawarehouse.json"
);
const compiledGraph = await dfapi.compile({
projectDir: "df/tests/integration/sqldatawarehouse_project"
});
expect(compiledGraph.graphErrors.compilationErrors).to.eql([]);
expect(compiledGraph.graphErrors.validationErrors).to.eql([]);
const dbadapter = dbadapters.create(credentials, "sqldatawarehouse");
const adapter = adapters.create(compiledGraph.projectConfig);
// Drop all the tables before we do anything.
await dropAllTables(compiledGraph, adapter, dbadapter);
// Run the tests.
const testResults = await dfapi.test(credentials, "sqldatawarehouse", compiledGraph.tests);
expect(testResults).to.eql([
{ name: "successful", successful: true },
{
name: "expected more rows than got",
successful: false,
messages: ["Expected 3 rows, but saw 2 rows."]
},
{
name: "expected fewer columns than got",
successful: false,
it("run", async () => {
const compiledGraph = await dfapi.compile({
projectDir: "df/tests/integration/snowflake_project"
});
expect(compiledGraph.graphErrors.compilationErrors).to.eql([]);
expect(compiledGraph.graphErrors.validationErrors).to.eql([]);
const adapter = adapters.create(compiledGraph.projectConfig, compiledGraph.dataformCoreVersion);
// Drop all the tables before we do anything.
await dropAllTables(compiledGraph, adapter, dbadapter);
// Run the tests.
const testResults = await dfapi.test(credentials, "snowflake", compiledGraph.tests);
expect(testResults).to.eql([
{ name: "successful", successful: true },
{
name: "expected more rows than got",
successful: false,
messages: ["Expected 3 rows, but saw 2 rows."]
},
{
name: "expected fewer columns than got",
successful: false,
it("run", async () => {
const compiledGraph = await dfapi.compile({
projectDir: "df/tests/integration/bigquery_project"
});
expect(compiledGraph.graphErrors.compilationErrors).to.eql([]);
expect(compiledGraph.graphErrors.validationErrors).to.eql([]);
const adapter = adapters.create(compiledGraph.projectConfig, compiledGraph.dataformCoreVersion);
// Drop all the tables before we do anything.
await dropAllTables(compiledGraph, adapter, dbadapter);
// Run the tests.
const testResults = await dfapi.test(credentials, "bigquery", compiledGraph.tests);
expect(testResults).to.eql([
{ name: "successful", successful: true },
{
name: "expected more rows than got",
successful: false,
messages: ["Expected 3 rows, but saw 2 rows."]
},
{
name: "expected fewer columns than got",
successful: false,
public test(name: string): test.Test {
const newTest = new test.Test();
newTest.session = this;
newTest.proto.name = name;
newTest.proto.fileName = utils.getCallerFile(this.rootDir);
// Add it to global index.
this.tests[name] = newTest;
return newTest;
}
public test(name: string): test.Test {
const newTest = new test.Test();
newTest.session = this;
newTest.proto.name = name;
newTest.proto.fileName = utils.getCallerFile(this.rootDir);
// Add it to global index.
this.tests[name] = newTest;
return newTest;
}
public test(name: string): test.Test {
const newTest = new test.Test();
newTest.session = this;
newTest.proto.name = name;
newTest.proto.fileName = utils.getCallerFile(this.rootDir);
// Add it to global index.
this.tests[name] = newTest;
return newTest;
}
public test(name: string): test.Test {
const newTest = new test.Test();
newTest.session = this;
newTest.proto.name = name;
newTest.proto.fileName = utils.getCallerFile(this.rootDir);
// Add it to global index.
this.tests[name] = newTest;
return newTest;
}
public publishTasks(
table: dataform.ITable,
runConfig: dataform.IRunConfig,
tableMetadata: dataform.ITableMetadata
): Tasks {
const tasks = Tasks.create();
// Drop the existing view or table if we are changing it's type.
if (tableMetadata && tableMetadata.type != this.baseTableType(table.type)) {
tasks.add(
Task.statement(this.dropIfExists(table.target, this.oppositeTableType(table.type)))
);
}
if (table.type == "incremental") {
if (runConfig.fullRefresh || !tableMetadata || tableMetadata.type == "view") {
tasks.add(Task.statement(this.createOrReplace(table)));
} else {
// The table exists, insert new rows.
tasks.add(
Task.statement(
this.insertInto(
table.target,
tableMetadata.fields.map(f => f.name),
this.where(table.incrementalQuery || table.query, table.where)
)
)
);