public void SetUp() {
     dataLayerMock = mockRepository.StrictMock<IDataLayer>();
     assetCacheMock = mockRepository.StrictMock<IAssetCache>();
     settingsMock = mockRepository.StrictMock<ISettings>();
     viewMock = mockRepository.StrictMock<IWorkitemTreeView>();
     waitCursorStub = mockRepository.Stub<IWaitCursor>();
     eventDispatcherMock = mockRepository.Stub<IEventDispatcher>();
     loggerFactoryMock = mockRepository.DynamicMock<ILoggerFactory>();
     effortTrackingMock = mockRepository.StrictMock<IEffortTracking>();
     loggerFactoryMock.Stub(x => x.GetLogger(null)).IgnoreArguments().Return(mockRepository.Stub<ILogger>());
     configuration = new Configuration();
     Container.Rebind<IDataLayer>().ToConstant(dataLayerMock);
     controller = new WorkitemTreeController(loggerFactoryMock, dataLayerMock, configuration, settingsMock, eventDispatcherMock);
 }
        public void CommitItem() {
            var workitemMock = mockRepository.PartialMock<TestWorkitem>(Guid.NewGuid().ToString(), true, assetCacheMock);
            var descriptor = new WorkitemDescriptor(workitemMock, new ColumnSetting[0], PropertyUpdateSource.WorkitemView, true);

            ExpectRegisterAndPrepareView();
            Expect.Call(viewMock.CurrentWorkitemDescriptor).Return(descriptor);
            Expect.Call(viewMock.GetWaitCursor()).Return(waitCursorStub);
            Expect.Call(workitemMock.CommitChanges);
            Expect.Call(() => eventDispatcherMock.Notify(null, new ModelChangedArgs(EventReceiver.ProjectView, EventContext.V1SettingsChanged)));

            mockRepository.ReplayAll();

            controller = new TestWorkitemTreeController(loggerFactoryMock, dataLayerMock, configuration, settingsMock, eventDispatcherMock);
            controller.Register(viewMock);
            controller.PrepareView();
            controller.CommitItem();

            mockRepository.VerifyAll();
        }
        public void GetWorkitemsFailure() {
            ExpectRegisterAndPrepareView();
            Expect.Call(() => dataLayerMock.GetWorkitems(assetCacheMock)).Throw(new DataLayerException(null));
            Expect.Call(() => viewMock.ShowErrorMessage(null)).IgnoreArguments();

            mockRepository.ReplayAll();
            controller = new TestWorkitemTreeController(loggerFactoryMock, dataLayerMock, configuration, settingsMock, eventDispatcherMock);
            controller.Register(viewMock);
            controller.PrepareView();
            var returnedWorkitems = controller.GetWorkitems();
            Assert.IsNull(returnedWorkitems);

            mockRepository.VerifyAll();
        }
        public void GetWorkitems() {
            var workitems = new List<Workitem>();

            ExpectRegisterAndPrepareView();
            Expect.Call(() => dataLayerMock.GetWorkitems(assetCacheMock));
            Expect.Call(settingsMock.ShowMyTasks).Return(false);
            Expect.Call(assetCacheMock.GetWorkitems(true)).Return(workitems);

            mockRepository.ReplayAll();
            controller = new TestWorkitemTreeController(loggerFactoryMock, dataLayerMock, configuration, settingsMock, eventDispatcherMock);
            controller.Register(viewMock);
            controller.PrepareView();
            var returnedWorkitems = controller.GetWorkitems();
            Assert.AreEqual(workitems, returnedWorkitems);

            mockRepository.VerifyAll();
        }
        public void HandleSaveCommandGenericDataLayerException() {
            ExpectRegisterAndPrepareView();
            Expect.Call(viewMock.GetWaitCursor()).Return(waitCursorStub);
            Expect.Call(() => dataLayerMock.CommitChanges(assetCacheMock)).Throw(new DataLayerException(null));
            Expect.Call(assetCacheMock.Drop).Repeat.Never();
            Expect.Call(() => viewMock.ShowErrorMessage(null)).IgnoreArguments();
            Expect.Call(viewMock.ResetPropertyView);

            mockRepository.ReplayAll();
            controller = new TestWorkitemTreeController(loggerFactoryMock, dataLayerMock, configuration, settingsMock, eventDispatcherMock);
            controller.Register(viewMock);
            controller.PrepareView();
            controller.HandleSaveCommand();

            mockRepository.VerifyAll();
        }
        public void HandleSaveCommand() {
            ExpectRegisterAndPrepareView();
            Expect.Call(viewMock.GetWaitCursor()).Return(waitCursorStub);
            Expect.Call(() => dataLayerMock.CommitChanges(assetCacheMock));
            Expect.Call(assetCacheMock.Drop);
            Expect.Call(() => eventDispatcherMock.Notify(null, new ModelChangedArgs(EventReceiver.WorkitemView, EventContext.WorkitemsRequested)));

            mockRepository.ReplayAll();
            controller = new TestWorkitemTreeController(loggerFactoryMock, dataLayerMock, configuration, settingsMock, eventDispatcherMock);
            controller.Register(viewMock);
            controller.PrepareView();
            controller.HandleSaveCommand();

            mockRepository.VerifyAll();
        }
        public void CloseItemWithGenericDataLayerException() {
            var workitemMock = mockRepository.PartialMock<TestWorkitem>(Guid.NewGuid().ToString(), true, assetCacheMock);

            ExpectRegisterAndPrepareView();
            Expect.Call(viewMock.GetWaitCursor()).Return(waitCursorStub);
            Expect.Call(workitemMock.Close).Throw(new DataLayerException(null));
            Expect.Call(() => viewMock.ShowErrorMessage(null)).IgnoreArguments();
            Expect.Call(() => eventDispatcherMock.Notify(null, new ModelChangedArgs(EventReceiver.WorkitemView, EventContext.WorkitemsChanged)));

            mockRepository.ReplayAll();

            controller = new TestWorkitemTreeController(loggerFactoryMock, dataLayerMock, configuration, settingsMock, eventDispatcherMock);
            controller.Register(viewMock);
            controller.PrepareView();
            controller.CloseItem(workitemMock);

            mockRepository.VerifyAll();
        }
 public StoryTreeModel(WorkitemTreeController controller, Configuration configuration) {
     this.controller = controller;
     this.configuration = configuration;
 }