mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-10-08 13:58:11 +08:00
__test: create geneset
This commit is contained in:
@@ -176,6 +176,46 @@ export async function createCategory(categoryName) {
|
|||||||
await clickOn("submit-category");
|
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) {
|
export async function duplicateCategory(categoryName) {
|
||||||
await clickOn("open-annotation-dialog");
|
await clickOn("open-annotation-dialog");
|
||||||
|
|
||||||
|
|||||||
@@ -27,12 +27,17 @@ import {
|
|||||||
renameLabel,
|
renameLabel,
|
||||||
subset,
|
subset,
|
||||||
duplicateCategory,
|
duplicateCategory,
|
||||||
|
createGeneset,
|
||||||
|
deleteGeneset,
|
||||||
|
assertGenesetExists,
|
||||||
|
assertGenesetDoesNotExist,
|
||||||
} from "./cellxgeneActions";
|
} from "./cellxgeneActions";
|
||||||
|
|
||||||
const data = datasets[DATASET];
|
const data = datasets[DATASET];
|
||||||
|
|
||||||
const perTestCategoryName = "TEST-CATEGORY";
|
const perTestCategoryName = "TEST-CATEGORY";
|
||||||
const perTestLabelName = "TEST-LABEL";
|
const perTestLabelName = "TEST-LABEL";
|
||||||
|
const perTestGenesetName = "TEST-GENESET";
|
||||||
|
|
||||||
async function setup(config) {
|
async function setup(config) {
|
||||||
await goToPage(appUrlBase);
|
await goToPage(appUrlBase);
|
||||||
@@ -40,6 +45,7 @@ async function setup(config) {
|
|||||||
// setup the test fixtures
|
// setup the test fixtures
|
||||||
await createCategory(perTestCategoryName);
|
await createCategory(perTestCategoryName);
|
||||||
await createLabel(perTestCategoryName, perTestLabelName);
|
await createLabel(perTestCategoryName, perTestLabelName);
|
||||||
|
await createGeneset(perTestGenesetName);
|
||||||
|
|
||||||
if (config.withSubset) {
|
if (config.withSubset) {
|
||||||
await subset({ x1: 0.1, y1: 0.1, x2: 0.8, y2: 0.8 });
|
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");
|
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([
|
describe.each([
|
||||||
{ withSubset: true, tag: "subset" },
|
{ withSubset: true, tag: "subset" },
|
||||||
{ withSubset: false, tag: "whole" },
|
{ withSubset: false, tag: "whole" },
|
||||||
|
|||||||
@@ -130,7 +130,6 @@ class Gene extends React.Component {
|
|||||||
style={{ fontWeight: 700, marginRight: 2 }}
|
style={{ fontWeight: 700, marginRight: 2 }}
|
||||||
icon={<Icon icon="trash" iconSize={10} />}
|
icon={<Icon icon="trash" iconSize={10} />}
|
||||||
/>
|
/>
|
||||||
)
|
|
||||||
<AnchorButton
|
<AnchorButton
|
||||||
minimal
|
minimal
|
||||||
small
|
small
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ class GeneSet extends React.Component {
|
|||||||
style={{
|
style={{
|
||||||
maxWidth: globals.leftSidebarWidth - genesetNameLengthVisible,
|
maxWidth: globals.leftSidebarWidth - genesetNameLengthVisible,
|
||||||
}}
|
}}
|
||||||
data-testid={`${setName}:geneset-label`}
|
data-testid={`${setName}:geneset-name`}
|
||||||
>
|
>
|
||||||
{setName}
|
{setName}
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ class CreateGenesetDialogue extends React.PureComponent {
|
|||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { genesetName } = this.state;
|
const { genesetName } = this.state;
|
||||||
const { metadataField, genesetsUI, genesets } = this.props;
|
const { genesetsUI, genesets } = this.props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@@ -126,7 +126,7 @@ class CreateGenesetDialogue extends React.PureComponent {
|
|||||||
<LabelInput
|
<LabelInput
|
||||||
onChange={this.handleChange}
|
onChange={this.handleChange}
|
||||||
inputProps={{
|
inputProps={{
|
||||||
"data-testid": "create-geneset-modal",
|
"data-testid": "create-geneset-input",
|
||||||
leftIcon: "manually-entered-data",
|
leftIcon: "manually-entered-data",
|
||||||
intent: "none",
|
intent: "none",
|
||||||
autoFocus: true,
|
autoFocus: true,
|
||||||
@@ -183,7 +183,7 @@ class CreateGenesetDialogue extends React.PureComponent {
|
|||||||
</Button>
|
</Button>
|
||||||
</Tooltip2>
|
</Tooltip2>
|
||||||
<Button
|
<Button
|
||||||
data-testid={`${metadataField}:submit-geneset`}
|
data-testid="submit-geneset"
|
||||||
onClick={this.createGeneset}
|
onClick={this.createGeneset}
|
||||||
disabled={
|
disabled={
|
||||||
!genesetName || this.validate(genesetName, genesets)
|
!genesetName || this.validate(genesetName, genesets)
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ class GenesetMenus extends React.PureComponent {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
handleDeleteCategory = () => {
|
handleDeleteGeneset = () => {
|
||||||
const { dispatch, geneset } = this.props;
|
const { dispatch, geneset } = this.props;
|
||||||
dispatch(actions.genesetDelete(geneset));
|
dispatch(actions.genesetDelete(geneset));
|
||||||
};
|
};
|
||||||
@@ -101,9 +101,9 @@ class GenesetMenus extends React.PureComponent {
|
|||||||
<MenuItem
|
<MenuItem
|
||||||
icon="trash"
|
icon="trash"
|
||||||
intent="danger"
|
intent="danger"
|
||||||
data-testclass="handleDeleteCategory"
|
data-testclass="handleDeleteGeneset"
|
||||||
data-testid={`${geneset}:delete-category`}
|
data-testid={`${geneset}:delete-geneset`}
|
||||||
onClick={this.handleDeleteCategory}
|
onClick={this.handleDeleteGeneset}
|
||||||
text="Delete this gene set (destructive, will remove set and collection of genes)"
|
text="Delete this gene set (destructive, will remove set and collection of genes)"
|
||||||
/>
|
/>
|
||||||
</Menu>
|
</Menu>
|
||||||
|
|||||||
Reference in New Issue
Block a user