__test: create geneset

This commit is contained in:
Colin Megill
2021-06-04 02:10:36 -07:00
parent 7ed53c0f5b
commit 68a5b632d1
6 changed files with 80 additions and 9 deletions
+40
View File
@@ -176,6 +176,46 @@ export async function createCategory(categoryName) {
await clickOn("submit-category");
}
export async function createGeneset(genesetName) {
await clickOnUntil("open-create-geneset-dialog", async () => {
await expect(page).toMatchElement(getTestId("create-geneset-input"));
});
await typeInto("create-geneset-input", genesetName);
await clickOn("submit-geneset");
await waitByClass("autosave-complete");
}
export async function deleteGeneset(genesetName) {
const targetId = `${genesetName}:delete-category`;
await clickOnUntil(`${genesetName}:see-actions`, async () => {
await expect(page).toMatchElement(getTestId(targetId));
});
await clickOn(targetId);
await assertGenesetDoesNotExist(genesetName);
await waitByClass("autosave-complete");
}
export async function assertGenesetDoesNotExist(genesetName) {
const result = await isElementPresent(
getTestId(`${genesetName}:geneset-name`)
);
await expect(result).toBe(false);
}
export async function assertGenesetExists(genesetName) {
const handle = await waitByID(`${genesetName}:geneset-name`);
const result = await handle.evaluate((node) => {
return node.getAttribute("aria-label");
});
return expect(result).toBe(genesetName);
}
export async function duplicateCategory(categoryName) {
await clickOn("open-annotation-dialog");
@@ -27,12 +27,17 @@ import {
renameLabel,
subset,
duplicateCategory,
createGeneset,
deleteGeneset,
assertGenesetExists,
assertGenesetDoesNotExist,
} from "./cellxgeneActions";
const data = datasets[DATASET];
const perTestCategoryName = "TEST-CATEGORY";
const perTestLabelName = "TEST-LABEL";
const perTestGenesetName = "TEST-GENESET";
async function setup(config) {
await goToPage(appUrlBase);
@@ -40,6 +45,7 @@ async function setup(config) {
// setup the test fixtures
await createCategory(perTestCategoryName);
await createLabel(perTestCategoryName, perTestLabelName);
await createGeneset(perTestGenesetName);
if (config.withSubset) {
await subset({ x1: 0.1, y1: 0.1, x2: 0.8, y2: 0.8 });
@@ -48,6 +54,32 @@ async function setup(config) {
await waitByClass("autosave-complete");
}
describe("geneSET crud operations and interactions", (config = {}) => {
// test("static pre existing genesets load from csv, expand", async () => {});
// test("color by geneset", async () => {});
// test("brush on geneset mean", async () => {});
test("create a new geneset", async () => {
await setup(config);
const genesetName = `test-geneset-foo-123`;
await assertGenesetDoesNotExist(genesetName);
await createGeneset(genesetName);
/* note: as of June 2021, the aria label is in the truncate component which clones the element */
await assertGenesetExists(genesetName);
});
// test("edit geneset description", async () => {});
test("delete a geneset", async () => {
await deleteGeneset(perTestGenesetName);
});
});
// describe("GENE crud operations and interactions", () => {
// test("add a gene to geneset", async () => {});
// test("color by gene", async () => {});
// test("expand gene and brush", async () => {});
// test("delete gene from geneset", async () => {});
// });
describe.each([
{ withSubset: true, tag: "subset" },
{ withSubset: false, tag: "whole" },
@@ -130,7 +130,6 @@ class Gene extends React.Component {
style={{ fontWeight: 700, marginRight: 2 }}
icon={<Icon icon="trash" iconSize={10} />}
/>
)
<AnchorButton
minimal
small
@@ -133,7 +133,7 @@ class GeneSet extends React.Component {
style={{
maxWidth: globals.leftSidebarWidth - genesetNameLengthVisible,
}}
data-testid={`${setName}:geneset-label`}
data-testid={`${setName}:geneset-name`}
>
{setName}
</span>
@@ -105,7 +105,7 @@ class CreateGenesetDialogue extends React.PureComponent {
render() {
const { genesetName } = this.state;
const { metadataField, genesetsUI, genesets } = this.props;
const { genesetsUI, genesets } = this.props;
return (
<>
@@ -126,7 +126,7 @@ class CreateGenesetDialogue extends React.PureComponent {
<LabelInput
onChange={this.handleChange}
inputProps={{
"data-testid": "create-geneset-modal",
"data-testid": "create-geneset-input",
leftIcon: "manually-entered-data",
intent: "none",
autoFocus: true,
@@ -183,7 +183,7 @@ class CreateGenesetDialogue extends React.PureComponent {
</Button>
</Tooltip2>
<Button
data-testid={`${metadataField}:submit-geneset`}
data-testid="submit-geneset"
onClick={this.createGeneset}
disabled={
!genesetName || this.validate(genesetName, genesets)
@@ -55,7 +55,7 @@ class GenesetMenus extends React.PureComponent {
});
};
handleDeleteCategory = () => {
handleDeleteGeneset = () => {
const { dispatch, geneset } = this.props;
dispatch(actions.genesetDelete(geneset));
};
@@ -101,9 +101,9 @@ class GenesetMenus extends React.PureComponent {
<MenuItem
icon="trash"
intent="danger"
data-testclass="handleDeleteCategory"
data-testid={`${geneset}:delete-category`}
onClick={this.handleDeleteCategory}
data-testclass="handleDeleteGeneset"
data-testid={`${geneset}:delete-geneset`}
onClick={this.handleDeleteGeneset}
text="Delete this gene set (destructive, will remove set and collection of genes)"
/>
</Menu>