public void WhiteboardRemovedReceivedTest() { bool whiteboardRemovedReceived = false; var whiteboardModels = new ObservableCollection <Data.RoomService.Whiteboard>(); var whiteboardCollectionViewModel = _viewModelFactory.GetViewModel <WhiteboardCollectionViewModel>(); whiteboardCollectionViewModel.Models = whiteboardModels; var whiteboard = new Data.RoomService.Whiteboard() { WhiteboardId = Guid.NewGuid(), Room = _roomVm.Model }; whiteboardCollectionViewModel.ViewModels.CollectionChanged += (s, e) => { if (e.Action == NotifyCollectionChangedAction.Add) { var vm = e.NewItems[0] as WhiteboardViewModel; Assert.AreSame(whiteboard, vm.Model); Deployment.Current.Dispatcher.BeginInvoke(() => whiteboardModels.Remove(whiteboard)); } else { var vm = e.OldItems[0] as WhiteboardViewModel; Assert.AreEqual(whiteboard, vm.Model); whiteboardRemovedReceived = true; } }; whiteboardModels.Add(whiteboard); EnqueueConditional(() => whiteboardRemovedReceived); EnqueueTestComplete(); }
public void WorkspaceItemIdTest() { (new EventLoopScheduler()).With(_ => { bool workspaceItemIdPropertyChanged = false; var wb = new Data.RoomService.Whiteboard() { WhiteboardId = Guid.NewGuid(), User = user }; var wbVm = viewModelFactory.GetViewModel <WhiteboardViewModel>(vm => vm.WorkspaceItemId == wb.WhiteboardId); wbVm.PropertyChanged += (s, e) => { if (e.PropertyName == wbVm.GetPropertyName(x => x.WorkspaceItemId)) { workspaceItemIdPropertyChanged = true; } }; Assert.AreEqual(Guid.Empty, wbVm.WorkspaceItemId); Assert.AreEqual(Guid.Empty, wbVm.OwnerUserId); Assert.IsTrue(string.IsNullOrEmpty(wbVm.OwnerUserName)); wbVm.Model = wb; Thread.Sleep(1000); Assert.AreEqual(wb.WhiteboardId, wbVm.WorkspaceItemId); Assert.AreEqual(wb.User.UserId, wbVm.OwnerUserId); Assert.AreEqual(wb.User.UserName, wbVm.OwnerUserName); Assert.IsTrue(workspaceItemIdPropertyChanged); }); }
public void AddWhiteboardTest() { var now = DateTime.Now; var whiteboardViewModelCollection = viewModelFactory.GetViewModel <WhiteboardCollectionViewModel>(); var whiteboards = new ObservableCollection <Data.RoomService.Whiteboard>(); var wb1 = new Data.RoomService.Whiteboard() { WhiteboardId = Guid.NewGuid(), User = user, CreatedOn = now }; whiteboards.Add(wb1); whiteboardViewModelCollection.Models = whiteboards; Assert.IsTrue(whiteboardViewModelCollection.ViewModels.Any(vm => vm.Model == wb1)); Assert.IsTrue(whiteboardViewModelCollection.ViewModels.Any(vm => vm.WorkspaceItemId == wb1.WhiteboardId)); var wb2 = new Data.RoomService.Whiteboard() { WhiteboardId = Guid.NewGuid(), User = guestUser, CreatedOn = now }; whiteboards.Add(wb2); Assert.IsTrue(whiteboardViewModelCollection.ViewModels.Any(vm => vm.Model == wb2)); Assert.IsTrue(whiteboardViewModelCollection.ViewModels.Any(vm => vm.WorkspaceItemId == wb2.WhiteboardId)); Assert.IsTrue(whiteboardViewModelCollection.ViewModels.Any(vm => vm.Model == wb1)); Assert.IsTrue(whiteboardViewModelCollection.ViewModels.Any(vm => vm.WorkspaceItemId == wb1.WhiteboardId)); }
private WhiteboardViewModel GetNewWhiteboard() { var whiteboard = new Data.RoomService.Whiteboard() { WhiteboardId = Guid.NewGuid() }; var vm = viewModelFactory.GetViewModel <WhiteboardViewModel>(wvm => wvm.Model.WhiteboardId == whiteboard.WhiteboardId); vm.Model = whiteboard; return(vm); }
public void ThreadedAddWhiteboardTest() { bool isFinished = false; var now = DateTime.Now; // Do some stuff on a threadpool. EnqueueCallback(() => Deployment.Current.Dispatcher.BeginInvoke(() => { var whiteboardViewModelCollection = viewModelFactory.GetViewModel <WhiteboardCollectionViewModel>(); var whiteboards = new ObservableCollection <Data.RoomService.Whiteboard>(); var wb1 = new Data.RoomService.Whiteboard() { WhiteboardId = Guid.NewGuid(), User = user, CreatedOn = now }; var wb2 = new Data.RoomService.Whiteboard() { WhiteboardId = Guid.NewGuid(), User = guestUser, CreatedOn = now }; var wb3 = new Data.RoomService.Whiteboard() { WhiteboardId = Guid.NewGuid(), User = guestUser, CreatedOn = now }; ThreadPool.QueueUserWorkItem(o => { whiteboards.Add(wb1); whiteboardViewModelCollection.Models = whiteboards; Assert.IsTrue(whiteboardViewModelCollection.ViewModels.Any(vm => vm.Model == wb1)); Assert.IsTrue(whiteboardViewModelCollection.ViewModels.Any(vm => vm.WorkspaceItemId == wb1.WhiteboardId)); Deployment.Current.Dispatcher.BeginInvoke(() => { whiteboards.Add(wb2); Assert.IsTrue(whiteboardViewModelCollection.ViewModels.Any(vm => vm.Model == wb2)); Assert.IsTrue(whiteboardViewModelCollection.ViewModels.Any(vm => vm.WorkspaceItemId == wb2.WhiteboardId)); ThreadPool.QueueUserWorkItem(o2 => { whiteboards.Add(wb3); Assert.IsTrue(whiteboardViewModelCollection.ViewModels.Any(vm => vm.Model == wb3)); Assert.IsTrue(whiteboardViewModelCollection.ViewModels.Any(vm => vm.WorkspaceItemId == wb3.WhiteboardId)); isFinished = true; }); }); }); })); EnqueueConditional(() => isFinished); EnqueueTestComplete(); }
public void UserChangesAndClosedWorkspaceItemsChange() { // Arrange var localUserVm = viewModelFactory.GetViewModel <LocalUserViewModel>(); var workspaceVm = viewModelFactory.GetViewModel <WorkspaceViewModel>(); var user1 = DesignTimeHelper.GetGuestUser(); var user2 = DesignTimeHelper.GetRegisteredUser(); var wb1 = new Data.RoomService.Whiteboard() { WhiteboardId = Guid.NewGuid(), User = user2, IsClosed = true }; var wbVm1 = viewModelFactory.GetViewModel <WhiteboardViewModel>(w => w.WorkspaceItemId == wb1.WhiteboardId); wbVm1.Model = wb1; var wb2 = new Data.RoomService.Whiteboard() { WhiteboardId = Guid.NewGuid(), User = user2, IsClosed = true }; var wbVm2 = viewModelFactory.GetViewModel <WhiteboardViewModel>(w => w.WorkspaceItemId == wb2.WhiteboardId); wbVm2.Model = wb2; workspaceVm.ClosedWorkspaceItems.Triggers.Add(localUserVm); workspaceVm.WorkspaceItems.Add(wbVm1); workspaceVm.WorkspaceItems.Add(wbVm2); localUserVm.Model = user1; Assert.IsTrue(wbVm1.IsReady && !wbVm1.IsShareAvailable && !wbVm1.IsShared); Assert.IsTrue(wbVm2.IsReady && !wbVm2.IsShareAvailable && !wbVm2.IsShared); // The whiteboards shouldn't initially show up in the closed workspace items because // they aren't owned by the current local user. Assert.IsFalse(workspaceVm.ClosedWorkspaceItems.Contains(wbVm1)); Assert.IsFalse(workspaceVm.ClosedWorkspaceItems.Contains(wbVm2)); // Act localUserVm.Model = user2; // Assert // The whiteboards should now show up in the closed workspace items because // they're owned by the new local user. Assert.IsTrue(wbVm1.IsReady && wbVm1.IsShareAvailable && !wbVm1.IsShared); Assert.IsTrue(wbVm2.IsReady && wbVm2.IsShareAvailable && !wbVm2.IsShared); Assert.IsTrue(workspaceVm.ClosedWorkspaceItems.Contains(wbVm1)); Assert.IsTrue(workspaceVm.ClosedWorkspaceItems.Contains(wbVm2)); }
public void WorkspacePanelTest() { bool whiteboardAdded = false; var whiteboardViewModels = viewModelFactory.GetViewModel <WhiteboardCollectionViewModel>(); var whiteboardModels = new ObservableCollection <Data.RoomService.Whiteboard>(); whiteboardViewModels.Models = whiteboardModels; var whiteboard = new Data.RoomService.Whiteboard { WhiteboardId = Guid.NewGuid(), WhiteboardShapes = new ObservableCollection <WhiteboardShape>() }; whiteboardViewModels.ViewModels.CollectionChanged += (sender, args) => { var vm = args.NewItems[0] as WhiteboardViewModel; Assert.AreEqual(whiteboard, vm.Model); whiteboardAdded = true; }; whiteboardModels.Add(whiteboard); EnqueueConditional(() => whiteboardAdded); EnqueueTestComplete(); }
public void WhiteboardAddedReceivedTest() { bool whiteboardAddedReceived = false; var whiteboardModels = new ObservableCollection <Data.RoomService.Whiteboard>(); var whiteboardCollectionViewModel = _viewModelFactory.GetViewModel <WhiteboardCollectionViewModel>(); whiteboardCollectionViewModel.Models = whiteboardModels; var whiteboard = new Data.RoomService.Whiteboard() { WhiteboardId = Guid.NewGuid(), Room = _roomVm.Model }; whiteboardCollectionViewModel.ViewModels.CollectionChanged += (s, e) => { var vm = e.NewItems[0] as WhiteboardViewModel; Assert.AreSame(whiteboard, vm.Model); whiteboardAddedReceived = true; }; whiteboardModels.Add(whiteboard); EnqueueConditional(() => whiteboardAddedReceived); EnqueueTestComplete(); }
public void IWorkspaceItemPropertiesTest() { var localUserVm = viewModelFactory.GetViewModel <LocalUserViewModel>(); localUserVm.Model = guestUser; var roomVm = viewModelFactory.GetViewModel <RoomViewModel>(); roomVm.Model = room; var now = DateTime.Now; var wb = new Data.RoomService.Whiteboard() { WhiteboardId = Guid.NewGuid(), User = guestUser, CreatedOn = now }; var wbvm = viewModelFactory.GetViewModel <WhiteboardViewModel>(wvm => wvm.WorkspaceItemId == wb.WhiteboardId); wbvm.Model = wb; Assert.AreEqual("Whiteboard", wbvm.Title); Assert.AreEqual(Constants.WhiteboardIconLocation, wbvm.IconLocation); Assert.AreEqual(wbvm.Model.WhiteboardId, wbvm.WorkspaceItemId); Assert.AreEqual(guestUser.UserId, wbvm.OwnerUserId); Assert.AreEqual(guestUser.UserName, wbvm.OwnerUserName); Assert.AreEqual(now, wbvm.CreatedOn); }
public void CalculatedPropertiesTest() { // Arrange var localUserVm = viewModelFactory.GetViewModel <LocalUserViewModel>(); localUserVm.Model = guestUser; var roomVm = viewModelFactory.GetViewModel <RoomViewModel>(); roomVm.Model = room; var stopSharingGrant = new RoomPermissionGrant() { RoomPermissionGrantId = Guid.NewGuid(), RoomPermissionScopeTag = RoomPermissionScopeValues.User, RoomPermissionTag = RoomPermissionValues.StopSharingOwnItem, UserId = guestUser.UserId, RoomId = room.RoomId }; var stopSharingGrantVm = viewModelFactory.GetViewModel <RoomPermissionGrantViewModel>(vm => vm.Model.RoomPermissionGrantId == stopSharingGrant.RoomPermissionGrantId); stopSharingGrantVm.Model = stopSharingGrant; localUserVm.RoomPermissionGrants.ViewModels.Add(stopSharingGrantVm); // Act and Assert var unownedWb = new Data.RoomService.Whiteboard() { WhiteboardId = Guid.NewGuid(), User = user }; var unownedWbVm = viewModelFactory.GetViewModel <WhiteboardViewModel>(wvm => wvm.WorkspaceItemId == unownedWb.WhiteboardId); Assert.IsFalse(unownedWbVm.IsReady); Assert.AreEqual(Guid.Empty, unownedWbVm.WorkspaceItemId); Assert.AreEqual(Guid.Empty, unownedWbVm.OwnerUserId); Assert.AreEqual(string.Empty, unownedWbVm.OwnerUserName); unownedWbVm.Model = unownedWb; Assert.AreEqual(unownedWb.WhiteboardId, unownedWbVm.WorkspaceItemId); Assert.AreEqual(unownedWb.User.UserId, unownedWbVm.OwnerUserId); Assert.AreEqual(unownedWb.User.UserName, unownedWbVm.OwnerUserName); unownedWb.IsClosed = null; Assert.IsTrue(unownedWbVm.IsShared); unownedWbVm.IsShared = true; Assert.AreEqual(true, unownedWbVm.IsShared); Assert.AreEqual(false, unownedWb.IsClosed); unownedWbVm.IsShared = false; Assert.AreEqual(false, unownedWbVm.IsShared); Assert.AreEqual(true, unownedWb.IsClosed); Assert.IsTrue(unownedWbVm.IsReady); Assert.IsFalse(unownedWbVm.IsShareAvailable); Assert.IsFalse(unownedWbVm.IsUnshareAvailable); Assert.IsFalse(unownedWbVm.IsDeleteAvailable); var ownedWb = new Data.RoomService.Whiteboard() { WhiteboardId = Guid.NewGuid(), User = guestUser }; var ownedWbVm = viewModelFactory.GetViewModel <WhiteboardViewModel>(wvm => wvm.WorkspaceItemId == ownedWb.WhiteboardId); Assert.IsFalse(ownedWbVm.IsReady); Assert.AreEqual(Guid.Empty, ownedWbVm.WorkspaceItemId); Assert.AreEqual(Guid.Empty, ownedWbVm.OwnerUserId); Assert.AreEqual(string.Empty, ownedWbVm.OwnerUserName); ownedWbVm.Model = ownedWb; Assert.AreEqual(ownedWb.WhiteboardId, ownedWbVm.WorkspaceItemId); Assert.AreEqual(ownedWb.User.UserId, ownedWbVm.OwnerUserId); Assert.AreEqual(ownedWb.User.UserName, ownedWbVm.OwnerUserName); Assert.IsTrue(ownedWbVm.IsReady); Assert.IsTrue(ownedWbVm.IsShareAvailable); Assert.IsTrue(ownedWbVm.IsUnshareAvailable); Assert.IsTrue(ownedWbVm.IsDeleteAvailable); }