/* * Copyright 2016 Nokia Solutions and Networks * Licensed under the Apache License, Version 2.0, * see license.txt file for details. */ package org.robotframework.red.jface.dialogs; import static org.assertj.core.api.Assertions.assertThat; import java.util.concurrent.atomic.AtomicBoolean; import org.eclipse.swt.widgets.Shell; import org.junit.Rule; import org.junit.Test; import org.robotframework.red.jface.dialogs.CloseDialogAction.DialogCloseListener; import org.robotframework.red.junit.ShellProvider; public class CloseDialogActionTest { @Rule public ShellProvider shellProvider = new ShellProvider(); @Test public void theShellIsClosedWhenActionRuns() { final Shell shell = shellProvider.getShell(); final CloseDialogAction actionToTest = new CloseDialogAction(shell, null); assertThat(shell.isDisposed()).isFalse(); actionToTest.run(); assertThat(shell.isDisposed()).isTrue(); } @Test public void theListenerIsNotifiedPriorToClosing() { final AtomicBoolean beforeCalled = new AtomicBoolean(false); final Shell shell = shellProvider.getShell(); final DialogCloseListener listener = new DialogCloseListener() { @Override public void beforeClose() { assertThat(shell.isDisposed()).isFalse(); beforeCalled.set(true); } }; new CloseDialogAction(shell, null, listener).run(); assertThat(beforeCalled.get()).isTrue(); } @Test public void theListenerIsNotifiedJustAfterClosing() { final AtomicBoolean afterCalled = new AtomicBoolean(false); final Shell shell = shellProvider.getShell(); final DialogCloseListener listener = new DialogCloseListener() { @Override public void afterClose() { assertThat(shell.isDisposed()).isTrue(); afterCalled.set(true); } }; new CloseDialogAction(shell, null, listener).run(); assertThat(afterCalled.get()).isTrue(); } }