mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-08-31 20:51:26 +00:00
Minor: fixed edit test suite pipeline issue (#16984)
This commit is contained in:
parent
e736324e4d
commit
3a9e0973fe
@ -151,3 +151,72 @@ test('TestSuite multi pipeline support', async ({ page }) => {
|
|||||||
await table.delete(apiContext);
|
await table.delete(apiContext);
|
||||||
await afterAction();
|
await afterAction();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("Edit the pipeline's test case", async ({ page }) => {
|
||||||
|
test.slow(true);
|
||||||
|
|
||||||
|
await redirectToHomePage(page);
|
||||||
|
const { apiContext, afterAction } = await getApiContext(page);
|
||||||
|
const table = new TableClass();
|
||||||
|
await table.create(apiContext);
|
||||||
|
for (let index = 0; index < 4; index++) {
|
||||||
|
await table.createTestCase(apiContext);
|
||||||
|
}
|
||||||
|
const testCaseNames = [
|
||||||
|
table.testCasesResponseData[0]?.['name'],
|
||||||
|
table.testCasesResponseData[1]?.['name'],
|
||||||
|
];
|
||||||
|
const pipeline = await table.createTestSuitePipeline(
|
||||||
|
apiContext,
|
||||||
|
testCaseNames
|
||||||
|
);
|
||||||
|
await table.visitEntityPage(page);
|
||||||
|
await page.getByText('Profiler & Data Quality').click();
|
||||||
|
await page.getByRole('menuitem', { name: 'Data Quality' }).click();
|
||||||
|
|
||||||
|
await page.getByRole('tab', { name: 'Pipeline' }).click();
|
||||||
|
await page
|
||||||
|
.getByRole('row', {
|
||||||
|
name: new RegExp(pipeline?.['name']),
|
||||||
|
})
|
||||||
|
.getByTestId('edit')
|
||||||
|
.click();
|
||||||
|
|
||||||
|
for (const testCaseName of testCaseNames) {
|
||||||
|
await expect(page.getByTestId(`checkbox-${testCaseName}`)).toBeChecked();
|
||||||
|
}
|
||||||
|
|
||||||
|
await page.getByTestId(`checkbox-${testCaseNames[0]}`).click();
|
||||||
|
|
||||||
|
await expect(
|
||||||
|
page.getByTestId(`checkbox-${testCaseNames[0]}`)
|
||||||
|
).not.toBeChecked();
|
||||||
|
|
||||||
|
await page.getByTestId('submit').click();
|
||||||
|
await page.getByTestId('deploy-button').click();
|
||||||
|
await page.waitForSelector('[data-testid="body-text"]', {
|
||||||
|
state: 'detached',
|
||||||
|
});
|
||||||
|
|
||||||
|
await expect(page.getByTestId('success-line')).toContainText(
|
||||||
|
/has been updated and deployed successfully/
|
||||||
|
);
|
||||||
|
|
||||||
|
await page.getByTestId('view-service-button').click();
|
||||||
|
|
||||||
|
await page.getByRole('tab', { name: 'Pipeline' }).click();
|
||||||
|
await page
|
||||||
|
.getByRole('row', {
|
||||||
|
name: new RegExp(pipeline?.['name']),
|
||||||
|
})
|
||||||
|
.getByTestId('edit')
|
||||||
|
.click();
|
||||||
|
|
||||||
|
await expect(
|
||||||
|
page.getByTestId(`checkbox-${testCaseNames[0]}`)
|
||||||
|
).not.toBeChecked();
|
||||||
|
await expect(page.getByTestId(`checkbox-${testCaseNames[1]}`)).toBeChecked();
|
||||||
|
|
||||||
|
await table.delete(apiContext);
|
||||||
|
await afterAction();
|
||||||
|
});
|
||||||
|
@ -99,6 +99,9 @@ export class TableClass extends EntityClass {
|
|||||||
databaseResponseData: unknown;
|
databaseResponseData: unknown;
|
||||||
schemaResponseData: unknown;
|
schemaResponseData: unknown;
|
||||||
entityResponseData: unknown;
|
entityResponseData: unknown;
|
||||||
|
testSuiteResponseData: unknown;
|
||||||
|
testSuitePipelineResponseData: unknown[] = [];
|
||||||
|
testCasesResponseData: unknown[] = [];
|
||||||
|
|
||||||
constructor(name?: string) {
|
constructor(name?: string) {
|
||||||
super(EntityTypeEndpoint.Table);
|
super(EntityTypeEndpoint.Table);
|
||||||
@ -160,7 +163,7 @@ export class TableClass extends EntityClass {
|
|||||||
|
|
||||||
async createTestSuiteAndPipelines(apiContext: APIRequestContext) {
|
async createTestSuiteAndPipelines(apiContext: APIRequestContext) {
|
||||||
if (!this.entityResponseData) {
|
if (!this.entityResponseData) {
|
||||||
return Promise.reject('Entity not created');
|
return this.create(apiContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
const testSuiteData = await apiContext
|
const testSuiteData = await apiContext
|
||||||
@ -174,24 +177,69 @@ export class TableClass extends EntityClass {
|
|||||||
})
|
})
|
||||||
.then((res) => res.json());
|
.then((res) => res.json());
|
||||||
|
|
||||||
await apiContext.post(`/api/v1/services/ingestionPipelines`, {
|
this.testSuiteResponseData = testSuiteData;
|
||||||
data: {
|
|
||||||
airflowConfig: {},
|
const pipeline = await this.createTestSuitePipeline(apiContext);
|
||||||
name: `${this.entityResponseData['fullyQualifiedName']}_test_suite`,
|
|
||||||
pipelineType: 'TestSuite',
|
return {
|
||||||
service: {
|
testSuiteData,
|
||||||
id: testSuiteData.id,
|
pipeline,
|
||||||
type: 'testSuite',
|
};
|
||||||
},
|
}
|
||||||
sourceConfig: {
|
|
||||||
config: {
|
async createTestSuitePipeline(
|
||||||
type: 'TestSuite',
|
apiContext: APIRequestContext,
|
||||||
entityFullyQualifiedName:
|
testCases?: string[]
|
||||||
this.entityResponseData['fullyQualifiedName'],
|
) {
|
||||||
|
const pipelineData = await apiContext
|
||||||
|
.post(`/api/v1/services/ingestionPipelines`, {
|
||||||
|
data: {
|
||||||
|
airflowConfig: {},
|
||||||
|
name: `pw-test-suite-pipeline-${uuid()}`,
|
||||||
|
pipelineType: 'TestSuite',
|
||||||
|
service: {
|
||||||
|
id: this.testSuiteResponseData?.['id'],
|
||||||
|
type: 'testSuite',
|
||||||
|
},
|
||||||
|
sourceConfig: {
|
||||||
|
config: {
|
||||||
|
type: 'TestSuite',
|
||||||
|
entityFullyQualifiedName:
|
||||||
|
this.entityResponseData?.['fullyQualifiedName'],
|
||||||
|
testCases,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
})
|
||||||
});
|
.then((res) => res.json());
|
||||||
|
this.testSuitePipelineResponseData.push(pipelineData);
|
||||||
|
|
||||||
|
return pipelineData;
|
||||||
|
}
|
||||||
|
|
||||||
|
async createTestCase(apiContext: APIRequestContext) {
|
||||||
|
if (!this.testSuiteResponseData) {
|
||||||
|
await this.createTestSuiteAndPipelines(apiContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
const testCase = await apiContext
|
||||||
|
.post('/api/v1/dataQuality/testCases', {
|
||||||
|
data: {
|
||||||
|
name: `pw-test-case-${uuid()}`,
|
||||||
|
entityLink: `<#E::table::${this.entityResponseData?.['fullyQualifiedName']}>`,
|
||||||
|
testDefinition: 'tableRowCountToBeBetween',
|
||||||
|
testSuite: this.testSuiteResponseData?.['fullyQualifiedName'],
|
||||||
|
parameterValues: [
|
||||||
|
{ name: 'minValue', value: 12 },
|
||||||
|
{ name: 'maxValue', value: 34 },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.then((res) => res.json());
|
||||||
|
|
||||||
|
this.testCasesResponseData.push(testCase);
|
||||||
|
|
||||||
|
return testCase;
|
||||||
}
|
}
|
||||||
|
|
||||||
async delete(apiContext: APIRequestContext) {
|
async delete(apiContext: APIRequestContext) {
|
||||||
|
@ -201,7 +201,10 @@ export const AddTestCaseList = ({
|
|||||||
{getEntityName(test)}
|
{getEntityName(test)}
|
||||||
</Typography.Paragraph>
|
</Typography.Paragraph>
|
||||||
|
|
||||||
<Checkbox checked={selectedItems?.has(test.id ?? '')} />
|
<Checkbox
|
||||||
|
checked={selectedItems?.has(test.id ?? '')}
|
||||||
|
data-testid={`checkbox-${test.name}`}
|
||||||
|
/>
|
||||||
</Space>
|
</Space>
|
||||||
<Typography.Paragraph
|
<Typography.Paragraph
|
||||||
className="m-0 w-max-500"
|
className="m-0 w-max-500"
|
||||||
|
@ -120,7 +120,7 @@ const TestSuiteIngestionPage = () => {
|
|||||||
|
|
||||||
const handleAddTestSubmit = (testCases: TestCase[]) => {
|
const handleAddTestSubmit = (testCases: TestCase[]) => {
|
||||||
const testCaseNames = testCases.map((testCase) => testCase.name);
|
const testCaseNames = testCases.map((testCase) => testCase.name);
|
||||||
setTestCases((pre) => uniq([...pre, ...testCaseNames]));
|
setTestCases(uniq(testCaseNames));
|
||||||
setActiveServiceStep(2);
|
setActiveServiceStep(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user