コード例 #1
0
        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);
        }
コード例 #2
0
        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();
        }