Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
218 changes: 218 additions & 0 deletions cypress/e2e/datasets/datasets-metadata.cy.js
Original file line number Diff line number Diff line change
Expand Up @@ -769,6 +769,224 @@ describe("Datasets", () => {
cy.contains(`unitSI: "${metadata.unitSI}"`).should("exist");
});
});

it("should be able to add a metadata entry with type 'number'", () => {
const newMetadataName = "Cypress dataset number metadata";
const metadata = {
value: "2010",
name: "number_metadata",
human_name: "Number test",
type: "number",
};
cy.createDataset({
type: "raw",
dataFileSize: "small",
datasetName: newMetadataName,
});

cy.visit("/datasets");

cy.get(".dataset-table mat-table mat-header-row").should("exist");

cy.finishedLoading();

cy.get('[data-cy="text-search"]').clear().type(newMetadataName);
cy.get('[data-cy="search-button"]').click();

cy.isLoading();

cy.get("mat-row").contains(newMetadataName).first().click();

cy.wait("@fetch");

cy.finishedLoading();

cy.scrollTo("bottom");

cy.get('[role="tab"]').contains("Edit").click();

cy.get('[data-cy="add-new-row"]').click();

cy.get("mat-select[data-cy=field-type-input]").last().click();
cy.get("mat-option")
.contains(metadata.type)
.then((option) => {
option[0].click();
});

cy.get("[data-cy=metadata-name-input]")
.last()
.focus()
.type(`${metadata.name}{enter}`);

cy.get("[data-cy=metadata-human-name-input]")
.last()
.focus()
.type(`${metadata.human_name}{enter}`);

cy.get("[data-cy=metadata-value-input]")
.last()
.focus()
.type(`${metadata.value}{enter}`);

cy.get("button[data-cy=save-changes-button]").click();

cy.finishedLoading();

cy.contains("[role='tab']", "View").click();

cy.contains("dynamic-mat-table mat-row", metadata.human_name);
cy.contains("dynamic-mat-table mat-row", metadata.value);
});

it("should be able to add a metadata entry with type 'quantity'", () => {
const newMetadataName = "Cypress dataset quantity metadata";
const metadata = {
value: "2010",
name: "quantity_metadata",
human_name: "Quantity test",
type: "quantity",
unit: "cm",
valueSI: "20.1",
unitSI: "m",
};
cy.createDataset({
type: "raw",
dataFileSize: "small",
datasetName: newMetadataName,
});

cy.visit("/datasets");

cy.get(".dataset-table mat-table mat-header-row").should("exist");

cy.finishedLoading();

cy.get('[data-cy="text-search"]').clear().type(newMetadataName);
cy.get('[data-cy="search-button"]').click();

cy.isLoading();

cy.get("mat-row").contains(newMetadataName).first().click();

cy.wait("@fetch");

cy.finishedLoading();

cy.scrollTo("bottom");

cy.get('[role="tab"]').contains("Edit").click();

cy.get('[data-cy="add-new-row"]').click();

cy.get("mat-select[data-cy=field-type-input]").last().click();

cy.get("mat-option")
.contains(metadata.type)
.then((option) => {
option[0].click();
});

cy.get("[data-cy=metadata-name-input]")
.last()
.focus()
.type(`${metadata.name}{enter}`);

cy.get("[data-cy=metadata-human-name-input]")
.last()
.focus()
.type(`${metadata.human_name}{enter}`);

cy.get("[data-cy=metadata-value-input]")
.last()
.focus()
.type(`${metadata.value}{enter}`);

cy.get("[data-cy=metadata-unit-input]")
.last()
.focus()
.type(`${metadata.unit}{enter}`);

cy.get("button[data-cy=save-changes-button]").click();

cy.finishedLoading();

cy.contains("[role='tab']", "View").click();

cy.contains("dynamic-mat-table mat-row", metadata.human_name);
cy.contains("dynamic-mat-table mat-row", metadata.value);
cy.contains("dynamic-mat-table mat-row", metadata.unit);
});

it("should be able to add a metadata entry with type 'string'", () => {
const newMetadataName = "Cypress dataset string metadata";
const metadata = {
value: "2010",
name: "string_metadata",
human_name: "String test",
type: "string",
};
cy.createDataset({
type: "raw",
dataFileSize: "small",
datasetName: newMetadataName,
});

cy.visit("/datasets");

cy.get(".dataset-table mat-table mat-header-row").should("exist");

cy.finishedLoading();

cy.get('[data-cy="text-search"]').clear().type(newMetadataName);
cy.get('[data-cy="search-button"]').click();

cy.isLoading();

cy.get("mat-row").contains(newMetadataName).first().click();

cy.wait("@fetch");

cy.finishedLoading();

cy.scrollTo("bottom");

cy.get('[role="tab"]').contains("Edit").click();

cy.get('[data-cy="add-new-row"]').click();

cy.get("mat-select[data-cy=field-type-input]").last().click();

cy.get("mat-option")
.contains(metadata.type)
.then((option) => {
option[0].click();
});

cy.get("[data-cy=metadata-name-input]")
.last()
.focus()
.type(`${metadata.name}{enter}`);

cy.get("[data-cy=metadata-human-name-input]")
.last()
.focus()
.type(`${metadata.human_name}{enter}`);

cy.get("[data-cy=metadata-value-input]")
.last()
.focus()
.type(`${metadata.value}{enter}`);

cy.get("button[data-cy=save-changes-button]").click();

cy.finishedLoading();

cy.contains("[role='tab']", "View").click();

cy.contains("dynamic-mat-table mat-row", metadata.human_name);
cy.contains("dynamic-mat-table mat-row", metadata.value);
});
});

describe("Remove metadata item", () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,66 +98,4 @@ describe("MetadataViewComponent", () => {
expect(metadataArray[0]["unit"]).toEqual("");
});
});

describe("#isDate()", () => {
it("should return false if scientificMetadata item is a quantity", () => {
const metadata = {
name: "wavelength",
value: 1024,
unit: "nanometers",
};

const isDate = component.isDate(metadata);

expect(isDate).toEqual(false);
});

it("should return false if scientificMetadata value is a number", () => {
const metadata = {
name: "test",
value: 1024,
unit: "",
};

const isDate = component.isDate(metadata);

expect(isDate).toEqual(false);
});

it("should return false if scientificMetadata value is a string", () => {
const metadata = {
name: "test",
value: "test value",
unit: "",
};

const isDate = component.isDate(metadata);

expect(isDate).toEqual(false);
});

it("should return false if scientificMetadata value is a string of numbers", () => {
const metadata = {
name: "test",
value: "123",
unit: "",
};

const isDate = component.isDate(metadata);

expect(isDate).toEqual(false);
});

it("should return true if scientificMetadata item is a date string", () => {
const metadata = {
name: "today",
value: new Date().toISOString(),
unit: "",
};

const isDate = component.isDate(metadata);

expect(isDate).toEqual(true);
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ export class MetadataViewComponent implements OnInit, OnChanges {
name: "value",
header: "Value",
customRender: (column, row) => {
if (row.type === "date" || this.isDate(row)) {
if (row.type === "date") {
return this.datePipe.transform(row[column.name]);
}

Expand All @@ -123,7 +123,7 @@ export class MetadataViewComponent implements OnInit, OnChanges {
return row[column.name];
},
toExport: (column, row) => {
if (row.type === "date" || this.isDate(row)) {
if (row.type === "date") {
return this.datePipe.transform(row[column.name]);
}

Expand Down Expand Up @@ -238,24 +238,6 @@ export class MetadataViewComponent implements OnInit, OnChanges {
return metadataArray;
}

isDate(scientificMetadata: ScientificMetadataTableData): boolean {
// NOTE: If the type is date, we expect the value to be in ISO format.
if (scientificMetadata.type === "date") {
return true;
}

const isValidDate =
typeof scientificMetadata.value !== "number" &&
new Date(scientificMetadata.value).toString() !== "Invalid Date" &&
DateTime.fromISO(scientificMetadata.value).isValid;

if (isValidDate) {
return true;
}

return false;
}

ngOnInit() {
if (this.metadata) {
this.tableData = this.createMetadataArray(this.metadata);
Expand Down
Loading