Skip to content

Commit

Permalink
Finish tests
Browse files Browse the repository at this point in the history
Signed-off-by: Mike Turley <mike.turley@alum.cs.umass.edu>
  • Loading branch information
mturley committed Aug 14, 2024
1 parent 4c660dd commit 53bfe29
Show file tree
Hide file tree
Showing 7 changed files with 290 additions and 68 deletions.
2 changes: 1 addition & 1 deletion frontend/src/__mocks__/mockModelArtifact.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { ModelArtifact } from '~/concepts/modelRegistry/types';

export const mockModelArtifact = (partial?: Partial<ModelArtifact>): ModelArtifact => ({
...partial,
createTimeSinceEpoch: '1712234877179',
id: '1',
lastUpdateTimeSinceEpoch: '1712234877179',
Expand All @@ -14,4 +13,5 @@ export const mockModelArtifact = (partial?: Partial<ModelArtifact>): ModelArtifa
uri: 's3://test-bucket/demo-models/test-path?endpoint=test-endpoint&defaultRegion=test-region',
modelFormatName: 'test model format',
modelFormatVersion: 'test version 1',
...partial,
});
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export enum FormFieldSelector {
REGISTERED_MODEL = '#registered-model',
REGISTERED_MODEL = '#registered-model-container .pf-m-typeahead',
VERSION_NAME = '#version-name',
VERSION_DESCRIPTION = '#version-description',
SOURCE_MODEL_FORMAT = '#source-model-format',
Expand Down Expand Up @@ -28,14 +28,21 @@ class RegisterVersionPage {
const preferredModelRegistry = 'modelregistry-sample';
cy.findByTestId('app-page-title').should('exist');
cy.findByTestId('app-page-title').contains('Register new version');
cy.findByText(preferredModelRegistry).should('exist');
cy.findByText(`Model registry - ${preferredModelRegistry}`).should('exist');
cy.testA11y();
}

findFormField(selector: FormFieldSelector) {
return cy.get(selector);
}

selectRegisteredModel(name: string) {
this.findFormField(FormFieldSelector.REGISTERED_MODEL)
.findByRole('button', { name: 'Typeahead menu toggle' })
.findSelectOption(name)
.click();
}

findSubmitButton() {
return cy.findByTestId('create-button');
}
Expand Down

Large diffs are not rendered by default.

25 changes: 25 additions & 0 deletions frontend/src/concepts/modelRegistry/__tests__/utils.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {
filterArchiveVersions,
filterLiveModels,
filterLiveVersions,
getLastCreatedItem,
ObjectStorageFields,
objectStorageFieldsToUri,
uriToObjectStorageFields,
Expand Down Expand Up @@ -128,6 +129,30 @@ describe('uriToObjectStorageFields', () => {
});
});

describe('getLastCreatedItem', () => {
it('returns the latest item correctly', () => {
const items = [
{
foo: 'a',
createTimeSinceEpoch: '1712234877179', // Apr 04 2024
},
{
foo: 'b',
createTimeSinceEpoch: '1723659611927', // Aug 14 2024
},
];
expect(getLastCreatedItem(items)).toBe(items[1]);
});

it('returns first item if items have no createTimeSinceEpoch', () => {
const items = [
{ foo: 'a', createTimeSinceEpoch: undefined },
{ foo: 'b', createTimeSinceEpoch: undefined },
];
expect(getLastCreatedItem(items)).toBe(items[0]);
});
});

describe('Filter model state', () => {
const models: RegisteredModel[] = [
mockRegisteredModel({ name: 'Test 1', state: ModelState.ARCHIVED }),
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/concepts/modelRegistry/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ export const getLastCreatedItem = <T extends { createTimeSinceEpoch?: string }>(
if (!createTimeA || !createTimeB) {
return 0;
}
return new Date(createTimeB).getTime() - new Date(createTimeA).getTime();
return Number(createTimeB) - Number(createTimeA);
},
)[0];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ const RegisterVersion: React.FC = () => {
breadcrumb={
<Breadcrumb>
<BreadcrumbItem
render={() => <Link to={modelRegistryUrl(mrName)}>Registered models - {mrName}</Link>}
render={() => <Link to={modelRegistryUrl(mrName)}>Model registry - {mrName}</Link>}
/>
{prefilledRegisteredModelId && registeredModel && (
<BreadcrumbItem
Expand Down Expand Up @@ -104,6 +104,7 @@ const RegisterVersion: React.FC = () => {
</StackItem>
<StackItem className={spacing.mbLg}>
<FormGroup
id="registered-model-container"
label="Model name"
isRequired
fieldId="model-name"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ const RegisteredModelSelector: React.FC<RegisteredModelSelectorProps> = ({
isDisabled
isRequired
type="text"
id="registered-model-prefilled"
id="model-name"
name="registered-model-prefilled"
value={options.find(({ value }) => value === registeredModelId)?.content}
/>
Expand All @@ -46,7 +46,7 @@ const RegisteredModelSelector: React.FC<RegisteredModelSelectorProps> = ({

return (
<TypeaheadSelect
id="registered-model"
id="model-name"
initialOptions={options}
placeholder="Select a registered model"
noOptionsFoundMessage={(filter) => `No results found for "${filter}"`}
Expand Down

0 comments on commit 53bfe29

Please # to comment.