public void RoomPermissionCollectionViewModel_LoadTest() { // Arrange var expectedPermissions = DesignTimeHelper.GetRoomPermissions(); mockRoomService.Setup(rs => rs.GetRoomPermissions(It.IsAny <OperationCallback <ObservableCollection <RoomPermission> > >())) .Callback((OperationCallback <ObservableCollection <RoomPermission> > callback) => callback(null, expectedPermissions)); var roomPermissionsVm = viewModelFactory.GetViewModel <RoomPermissionCollectionViewModel>(); bool isBusyChanged = false; roomPermissionsVm.PropertyChanged += (s, e) => { if (e.PropertyName == roomPermissionsVm.GetPropertyName(x => x.IsBusy)) { isBusyChanged = true; } }; // Act roomPermissionsVm.Load(); // Assert Assert.AreEqual(expectedPermissions.Count, roomPermissionsVm.ViewModelCount); Assert.AreEqual(expectedPermissions.Count, roomPermissionsVm.ViewModels.Count); foreach (var expectedPermission in expectedPermissions) { var rp = expectedPermission; Assert.IsTrue(roomPermissionsVm.ViewModels.Any(vm => vm.Model.RoomPermissionTag.Equals(rp.RoomPermissionTag, StringComparison.OrdinalIgnoreCase))); } Assert.IsFalse(roomPermissionsVm.IsBusy); Assert.IsTrue(roomPermissionsVm.IsLoaded); Assert.IsTrue(isBusyChanged); }
public void RoomPermissionGrantCollectionSavePermissionsTest() { // Setup the mock room service mockRoomService.Setup(rs => rs.GetRoomPermissions(It.IsAny <OperationCallback <ObservableCollection <RoomPermission> > >())) .Callback((OperationCallback <ObservableCollection <RoomPermission> > callback) => callback(null, DesignTimeHelper.GetRoomPermissions())); // Setup the room and various users. var localUserVm = viewModelFactory.GetViewModel <LocalUserViewModel>(); localUserVm.Model = user; var roomVm = viewModelFactory.GetViewModel <RoomViewModel>(); roomVm.Model = room; var user1 = user; var user1Vm = viewModelFactory.GetViewModel <UserViewModel>(u => u.UserId == user1.UserId); user1Vm.Model = user1; var user2 = new RegisteredUser { AuthenticationGroupId = user1.AuthenticationGroupId, UserId = Guid.NewGuid(), UserTag = Guid.NewGuid().ToString(), UserName = "******" }; var user2Vm = viewModelFactory.GetViewModel <UserViewModel>(u => u.UserId == user2.UserId); user2Vm.Model = user2; var user3 = new RegisteredUser { AuthenticationGroupId = user1.AuthenticationGroupId, UserId = Guid.NewGuid(), UserTag = Guid.NewGuid().ToString(), UserName = "******" }; var user3Vm = viewModelFactory.GetViewModel <UserViewModel>(u => u.UserId == user3.UserId); user3Vm.Model = user3; // Load the users into the grants container var grantsVm = viewModelFactory.GetViewModel <RoomPermissionGrantCollectionViewModel>(); grantsVm.SecurityPrincipals.Add(user1Vm); grantsVm.SecurityPrincipals.Add(user2Vm); grantsVm.SecurityPrincipals.Add(user3Vm); // Establish their permissions. user1Vm.RoomPermissionGrants.Models = DesignTimeHelper.GetRoomPermissionGrants(user1).Where(g => g.UserId == user1.UserId).ToObservableCollection(); user2Vm.RoomPermissionGrants.Models = DesignTimeHelper.GetRoomPermissionGrants(user2).Where(g => g.UserId == user2.UserId).ToObservableCollection(); user3Vm.RoomPermissionGrants.Models = DesignTimeHelper.GetRoomPermissionGrants(user3).Where(g => g.UserId == user3.UserId).ToObservableCollection(); // Confirm stuff is looking good so far and update grants // When this is done, each Join and Chat should be selected, and Administer and Share should not be. foreach (var userVm in grantsVm.SecurityPrincipals) { ConfirmGrantSynchronization(userVm.RoomPermissionGrants); userVm.RoomPermissionGrants.PossibleGrants.First(g => g.Model.RoomPermissionTag == "Administer").IsSelected = false; userVm.RoomPermissionGrants.PossibleGrants.First(g => g.Model.RoomPermissionTag == "Chat").IsSelected = true; ConfirmGrantSynchronization(userVm.RoomPermissionGrants); } // Setup the mock room service so we can handle validations. mockRoomService.Setup(rs => rs.UpdateRoomPermissions(It.IsAny <LoginSession>(), It.IsAny <Guid>(), It.IsAny <bool>(), It.IsAny <ObservableCollection <RoomPermissionGrant> >(), It.IsAny <OperationCallback>())) .Callback((LoginSession loginSession, Guid roomId, bool isPublic, ObservableCollection <RoomPermissionGrant> grants, OperationCallback callback) => { Assert.AreEqual(6, grants.Count); Assert.AreEqual(0, grants.Count(g => g.RoomPermissionTag == "Administer")); Assert.AreEqual(0, grants.Count(g => g.RoomPermissionTag == "Share")); Assert.AreEqual(3, grants.Count(g => g.RoomPermissionTag == "Join")); Assert.AreEqual(3, grants.Count(g => g.RoomPermissionTag == "Chat")); callback(null); }); // Save it and trigger the validation grantsVm.Save(); mockRoomService.VerifyAll(); }