From 78a989a72ac18acf76101691e35ab2f2bd12642e Mon Sep 17 00:00:00 2001 From: Mikko Aspiala Date: Fri, 5 Nov 2021 10:56:05 +0200 Subject: [PATCH] Implement first meaningful unit tests for a complete behavior Note: in this case, the behavior is even asynchronous, and thus a tool "asyncFn" is used to keep the test as simple as possible. Co-authored-by: Janne Savolainen Signed-off-by: Mikko Aspiala --- package.json | 1 + .../confirm-dialog/confirm-dialog.tsx | 2 + src/renderer/components/dialog/dialog.tsx | 4 +- .../kube-object-menu.test.tsx.snap | 143 +++++++++++++++++- .../kube-object-menu.test.tsx | 106 ++++++++++--- .../kube-object-menu/kube-object-menu.tsx | 2 +- src/renderer/components/menu/menu-actions.tsx | 2 +- yarn.lock | 47 +----- 8 files changed, 235 insertions(+), 72 deletions(-) diff --git a/package.json b/package.json index 14320588df..3b35fd8261 100644 --- a/package.json +++ b/package.json @@ -260,6 +260,7 @@ "ws": "^7.5.5" }, "devDependencies": { + "@async-fn/jest": "^1.4.2", "@material-ui/core": "^4.12.3", "@material-ui/icons": "^4.11.2", "@material-ui/lab": "^4.0.0-alpha.60", diff --git a/src/renderer/components/confirm-dialog/confirm-dialog.tsx b/src/renderer/components/confirm-dialog/confirm-dialog.tsx index 3704dd96dc..e8450cc232 100644 --- a/src/renderer/components/confirm-dialog/confirm-dialog.tsx +++ b/src/renderer/components/confirm-dialog/confirm-dialog.tsx @@ -140,6 +140,7 @@ export class ConfirmDialog extends React.Component { isOpen={dialogState.isOpen} onClose={this.onClose} close={this.close} + {...(dialogState.isOpen ? { "data-testid":"confirmation-dialog" } : {})} >
{icon} {message} @@ -158,6 +159,7 @@ export class ConfirmDialog extends React.Component { label={labelOk} onClick={prevDefault(this.ok)} waiting={this.isSaving} + data-testid="confirm" {...okButtonProps} />
diff --git a/src/renderer/components/dialog/dialog.tsx b/src/renderer/components/dialog/dialog.tsx index be28789eff..83a49608cb 100644 --- a/src/renderer/components/dialog/dialog.tsx +++ b/src/renderer/components/dialog/dialog.tsx @@ -41,6 +41,7 @@ export interface DialogProps { modal?: boolean; pinned?: boolean; animated?: boolean; + "data-testid"?: string; } interface DialogState { @@ -149,7 +150,7 @@ export class Dialog extends React.PureComponent { }; render() { - const { modal, animated, pinned } = this.props; + const { modal, animated, pinned, "data-testid": testId } = this.props; let { className } = this.props; className = cssNames("Dialog flex center", className, { modal, pinned }); @@ -158,6 +159,7 @@ export class Dialog extends React.PureComponent { className={className} onClick={stopPropagation} ref={this.ref} + data-testid={testId} >
this.contentElem = e}> {this.props.children} diff --git a/src/renderer/components/kube-object-menu/__snapshots__/kube-object-menu.test.tsx.snap b/src/renderer/components/kube-object-menu/__snapshots__/kube-object-menu.test.tsx.snap index 831f9b3489..ab42e739f0 100644 --- a/src/renderer/components/kube-object-menu/__snapshots__/kube-object-menu.test.tsx.snap +++ b/src/renderer/components/kube-object-menu/__snapshots__/kube-object-menu.test.tsx.snap @@ -1,15 +1,146 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`kube-object-menu given kube object, renders 1`] = ` +exports[`kube-object-menu given kube object renders 1`] = `
-
+
+