Skip to content

Commit 08880ac

Browse files
author
nielsklumper
committed
test(previews): cover failed build and cleanup retries
1 parent e17f7ad commit 08880ac

3 files changed

Lines changed: 81 additions & 0 deletions

File tree

‎apps/dokploy/__test__/deploy/preview-build-server.test.ts‎

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ const createMockPreview = () => ({
102102
deployments: [
103103
{
104104
buildServerId: "build-server-id",
105+
status: "done",
105106
},
106107
],
107108
domain: {
@@ -230,6 +231,7 @@ describe("preview deployment build server and registry", () => {
230231
deployments: [
231232
{
232233
buildServerId: "previous-build-server-id",
234+
status: "done",
233235
},
234236
],
235237
} as any);
@@ -270,6 +272,39 @@ describe("preview deployment build server and registry", () => {
270272
deployments: [
271273
{
272274
buildServerId: null,
275+
status: "done",
276+
},
277+
],
278+
} as any);
279+
280+
await rebuildPreviewApplication({
281+
applicationId: "application-id",
282+
previewDeploymentId: "preview-id",
283+
titleLog: "Rebuild preview deployment",
284+
descriptionLog: "",
285+
});
286+
287+
expect(githubProvider.cloneGithubRepository).toHaveBeenCalledWith(
288+
expect.objectContaining({
289+
serverId: "build-server-id",
290+
appName: "preview-test-application",
291+
branch: "feature/test-preview",
292+
}),
293+
);
294+
295+
expect(execProcess.execAsyncRemote).toHaveBeenCalledWith(
296+
"build-server-id",
297+
expect.stringContaining("git clone command;"),
298+
);
299+
});
300+
301+
it("reclones after a failed deployment on the same build server", async () => {
302+
vi.mocked(previewService.findPreviewDeploymentById).mockResolvedValue({
303+
...createMockPreview(),
304+
deployments: [
305+
{
306+
buildServerId: "build-server-id",
307+
status: "error",
273308
},
274309
],
275310
} as any);

‎apps/dokploy/__test__/deploy/preview-cleanup-build-servers.test.ts‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,4 +126,25 @@ describe("preview deployment cleanup", () => {
126126
"deployment-server-id",
127127
);
128128
});
129+
130+
it("keeps preview records when cleanup on a historical build server fails", async () => {
131+
vi.mocked(directoryUtils.removeDirectoryCode).mockImplementation(
132+
async (_appName, serverId) => {
133+
if (serverId === "previous-build-server-id") {
134+
throw new Error("Historical build server is unavailable");
135+
}
136+
},
137+
);
138+
139+
await expect(removePreviewDeployment("preview-id")).rejects.toThrow(
140+
"Historical build server is unavailable",
141+
);
142+
143+
expect(directoryUtils.removeDirectoryCode).toHaveBeenCalledWith(
144+
"preview-test-application",
145+
"previous-build-server-id",
146+
);
147+
148+
expect(db.delete).not.toHaveBeenCalled();
149+
});
129150
});

‎apps/dokploy/__test__/deploy/preview-pruning-build-servers.test.ts‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ vi.mock("@dokploy/server/db", () => ({
1616
query: {
1717
deployments: {
1818
findMany: vi.fn(),
19+
findFirst: vi.fn(),
1920
},
2021
},
2122
delete: vi.fn(() => ({
@@ -76,6 +77,10 @@ describe("preview deployment pruning", () => {
7677
rollbackId: null,
7778
};
7879

80+
vi.mocked(db.query.deployments.findFirst).mockResolvedValue(
81+
prunedDeployment as any,
82+
);
83+
7984
vi.mocked(db.query.deployments.findMany).mockResolvedValue([
8085
...retainedDeployments,
8186
prunedDeployment,
@@ -137,4 +142,24 @@ describe("preview deployment pruning", () => {
137142
expect.stringContaining("Initializing deployment"),
138143
);
139144
});
145+
146+
it("keeps historical deployment records when source cleanup fails", async () => {
147+
vi.mocked(directoryUtils.removeDirectoryCode).mockRejectedValueOnce(
148+
new Error("Historical build server is unavailable"),
149+
);
150+
151+
await createDeploymentPreview({
152+
title: "Preview deployment",
153+
description: "",
154+
previewDeploymentId: "preview-id",
155+
});
156+
157+
expect(directoryUtils.removeDirectoryCode).toHaveBeenCalledWith(
158+
"preview-test-application",
159+
"previous-build-server-id",
160+
);
161+
162+
expect(db.query.deployments.findFirst).not.toHaveBeenCalled();
163+
expect(db.delete).not.toHaveBeenCalled();
164+
});
140165
});

0 commit comments

Comments
 (0)