示例#1
0
        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));
        }
示例#4
0
        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));
        }
示例#7
0
        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();
        }
示例#8
0
        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);
        }