Implemented test run deletion
This commit is contained in:
@@ -79,11 +79,13 @@ app.use("/attachments", attachmentsDownloadRoute);
|
||||
|
||||
// "/runs"
|
||||
const runsIndexRoute = require("./routes/runs/index")(sequelize);
|
||||
const runsShowRoute = require("./routes/cases/show")(sequelize);
|
||||
const runsShowRoute = require("./routes/runs/show")(sequelize);
|
||||
const runsNewRoute = require("./routes/runs/new")(sequelize);
|
||||
const runDeleteRoute = require("./routes/runs/delete")(sequelize);
|
||||
app.use("/runs", runsIndexRoute);
|
||||
app.use("/runs", runsShowRoute);
|
||||
app.use("/runs", runsNewRoute);
|
||||
app.use("/runs", runDeleteRoute);
|
||||
|
||||
const PORT = process.env.PORT || 3001;
|
||||
app.listen(PORT, () => {
|
||||
|
||||
25
backend/routes/runs/delete.js
Normal file
25
backend/routes/runs/delete.js
Normal file
@@ -0,0 +1,25 @@
|
||||
const express = require("express");
|
||||
const router = express.Router();
|
||||
const defineRun = require("../../models/runs");
|
||||
const { DataTypes } = require("sequelize");
|
||||
|
||||
module.exports = function (sequelize) {
|
||||
const Run = defineRun(sequelize, DataTypes);
|
||||
|
||||
router.delete("/:runId", async (req, res) => {
|
||||
const runId = req.params.runId;
|
||||
try {
|
||||
const testrun = await Run.findByPk(runId);
|
||||
if (!testrun) {
|
||||
return res.status(404).send("Run not found");
|
||||
}
|
||||
await testrun.destroy();
|
||||
res.status(204).send();
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
res.status(500).send("Internal Server Error");
|
||||
}
|
||||
});
|
||||
|
||||
return router;
|
||||
};
|
||||
@@ -54,8 +54,8 @@ module.exports = {
|
||||
{
|
||||
name: "Run 1",
|
||||
projectId: 1,
|
||||
configurations: null,
|
||||
description: null,
|
||||
configurations: 1,
|
||||
description: "",
|
||||
state: 1,
|
||||
createdAt: new Date(),
|
||||
updatedAt: new Date(),
|
||||
@@ -63,8 +63,8 @@ module.exports = {
|
||||
{
|
||||
name: "Run 2",
|
||||
projectId: 1,
|
||||
configurations: null,
|
||||
description: null,
|
||||
configurations: 1,
|
||||
description: "",
|
||||
state: 1,
|
||||
createdAt: new Date(),
|
||||
updatedAt: new Date(),
|
||||
@@ -72,8 +72,8 @@ module.exports = {
|
||||
{
|
||||
name: "Run 3",
|
||||
projectId: 1,
|
||||
configurations: null,
|
||||
description: null,
|
||||
configurations: 1,
|
||||
description: "",
|
||||
state: 1,
|
||||
createdAt: new Date(),
|
||||
updatedAt: new Date(),
|
||||
|
||||
@@ -39,7 +39,8 @@ export default function RunsPage({ projectId }: Props) {
|
||||
const onDeleteClick = async (runId: number) => {
|
||||
try {
|
||||
await deleteRun(runId);
|
||||
setRuns(runs.filter((run) => run.id !== runId));
|
||||
const data = await fetchRuns(projectId);
|
||||
setRuns(data);
|
||||
} catch (error) {
|
||||
console.error("Error deleting run:", error);
|
||||
}
|
||||
|
||||
@@ -140,7 +140,7 @@ export default function RunsTable({ projectId, runs, onDeleteRun }: Props) {
|
||||
</TableColumn>
|
||||
)}
|
||||
</TableHeader>
|
||||
<TableBody emptyContent={"No cases found"} items={sortedItems}>
|
||||
<TableBody emptyContent={"No runs found"} items={sortedItems}>
|
||||
{(item) => (
|
||||
<TableRow key={item.id}>
|
||||
{(columnKey) => (
|
||||
|
||||
@@ -17,7 +17,7 @@ import { fetchRun, updateRun } from "../runsControl";
|
||||
|
||||
const defaultTestRun = {
|
||||
id: 0,
|
||||
title: "",
|
||||
name: "",
|
||||
configurations: 0,
|
||||
description: "",
|
||||
state: 0,
|
||||
@@ -31,7 +31,7 @@ type Props = {
|
||||
|
||||
export default function RunEditor({ projectId, runId }: Props) {
|
||||
const [testRun, setTestRun] = useState<RunType>(defaultTestRun);
|
||||
const [isTitleInvalid, setIsTitleInvalid] = useState<boolean>(false);
|
||||
const [isNameInvalid, setIsNameInvalid] = useState<boolean>(false);
|
||||
const [isUpdating, setIsUpdating] = useState<boolean>(false);
|
||||
const router = useRouter();
|
||||
|
||||
@@ -62,7 +62,7 @@ export default function RunEditor({ projectId, runId }: Props) {
|
||||
<ArrowLeft size={16} />
|
||||
</Button>
|
||||
</Tooltip>
|
||||
<h3 className="font-bold ms-2">{testRun.title}</h3>
|
||||
<h3 className="font-bold ms-2">{testRun.name}</h3>
|
||||
</div>
|
||||
<Button
|
||||
startContent={<Save size={16} />}
|
||||
@@ -84,12 +84,12 @@ export default function RunEditor({ projectId, runId }: Props) {
|
||||
size="sm"
|
||||
type="text"
|
||||
variant="bordered"
|
||||
label="Title"
|
||||
value={testRun.title}
|
||||
isInvalid={isTitleInvalid}
|
||||
errorMessage={isTitleInvalid ? "please enter title" : ""}
|
||||
label="Name"
|
||||
value={testRun.name}
|
||||
isInvalid={isNameInvalid}
|
||||
errorMessage={isNameInvalid ? "please enter name" : ""}
|
||||
onChange={(e) => {
|
||||
setTestRun({ ...testRun, title: e.target.value });
|
||||
setTestRun({ ...testRun, name: e.target.value });
|
||||
}}
|
||||
className="mt-3"
|
||||
/>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
export type RunType = {
|
||||
id: number;
|
||||
title: string;
|
||||
name: string;
|
||||
configurations: number;
|
||||
description: string;
|
||||
state: number;
|
||||
|
||||
Reference in New Issue
Block a user