mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-11-01 19:18:05 +00:00
fix explore sort test (#23414)
(cherry picked from commit 97da6e28ad841855eab8c58de2b7944b917dad44)
This commit is contained in:
parent
cee4556598
commit
f3e6a9b95a
@ -94,7 +94,6 @@ test.describe('Explore Sort Order Filter', () => {
|
||||
await page.getByTestId('update-btn').click();
|
||||
|
||||
await selectSortOrder(page, 'Name');
|
||||
await page.waitForLoadState('networkidle');
|
||||
await verifyEntitiesAreSorted(page);
|
||||
|
||||
const clearFilters = page.getByTestId('clear-filters');
|
||||
|
||||
@ -257,31 +257,42 @@ export const selectSortOrder = async (page: Page, sortOrder: string) => {
|
||||
await page.waitForSelector(`role=menuitem[name="${sortOrder}"]`, {
|
||||
state: 'visible',
|
||||
});
|
||||
const nameFilter = page.waitForResponse(
|
||||
`/api/v1/search/query?q=&index=dataAsset&*sort_field=displayName.keyword&sort_order=desc*`
|
||||
);
|
||||
await page.getByRole('menuitem', { name: sortOrder }).click();
|
||||
await nameFilter;
|
||||
|
||||
await expect(page.getByTestId('sorting-dropdown-label')).toHaveText(
|
||||
sortOrder
|
||||
);
|
||||
|
||||
const ascSortOrder = page.waitForResponse(
|
||||
`/api/v1/search/query?q=&index=dataAsset&*sort_field=displayName.keyword&sort_order=asc*`
|
||||
);
|
||||
await page.getByTestId('sort-order-button').click();
|
||||
await ascSortOrder;
|
||||
await page.waitForSelector('[data-testid="loader"]', { state: 'detached' });
|
||||
};
|
||||
|
||||
export const verifyEntitiesAreSorted = async (page: Page) => {
|
||||
// Wait for search results to be stable after sort
|
||||
await page.waitForSelector('[data-testid="search-results"]', {
|
||||
state: 'visible',
|
||||
});
|
||||
await page.waitForLoadState('networkidle');
|
||||
|
||||
const entityNames = await page.$$eval(
|
||||
'[data-testid="search-results"] .explore-search-card [data-testid="entity-link"]',
|
||||
(elements) => elements.map((el) => el.textContent?.trim() ?? '')
|
||||
);
|
||||
|
||||
// Normalize for case insensitivity, but retain punctuation
|
||||
const normalize = (str: string) => str.toLowerCase().trim();
|
||||
|
||||
// Sort using ASCII-based string comparison (ES behavior)
|
||||
// Elasticsearch keyword field with case-insensitive sorting
|
||||
const sortedEntityNames = [...entityNames].sort((a, b) => {
|
||||
const normA = normalize(a);
|
||||
const normB = normalize(b);
|
||||
const aLower = a.toLowerCase();
|
||||
const bLower = b.toLowerCase();
|
||||
|
||||
return normA < normB ? -1 : normA > normB ? 1 : 0;
|
||||
return aLower < bLower ? -1 : aLower > bLower ? 1 : 0;
|
||||
});
|
||||
|
||||
expect(entityNames).toEqual(sortedEntityNames);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user