Skip to content

Commit

Permalink
add E2E tests for deposition ID filter
Browse files Browse the repository at this point in the history
  • Loading branch information
kne42 committed Aug 27, 2024
1 parent 8f1eb47 commit e9746c2
Show file tree
Hide file tree
Showing 7 changed files with 368 additions and 1 deletion.
4 changes: 4 additions & 0 deletions frontend/packages/data-portal/app/constants/idPrefixes.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export enum IdPrefix {
Deposition = 'CZCDP-',
GeneOntology = 'GO:',
}
120 changes: 119 additions & 1 deletion frontend/packages/data-portal/e2e/browseDatasetFilters.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@ import { ApolloClient, NormalizedCacheObject } from '@apollo/client'
import { test } from '@playwright/test'
import { FiltersActor } from 'e2e/pageObjects/filters/filtersActor'
import { FiltersPage } from 'e2e/pageObjects/filters/filtersPage'
import { serializeAvailableFiles } from 'e2e/pageObjects/filters/utils'
import {
getPrefixedId,
serializeAvailableFiles,
} from 'e2e/pageObjects/filters/utils'

import { QueryParams } from 'app/constants/query'

Expand Down Expand Up @@ -1124,6 +1127,121 @@ test.describe('Browse datasets page filters', () => {
})
})

test.describe('Deposition IDs filter group', () => {
test.describe('Deposition ID filter', () => {
test('should filter when selecting', async () => {
await filtersPage.goTo(BROWSE_DATASETS_URL)

await filtersActor.addMultiInputFilter({
buttonLabel: translations.depositionId,
filter: {
label: translations.depositionId,
value: E2E_CONFIG.depositionId,
},
hasMultipleFilters: false,
})

await filtersActor.expectUrlQueryParamsToBeCorrect({
url: BROWSE_DATASETS_URL,
queryParamsList: [
{
queryParamKey: QueryParams.DepositionId,
queryParamValue: E2E_CONFIG.depositionId,
},
],
})

await filtersPage.expectFilterTagToExist(
getPrefixedId({
id: E2E_CONFIG.depositionId,
prefixKey: 'Deposition',
}),
)

// TODO: (kne42) uncomment when hooked up to backend
// await filtersActor.expectDataAndDatasetsTableToMatch({
// client,
// url: BROWSE_DATASETS_URL,
// queryParamsList: [
// {
// queryParamKey: QueryParams.DepositionId,
// queryParamValue: E2E_CONFIG.depositionId,
// },
// ],
// })
})
test('should filter when opening URL', async () => {
await filtersActor.goToFilteredUrl({
baseUrl: BROWSE_DATASETS_URL,
queryParamsList: [
{
queryParamKey: QueryParams.DepositionId,
queryParamValue: E2E_CONFIG.depositionId,
},
],
})

await filtersPage.expectFilterTagToExist(
getPrefixedId({
id: E2E_CONFIG.depositionId,
prefixKey: 'Deposition',
}),
)

// TODO: (kne42) uncomment when hooked up to backend
// await filtersActor.expectDataAndDatasetsTableToMatch({
// client,
// url: BROWSE_DATASETS_URL,
// queryParamsList: [
// {
// queryParamKey: QueryParams.DepositionId,
// queryParamValue: E2E_CONFIG.depositionId,
// },
// ],
// })
})
test('should disable filter when deselecting', async () => {
await filtersActor.goToFilteredUrl({
baseUrl: BROWSE_DATASETS_URL,
queryParamsList: [
{
queryParamKey: QueryParams.DepositionId,
queryParamValue: E2E_CONFIG.depositionId,
},
],
})

await filtersPage.removeMultiInputFilter(
getPrefixedId({
id: E2E_CONFIG.depositionId,
prefixKey: 'Deposition',
}),
)

await filtersActor.expectUrlQueryParamsToBeCorrect({
url: BROWSE_DATASETS_URL,
queryParamsList: [
{
queryParamKey: undefined,
queryParamValue: '',
},
],
})

await filtersActor.expectDataAndDatasetsTableToMatch({
client,
url: BROWSE_DATASETS_URL,
queryParamsList: [
{
queryParamKey: undefined,
queryParamValue: '',
},
],
})
})
})
})

// TODO: (ehoops) add multi-select filter tests
test.describe('Organism Name filter', () => {
test.describe('Selecting one organism', () => {
Expand Down
1 change: 1 addition & 0 deletions frontend/packages/data-portal/e2e/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"authorOrcId": "<orc-id>",
"cameraManufacturer": "FEI",
"datasetId": "10001",
"depositionId": "10000",
"emdbId": "17241",
"empiarId": "11221",
"goId": "0005835",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,10 @@ export class FiltersPage extends BasePage {
// #endregion Macro

// #region Validation
public async expectFilterTagToExist(label: string) {
await expect(this.page.locator(`span:has-text("${label}")`)).toBeVisible()
}

public async expectNavigationToMatch(expectedUrl: string) {
await this.page.waitForURL(expectedUrl)
}
Expand Down
11 changes: 11 additions & 0 deletions frontend/packages/data-portal/e2e/pageObjects/filters/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
GetRunByIdQuery,
} from 'app/__generated__/graphql'
import { AVAILABLE_FILES_VALUE_TO_I18N_MAP } from 'app/components/DatasetFilter/constants'
import { IdPrefix } from 'app/constants/idPrefixes'

import { QueryParamObjectType, RowCounterType } from './types'

Expand Down Expand Up @@ -71,6 +72,16 @@ export function getExpectedTotalCount({
)
}

export function getPrefixedId({
id,
prefixKey,
}: {
id: string
prefixKey: keyof typeof IdPrefix
}): string {
return `${IdPrefix[prefixKey]}${id}`
}

// #Region runPage
export function getAnnotationRowCountFromData({
singleRunData,
Expand Down
116 changes: 116 additions & 0 deletions frontend/packages/data-portal/e2e/singleDatasetFilters.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { ApolloClient, NormalizedCacheObject } from '@apollo/client'
import { test } from '@playwright/test'
import { FiltersActor } from 'e2e/pageObjects/filters/filtersActor'
import { FiltersPage } from 'e2e/pageObjects/filters/filtersPage'
import { getPrefixedId } from 'e2e/pageObjects/filters/utils'

import { QueryParams } from 'app/constants/query'

Expand Down Expand Up @@ -106,6 +107,121 @@ test.describe('Single dataset page filters', () => {
})
})
})
test.describe('Deposition ID filter', () => {
test('should filter when selecting', async () => {
await filtersPage.goTo(SINGLE_DATASET_URL)

await filtersActor.addMultiInputFilter({
buttonLabel: translations.depositionId,
filter: {
label: translations.depositionId,
value: E2E_CONFIG.depositionId,
},
hasMultipleFilters: false,
})

await filtersActor.expectUrlQueryParamsToBeCorrect({
url: SINGLE_DATASET_URL,
queryParamsList: [
{
queryParamKey: QueryParams.DepositionId,
queryParamValue: E2E_CONFIG.depositionId,
},
],
})

await filtersPage.expectFilterTagToExist(
getPrefixedId({
id: E2E_CONFIG.depositionId,
prefixKey: 'Deposition',
}),
)

// TODO: (kne42) uncomment this when hooked up to backend
// await filtersActor.expectDataAndRunsTableToMatch({
// client,
// id: +E2E_CONFIG.datasetId,
// url: SINGLE_DATASET_URL,
// queryParamsList: [
// {
// queryParamKey: QueryParams.DepositionId,
// queryParamValue: E2E_CONFIG.depositionId,
// },
// ],
// })
})
test('should filter by deposition ID when opening URL', async () => {
await filtersActor.goToFilteredUrl({
baseUrl: SINGLE_DATASET_URL,
queryParamsList: [
{
queryParamKey: QueryParams.DepositionId,
queryParamValue: E2E_CONFIG.depositionId,
},
],
})

await filtersPage.expectFilterTagToExist(
getPrefixedId({
id: E2E_CONFIG.depositionId,
prefixKey: 'Deposition',
}),
)

// TODO: (kne42) uncomment this when hooked up to backend
// await filtersActor.expectDataAndRunsTableToMatch({
// client,
// id: +E2E_CONFIG.datasetId,
// url: SINGLE_DATASET_URL,
// queryParamsList: [
// {
// queryParamKey: QueryParams.DepositionId,
// queryParamValue: E2E_CONFIG.depositionId,
// },
// ],
// })
})
test('should remove filter when deselecting', async () => {
await filtersActor.goToFilteredUrl({
baseUrl: SINGLE_DATASET_URL,
queryParamsList: [
{
queryParamKey: QueryParams.DepositionId,
queryParamValue: E2E_CONFIG.depositionId,
},
],
})

await filtersPage.removeMultiInputFilter(
getPrefixedId({
id: E2E_CONFIG.depositionId,
prefixKey: 'Deposition',
}),
)

await filtersActor.expectUrlQueryParamsToBeCorrect({
url: SINGLE_DATASET_URL,
queryParamsList: [
{
queryParamKey: undefined,
queryParamValue: '',
},
],
})

await filtersActor.expectDataAndRunsTableToMatch({
client,
id: +E2E_CONFIG.datasetId,
url: SINGLE_DATASET_URL,
queryParamsList: [
{
queryParamKey: undefined,
queryParamValue: '',
},
],
})
})
})
test.describe('Object Name filter', () => {
test('should filter when selecting', async () => {
await filtersPage.goTo(SINGLE_DATASET_URL)
Expand Down
Loading

0 comments on commit e9746c2

Please sign in to comment.