Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions ts-sdk/src/sdk/dag.ts
Original file line number Diff line number Diff line change
Expand Up @@ -629,6 +629,12 @@ export class Dag {
}

#placeDecider(handler: (args: never) => unknown, args: readonly unknown[]): TaskRef {
if (isTriggerDagRunTask(handler)) {
throw new Error(
`A triggerDagRun task of Dag "${this.dagId}" was given to dag.if or dag.switch, ` +
"which need a handler to decide the branch with",
);
}
const [inputs, spec] = args as [unknown, TaskOptions | undefined];
const factory = this.#addTask(undefined, handler, spec) as (...inputs: unknown[]) => TaskRef;
return inputs === undefined ? factory() : factory(inputs);
Expand Down
11 changes: 11 additions & 0 deletions ts-sdk/tests/sdk/trigger-dag-run.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,17 @@ describe("triggerDagRun", () => {
);
});

it.each(["if", "switch"] as const)("a trigger task given to dag.%s", (decider) => {
const dag = new Dag("d");
const declare = dag[decider].bind(dag) as (...args: unknown[]) => unknown;

expect(() =>
declare(triggerDagRun({ dagId: "downstream_etl" }), undefined, {
taskId: "trigger_downstream",
}),
).toThrowError(/A triggerDagRun task of Dag "d" was given to dag.if or dag.switch/);
});

it("a trigger task left uncalled, when the Dag is read", () => {
const dag = new Dag("d");
dag.task(triggerDagRun({ dagId: "downstream_etl" }), { taskId: "trigger_downstream" });
Expand Down
Loading