fix: test runs can be managed separately (#321)
This commit is contained in:
@@ -25,14 +25,24 @@ export default function (sequelize) {
|
||||
RunCase.belongsTo(Case, { foreignKey: 'caseId' });
|
||||
const { verifySignedIn } = authMiddleware(sequelize);
|
||||
const { verifyProjectVisibleFromProjectId } = visibilityMiddleware(sequelize);
|
||||
const { verifyProjectVisibleFromRunId } = visibilityMiddleware(sequelize);
|
||||
|
||||
router.get('/byproject', verifySignedIn, verifyProjectVisibleFromProjectId, async (req, res) => {
|
||||
const { projectId } = req.query;
|
||||
router.get(
|
||||
'/byproject',
|
||||
verifySignedIn,
|
||||
verifyProjectVisibleFromProjectId,
|
||||
verifyProjectVisibleFromRunId,
|
||||
async (req, res) => {
|
||||
const { projectId, runId } = req.query;
|
||||
|
||||
if (!projectId) {
|
||||
return res.status(400).json({ error: 'projectId is required' });
|
||||
}
|
||||
|
||||
if (!runId) {
|
||||
return res.status(400).json({ error: 'runId is required' });
|
||||
}
|
||||
|
||||
try {
|
||||
const cases = await Case.findAll({
|
||||
include: [
|
||||
@@ -46,6 +56,10 @@ export default function (sequelize) {
|
||||
{
|
||||
model: RunCase,
|
||||
attributes: ['id', 'runId', 'status'],
|
||||
required: false,
|
||||
where: {
|
||||
runId: runId,
|
||||
},
|
||||
},
|
||||
{
|
||||
model: Tags,
|
||||
@@ -59,7 +73,8 @@ export default function (sequelize) {
|
||||
console.error(error);
|
||||
res.status(500).send('Internal Server Error');
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
return router;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
import express from 'express';
|
||||
const router = express.Router();
|
||||
import { DataTypes } from 'sequelize';
|
||||
import defineProject from '../../models/projects.js';
|
||||
import defineFolder from '../../models/folders.js';
|
||||
import defineRun from '../../models/runs.js';
|
||||
import defineRunCase from '../../models/runCases.js';
|
||||
import defineCase from '../../models/cases.js';
|
||||
import authMiddleware from '../../middleware/auth.js';
|
||||
import editableMiddleware from '../../middleware/verifyEditable.js';
|
||||
|
||||
@@ -9,6 +13,15 @@ export default function (sequelize) {
|
||||
const { verifySignedIn } = authMiddleware(sequelize);
|
||||
const { verifyProjectReporterFromProjectId } = editableMiddleware(sequelize);
|
||||
const Run = defineRun(sequelize, DataTypes);
|
||||
const RunCase = defineRunCase(sequelize, DataTypes);
|
||||
const Case = defineCase(sequelize, DataTypes);
|
||||
const Project = defineProject(sequelize, DataTypes);
|
||||
const Folder = defineFolder(sequelize, DataTypes);
|
||||
Project.hasMany(Folder, { foreignKey: 'projectId' });
|
||||
Folder.hasMany(Case, { foreignKey: 'folderId' });
|
||||
Folder.belongsTo(Project, { foreignKey: 'projectId' });
|
||||
Case.belongsTo(Folder, { foreignKey: 'folderId' });
|
||||
Case.hasMany(RunCase, { foreignKey: 'caseId' });
|
||||
|
||||
router.post('/', verifySignedIn, verifyProjectReporterFromProjectId, async (req, res) => {
|
||||
try {
|
||||
|
||||
@@ -112,7 +112,7 @@ export default function RunEditor({
|
||||
};
|
||||
|
||||
const initTestCases = async () => {
|
||||
const casesData = await fetchProjectCases(tokenContext.token.access_token, Number(projectId));
|
||||
const casesData = await fetchProjectCases(tokenContext.token.access_token, Number(projectId), Number(runId));
|
||||
casesData.forEach((testCase: CaseType) => {
|
||||
if (testCase.RunCases && testCase.RunCases.length > 0) {
|
||||
testCase.RunCases[0].editState = 'notChanged';
|
||||
|
||||
@@ -315,8 +315,8 @@ async function updateRunCases(jwt: string, runId: number, testCases: CaseType[])
|
||||
}
|
||||
}
|
||||
|
||||
async function fetchProjectCases(jwt: string, projectId: number) {
|
||||
const url = `${apiServer}/cases/byproject?projectId=${projectId}`;
|
||||
async function fetchProjectCases(jwt: string, projectId: number, runId: number) {
|
||||
const url = `${apiServer}/cases/byproject?projectId=${projectId}&runId=${runId}`;
|
||||
|
||||
try {
|
||||
const response = await fetch(url, {
|
||||
|
||||
Reference in New Issue
Block a user