public void itShouldLetWorkspaceDecideIfItClosesOrNotWhenNotForcedClose(bool isDirty, bool expectedClosed)
        {
            var sut           = new Main();
            var mockWorkspace = new MockQueryWorkspaceView(isDirty);

            sut.AddWorkspace("test", mockWorkspace);

            sut.AcceptKeys(Keys.Control | Keys.W);

            Assert.IsTrue(mockWorkspace.WasClosed == expectedClosed);
        }
        public void itShouldForceCloseWorkspaceOnCtrlQ()
        {
            var sut = new Main();

            var mockWorkspace = new MockQueryWorkspaceView(true);

            sut.AddWorkspace("test", mockWorkspace);

            sut.AcceptKeys(Keys.Control | Keys.Q);

            Assert.IsTrue(mockWorkspace.WasClosed);
        }
        public void itShouldAddNewWorkspaceToMRUOnSave()
        {
            var sut           = new Main().WithAppStateStore(new MockAppStateStore());
            var workspaceFile = "TestFile.qws";
            var workspace1    = new MockQueryWorkspaceView(workspaceFile);

            sut.AddWorkspace("test1", workspace1);

            sut.AcceptKeys(Keys.Control | Keys.S);

            Assert.IsTrue(workspace1.DidSaveWorkspace);

            Assert.IsTrue(sut.MRUItems[0].Text.Contains(workspaceFile));
        }
        public void itShouldApplyFilterOnCtrlF()
        {
            var sut        = new Main();
            var workspace1 = new MockQueryWorkspaceView();
            var workspace2 = new MockQueryWorkspaceView();

            sut.AddWorkspace("test1", workspace1);

            sut.AddWorkspace("test2", workspace2);

            sut.AcceptKeys(Keys.Control | Keys.F);

            Assert.IsFalse(workspace1.DidApplyFilter);
            Assert.IsTrue(workspace2.DidApplyFilter);
        }
        public void itShouldRunQueryOnCtrlE()
        {
            var sut        = new Main();
            var workspace1 = new MockQueryWorkspaceView(new MockCommandDispatcher());
            var workspace2 = new MockQueryWorkspaceView(new MockCommandDispatcher());


            sut.AddWorkspace("test1", workspace1);

            sut.AddWorkspace("test2", workspace2);

            sut.AcceptKeys(Keys.Control | Keys.E);

            Assert.IsFalse(workspace1.DidRunQuery);
            Assert.IsTrue(workspace2.DidRunQuery);
        }
        public void itShouldSaveWorkspaceOnCtrlS()
        {
            var sut        = new Main();
            var workspace1 = new MockQueryWorkspaceView();
            var workspace2 = new MockQueryWorkspaceView();
            var workspace3 = new MockQueryWorkspaceView();

            sut.AddWorkspace("test1", workspace1);
            sut.AddWorkspace("test2", workspace2);
            sut.AddWorkspace("test3", workspace3);

            sut.AcceptKeys(Keys.Control | Keys.S);

            Assert.IsFalse(workspace1.DidSaveWorkspace);
            Assert.IsFalse(workspace2.DidSaveWorkspace);
            Assert.IsTrue(workspace3.DidSaveWorkspace);
        }
        public void itShouldToggleParametersPaneVisibility()
        {
            var sut           = new Main();
            var mockWorkspace = new MockQueryWorkspaceView(new MockCommandDispatcher());

            sut.AddWorkspace("test", mockWorkspace);

            sut.AcceptKeys(Keys.Control | Keys.N);

            // Output pane visible by default after opening new workspace
            Assert.IsTrue(sut.ActiveQueryWorkspace.IsParametersPaneVisible);

            // Toggle off
            sut.AcceptKeys(Keys.Control | Keys.P);

            // For some odd reason, mockWorkspace.IsParametersPaneVisible is TRUE here!!!
            Assert.IsFalse(sut.ActiveQueryWorkspace.IsParametersPaneVisible);

            // Toggle back on
            sut.AcceptKeys(Keys.Control | Keys.P);

            Assert.IsTrue(sut.ActiveQueryWorkspace.IsParametersPaneVisible);
        }
        public void itShouldToggleResultsPaneVisibility()
        {
            var sut           = new Main();
            var mockWorkspace = new MockQueryWorkspaceView(new MockCommandDispatcher())
                                .WithRunQueryAsync(false);

            sut.AddWorkspace("test", mockWorkspace);

            sut.AcceptKeys(Keys.Control | Keys.E);

            // Output pane visible by default after command execution
            Assert.IsTrue(mockWorkspace.IsResultsPaneVisible);

            // Toggle off
            sut.AcceptKeys(Keys.Control | Keys.R);

            Assert.IsFalse(mockWorkspace.IsResultsPaneVisible);

            // Toggle back on
            sut.AcceptKeys(Keys.Control | Keys.R);

            Assert.IsTrue(mockWorkspace.IsResultsPaneVisible);
        }
        public void itShouldCycleWorkspaceTabsBackwardOnCtrlShiftT()
        {
            var sut        = new Main();
            var workspace1 = new MockQueryWorkspaceView();
            var workspace2 = new MockQueryWorkspaceView();
            var workspace3 = new MockQueryWorkspaceView();

            sut.AddWorkspace("test1", workspace1);
            sut.AddWorkspace("test2", workspace2);
            sut.AddWorkspace("test3", workspace3);

            sut.AcceptKeys(Keys.Control | Keys.Shift | Keys.T);

            Assert.AreEqual(sut.ActiveQueryWorkspace, workspace2);

            sut.AcceptKeys(Keys.Control | Keys.Shift | Keys.T);

            Assert.AreEqual(sut.ActiveQueryWorkspace, workspace1);

            sut.AcceptKeys(Keys.Control | Keys.Shift | Keys.T);

            Assert.AreEqual(sut.ActiveQueryWorkspace, workspace3);
        }
        public void itShouldToggleOutputPaneVisibility()
        {
            var sut           = new Main();
            var mockWorkspace = new MockQueryWorkspaceView(new MockCommandDispatcher())
                                .WithRunQueryAsync(false);

            sut.AddWorkspace("test", mockWorkspace);

            sut.AcceptKeys(Keys.Control | Keys.E);

            var isOutputPaneVisible = mockWorkspace.IsOutputPaneVisible;

            // Toggle
            sut.AcceptKeys(Keys.Control | Keys.Shift | Keys.O);

            Assert.AreNotEqual(isOutputPaneVisible, mockWorkspace.IsOutputPaneVisible);

            isOutputPaneVisible = mockWorkspace.IsOutputPaneVisible;

            // Toggle
            sut.AcceptKeys(Keys.Control | Keys.Shift | Keys.O);

            Assert.AreNotEqual(isOutputPaneVisible, mockWorkspace.IsOutputPaneVisible);
        }