Merge pull request #1853 from github/nora/test-factories-dbitem
Create and use more factories for DbItem creation
This commit is contained in:
@@ -1,34 +1,162 @@
|
||||
import { faker } from "@faker-js/faker";
|
||||
import {
|
||||
DbItemKind,
|
||||
LocalDatabaseDbItem,
|
||||
LocalDbItem,
|
||||
LocalListDbItem,
|
||||
RemoteDbItem,
|
||||
RemoteOwnerDbItem,
|
||||
RemoteRepoDbItem,
|
||||
RemoteSystemDefinedListDbItem,
|
||||
RemoteUserDefinedListDbItem,
|
||||
RootLocalDbItem,
|
||||
RootRemoteDbItem,
|
||||
} from "../../src/databases/db-item";
|
||||
|
||||
export function createRootRemoteDbItem(): RootRemoteDbItem {
|
||||
// Root Remote Db Items
|
||||
export function createRootRemoteDbItem({
|
||||
children = [],
|
||||
expanded = false,
|
||||
}: {
|
||||
children?: RemoteDbItem[];
|
||||
expanded?: boolean;
|
||||
} = {}): RootRemoteDbItem {
|
||||
return {
|
||||
kind: DbItemKind.RootRemote,
|
||||
children: [],
|
||||
expanded: false,
|
||||
children,
|
||||
expanded,
|
||||
};
|
||||
}
|
||||
|
||||
export function createRemoteOwnerDbItem({
|
||||
ownerName = `owner${faker.datatype.number()}`,
|
||||
selected = false,
|
||||
}: {
|
||||
ownerName?: string;
|
||||
selected?: boolean;
|
||||
} = {}): RemoteOwnerDbItem {
|
||||
return {
|
||||
kind: DbItemKind.RemoteOwner,
|
||||
selected,
|
||||
ownerName,
|
||||
};
|
||||
}
|
||||
|
||||
export function createRemoteRepoDbItem({
|
||||
repoFullName = `owner${faker.datatype.number()}/repo${faker.datatype.number}`,
|
||||
selected = false,
|
||||
parentListName = undefined,
|
||||
}: {
|
||||
repoFullName?: string;
|
||||
selected?: boolean;
|
||||
parentListName?: string;
|
||||
} = {}): RemoteRepoDbItem {
|
||||
return {
|
||||
kind: DbItemKind.RemoteRepo,
|
||||
selected,
|
||||
repoFullName,
|
||||
parentListName,
|
||||
};
|
||||
}
|
||||
|
||||
export function createRemoteSystemDefinedListDbItem({
|
||||
listName = `top_${faker.datatype.number()}`,
|
||||
listDisplayName = `Display Name`,
|
||||
listDescription = `Description`,
|
||||
selected = false,
|
||||
}: {
|
||||
listName?: string;
|
||||
listDisplayName?: string;
|
||||
listDescription?: string;
|
||||
selected?: boolean;
|
||||
} = {}): RemoteSystemDefinedListDbItem {
|
||||
return {
|
||||
kind: DbItemKind.RemoteSystemDefinedList,
|
||||
selected,
|
||||
listName,
|
||||
listDisplayName,
|
||||
listDescription,
|
||||
};
|
||||
}
|
||||
|
||||
export function createRemoteUserDefinedListDbItem({
|
||||
name = "list1",
|
||||
expanded = false,
|
||||
selected = false,
|
||||
listName = `list${faker.datatype.number()}`,
|
||||
repos = [
|
||||
createRemoteRepoDbItem({
|
||||
parentListName: listName,
|
||||
}),
|
||||
],
|
||||
}: {
|
||||
name: string;
|
||||
}): RemoteUserDefinedListDbItem {
|
||||
listName?: string;
|
||||
expanded?: boolean;
|
||||
selected?: boolean;
|
||||
repos?: RemoteRepoDbItem[];
|
||||
} = {}): RemoteUserDefinedListDbItem {
|
||||
return {
|
||||
kind: DbItemKind.RemoteUserDefinedList,
|
||||
selected: false,
|
||||
expanded: false,
|
||||
listName: name,
|
||||
repos: [
|
||||
{
|
||||
kind: DbItemKind.RemoteRepo,
|
||||
selected: false,
|
||||
repoFullName: "repo1",
|
||||
parentListName: name,
|
||||
},
|
||||
],
|
||||
expanded,
|
||||
selected,
|
||||
listName,
|
||||
repos,
|
||||
};
|
||||
}
|
||||
|
||||
// Root Local Db Items
|
||||
export function createRootLocalDbItem({
|
||||
children = [],
|
||||
expanded = false,
|
||||
}: {
|
||||
children?: LocalDbItem[];
|
||||
expanded?: boolean;
|
||||
} = {}): RootLocalDbItem {
|
||||
return {
|
||||
kind: DbItemKind.RootLocal,
|
||||
children,
|
||||
expanded,
|
||||
};
|
||||
}
|
||||
|
||||
export function createLocalDatabaseDbItem({
|
||||
databaseName = `database${faker.datatype.number()}`,
|
||||
dateAdded = faker.date.past().getTime(),
|
||||
language = `language${faker.datatype.number()}`,
|
||||
storagePath = `storagePath${faker.datatype.number()}`,
|
||||
selected = false,
|
||||
}: {
|
||||
databaseName?: string;
|
||||
dateAdded?: number;
|
||||
language?: string;
|
||||
storagePath?: string;
|
||||
selected?: boolean;
|
||||
} = {}): LocalDatabaseDbItem {
|
||||
return {
|
||||
kind: DbItemKind.LocalDatabase,
|
||||
selected,
|
||||
databaseName,
|
||||
dateAdded,
|
||||
language,
|
||||
storagePath,
|
||||
};
|
||||
}
|
||||
|
||||
export function createLocalListDbItem({
|
||||
listName = `top_${faker.datatype.number()}`,
|
||||
selected = false,
|
||||
expanded = false,
|
||||
databases = [],
|
||||
}: {
|
||||
listName?: string;
|
||||
databases?: LocalDatabaseDbItem[];
|
||||
selected?: boolean;
|
||||
expanded?: boolean;
|
||||
} = {}): LocalListDbItem {
|
||||
return {
|
||||
kind: DbItemKind.LocalList,
|
||||
selected,
|
||||
expanded,
|
||||
databases,
|
||||
listName,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ describe("db item expansion", () => {
|
||||
|
||||
const dbItem: RemoteUserDefinedListDbItem =
|
||||
createRemoteUserDefinedListDbItem({
|
||||
name: "list2",
|
||||
listName: "list2",
|
||||
});
|
||||
|
||||
const newExpandedItems = calculateNewExpandedState(
|
||||
@@ -47,7 +47,7 @@ describe("db item expansion", () => {
|
||||
it("should add an expanded item to an empty list", () => {
|
||||
const dbItem: RemoteUserDefinedListDbItem =
|
||||
createRemoteUserDefinedListDbItem({
|
||||
name: "list2",
|
||||
listName: "list2",
|
||||
});
|
||||
|
||||
const newExpandedItems = calculateNewExpandedState([], dbItem, true);
|
||||
@@ -73,7 +73,7 @@ describe("db item expansion", () => {
|
||||
|
||||
const dbItem: RemoteUserDefinedListDbItem =
|
||||
createRemoteUserDefinedListDbItem({
|
||||
name: "list1",
|
||||
listName: "list1",
|
||||
});
|
||||
|
||||
const newExpandedItems = calculateNewExpandedState(
|
||||
|
||||
@@ -1,90 +1,29 @@
|
||||
import { DbItem, DbItemKind } from "../../../src/databases/db-item";
|
||||
import { getSelectedDbItem } from "../../../src/databases/db-item-selection";
|
||||
import {
|
||||
createLocalDatabaseDbItem,
|
||||
createLocalListDbItem,
|
||||
createRemoteOwnerDbItem,
|
||||
createRemoteRepoDbItem,
|
||||
createRemoteSystemDefinedListDbItem,
|
||||
createRemoteUserDefinedListDbItem,
|
||||
createRootLocalDbItem,
|
||||
createRootRemoteDbItem,
|
||||
} from "../../factories/db-item-factories";
|
||||
|
||||
describe("db item selection", () => {
|
||||
it("should return undefined if no item is selected", () => {
|
||||
const dbItems: DbItem[] = [
|
||||
{
|
||||
kind: DbItemKind.RootRemote,
|
||||
expanded: false,
|
||||
createRootRemoteDbItem({
|
||||
children: [
|
||||
{
|
||||
kind: DbItemKind.RemoteSystemDefinedList,
|
||||
listName: "top_10",
|
||||
listDisplayName: "Top 10 repositories",
|
||||
listDescription: "Top 10 repositories of a language",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
kind: DbItemKind.RemoteSystemDefinedList,
|
||||
listName: "top_100",
|
||||
listDisplayName: "Top 100 repositories",
|
||||
listDescription: "Top 100 repositories of a language",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
kind: DbItemKind.RemoteOwner,
|
||||
ownerName: "github",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
kind: DbItemKind.RemoteUserDefinedList,
|
||||
expanded: false,
|
||||
listName: "my list",
|
||||
repos: [
|
||||
{
|
||||
kind: DbItemKind.RemoteRepo,
|
||||
repoFullName: "owner1/repo2",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
kind: DbItemKind.RemoteRepo,
|
||||
repoFullName: "owner1/repo3",
|
||||
selected: false,
|
||||
},
|
||||
],
|
||||
selected: false,
|
||||
},
|
||||
createRemoteSystemDefinedListDbItem(),
|
||||
createRemoteOwnerDbItem(),
|
||||
createRemoteUserDefinedListDbItem(),
|
||||
],
|
||||
},
|
||||
{
|
||||
kind: DbItemKind.RootLocal,
|
||||
expanded: false,
|
||||
children: [
|
||||
{
|
||||
kind: DbItemKind.LocalList,
|
||||
expanded: false,
|
||||
listName: "list-1",
|
||||
databases: [
|
||||
{
|
||||
kind: DbItemKind.LocalDatabase,
|
||||
databaseName: "db1",
|
||||
dateAdded: 1234,
|
||||
language: "javascript",
|
||||
storagePath: "/foo/bar",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
kind: DbItemKind.LocalDatabase,
|
||||
databaseName: "db2",
|
||||
dateAdded: 1234,
|
||||
language: "javascript",
|
||||
storagePath: "/foo/bar",
|
||||
selected: false,
|
||||
},
|
||||
],
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
kind: DbItemKind.LocalDatabase,
|
||||
databaseName: "db3",
|
||||
dateAdded: 1234,
|
||||
language: "javascript",
|
||||
storagePath: "/foo/bar",
|
||||
selected: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
}),
|
||||
createRootLocalDbItem({
|
||||
children: [createLocalListDbItem(), createLocalDatabaseDbItem()],
|
||||
}),
|
||||
];
|
||||
|
||||
expect(getSelectedDbItem(dbItems)).toBeUndefined();
|
||||
@@ -92,44 +31,24 @@ describe("db item selection", () => {
|
||||
|
||||
it("should return correct local database item from DbItem list", () => {
|
||||
const dbItems: DbItem[] = [
|
||||
{
|
||||
kind: DbItemKind.RootLocal,
|
||||
expanded: false,
|
||||
createRootLocalDbItem({
|
||||
children: [
|
||||
{
|
||||
kind: DbItemKind.LocalList,
|
||||
expanded: false,
|
||||
listName: "list-1",
|
||||
databases: [
|
||||
{
|
||||
kind: DbItemKind.LocalDatabase,
|
||||
databaseName: "db1",
|
||||
dateAdded: 1234,
|
||||
language: "javascript",
|
||||
storagePath: "/foo/bar",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
kind: DbItemKind.LocalDatabase,
|
||||
databaseName: "db2",
|
||||
dateAdded: 1234,
|
||||
language: "javascript",
|
||||
storagePath: "/foo/bar",
|
||||
selected: true,
|
||||
},
|
||||
],
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
kind: DbItemKind.LocalDatabase,
|
||||
databaseName: "db3",
|
||||
createLocalDatabaseDbItem({
|
||||
databaseName: "db2",
|
||||
dateAdded: 1234,
|
||||
language: "javascript",
|
||||
storagePath: "/foo/bar",
|
||||
selected: false,
|
||||
},
|
||||
selected: true,
|
||||
}),
|
||||
createLocalListDbItem({
|
||||
databases: [
|
||||
createLocalDatabaseDbItem(),
|
||||
createLocalDatabaseDbItem(),
|
||||
],
|
||||
}),
|
||||
],
|
||||
},
|
||||
expanded: false,
|
||||
}),
|
||||
];
|
||||
|
||||
expect(getSelectedDbItem(dbItems)).toEqual({
|
||||
@@ -144,42 +63,20 @@ describe("db item selection", () => {
|
||||
|
||||
it("should return correct remote database list item from DbItem list", () => {
|
||||
const dbItems: DbItem[] = [
|
||||
{
|
||||
kind: DbItemKind.RootRemote,
|
||||
expanded: false,
|
||||
createRootRemoteDbItem({
|
||||
children: [
|
||||
{
|
||||
kind: DbItemKind.RemoteSystemDefinedList,
|
||||
listName: "top_10",
|
||||
listDisplayName: "Top 10 repositories",
|
||||
listDescription: "Top 10 repositories of a language",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
kind: DbItemKind.RemoteOwner,
|
||||
ownerName: "github",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
kind: DbItemKind.RemoteUserDefinedList,
|
||||
expanded: false,
|
||||
createRemoteSystemDefinedListDbItem(),
|
||||
createRemoteOwnerDbItem(),
|
||||
createRemoteUserDefinedListDbItem({
|
||||
listName: "my list",
|
||||
repos: [
|
||||
{
|
||||
kind: DbItemKind.RemoteRepo,
|
||||
repoFullName: "owner1/repo2",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
kind: DbItemKind.RemoteRepo,
|
||||
repoFullName: "owner1/repo3",
|
||||
selected: false,
|
||||
},
|
||||
],
|
||||
selected: true,
|
||||
},
|
||||
repos: [
|
||||
createRemoteRepoDbItem({ repoFullName: "owner1/repo2" }),
|
||||
createRemoteRepoDbItem({ repoFullName: "owner1/repo3" }),
|
||||
],
|
||||
}),
|
||||
],
|
||||
},
|
||||
}),
|
||||
];
|
||||
|
||||
expect(getSelectedDbItem(dbItems)).toEqual({
|
||||
@@ -204,49 +101,19 @@ describe("db item selection", () => {
|
||||
|
||||
it("should handle arbitrary list of db items", () => {
|
||||
const dbItems: DbItem[] = [
|
||||
{
|
||||
kind: DbItemKind.RootRemote,
|
||||
expanded: false,
|
||||
createRootRemoteDbItem({
|
||||
children: [
|
||||
{
|
||||
kind: DbItemKind.RemoteSystemDefinedList,
|
||||
listName: "top_10",
|
||||
listDisplayName: "Top 10 repositories",
|
||||
listDescription: "Top 10 repositories of a language",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
kind: DbItemKind.RemoteOwner,
|
||||
ownerName: "github",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
kind: DbItemKind.RemoteUserDefinedList,
|
||||
expanded: false,
|
||||
listName: "my list",
|
||||
repos: [
|
||||
{
|
||||
kind: DbItemKind.RemoteRepo,
|
||||
repoFullName: "owner1/repo2",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
kind: DbItemKind.RemoteRepo,
|
||||
repoFullName: "owner1/repo3",
|
||||
selected: false,
|
||||
},
|
||||
],
|
||||
selected: false,
|
||||
},
|
||||
createRemoteSystemDefinedListDbItem(),
|
||||
createRemoteOwnerDbItem(),
|
||||
createRemoteUserDefinedListDbItem(),
|
||||
],
|
||||
},
|
||||
{
|
||||
kind: DbItemKind.RemoteSystemDefinedList,
|
||||
}),
|
||||
createRemoteSystemDefinedListDbItem({
|
||||
listName: "top_10",
|
||||
listDisplayName: "Top 10 repositories",
|
||||
listDescription: "Top 10 repositories of a language",
|
||||
selected: true,
|
||||
},
|
||||
}),
|
||||
];
|
||||
|
||||
expect(getSelectedDbItem(dbItems)).toEqual({
|
||||
@@ -260,33 +127,24 @@ describe("db item selection", () => {
|
||||
|
||||
it("should handle empty db item lists", () => {
|
||||
const dbItems: DbItem[] = [
|
||||
{
|
||||
kind: DbItemKind.RootRemote,
|
||||
expanded: false,
|
||||
createRootRemoteDbItem({
|
||||
children: [
|
||||
{
|
||||
kind: DbItemKind.RemoteSystemDefinedList,
|
||||
listName: "top_10",
|
||||
listDisplayName: "Top 10 repositories",
|
||||
listDescription: "Top 10 repositories of a language",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
kind: DbItemKind.RemoteOwner,
|
||||
ownerName: "github",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
kind: DbItemKind.RemoteUserDefinedList,
|
||||
expanded: false,
|
||||
listName: "my list",
|
||||
createRemoteSystemDefinedListDbItem(),
|
||||
createRemoteOwnerDbItem(),
|
||||
createRemoteUserDefinedListDbItem({
|
||||
repos: [],
|
||||
selected: false,
|
||||
},
|
||||
selected: true,
|
||||
listName: "list84",
|
||||
}),
|
||||
],
|
||||
},
|
||||
}),
|
||||
];
|
||||
|
||||
expect(getSelectedDbItem(dbItems)).toBeUndefined();
|
||||
expect(getSelectedDbItem(dbItems)).toEqual({
|
||||
expanded: false,
|
||||
kind: DbItemKind.RemoteUserDefinedList,
|
||||
listName: "list84",
|
||||
repos: [],
|
||||
selected: true,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user