コード例 #1
0
        public void WhenLogoutCommandExecuted_UserLoggedOut()
        {
            //Prepare
            Mock <IRegionManager> mockRegionManager = new Mock <IRegionManager>();

            Mock <IUserService> mockUserService = new Mock <IUserService>();

            mockUserService.Setup(x => x.Logout()).Verifiable();
            mockUserService.Setup(x => x.IsLoggedIn).Returns(false);
            mockUserService.Setup(x => x.OnlineStatus).Returns(OnlineStatuses.Offline);

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock <IEventAggregator>     mockedEventAggregator         = new Mock <IEventAggregator>();

            mockedEventAggregator.Setup(x => x.GetEvent <LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            MenubarViewModel target = new MenubarViewModel(mockRegionManager.Object, mockedEventAggregator.Object, mockUserService.Object);

            //Act
            target.LogoutCommand.Execute(null);

            //Verify
            mockUserService.Verify(x => x.Logout(), Times.Once);
            Assert.AreEqual(OnlineStatuses.Offline, target.OnlineStatus);
        }
コード例 #2
0
        public void WhenLoginAsGuestCommandExecuted_UserLoggedIn()
        {
            //Prepare
            Mock <IRegionManager> mockedRegionManager = new Mock <IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock <IEventAggregator>     mockedEventAggregator         = new Mock <IEventAggregator>();

            mockedEventAggregator.Setup(x => x.GetEvent <LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            Mock <IUserService> mockedUserService = new Mock <IUserService>();

            mockedUserService.Setup(x => x.Login(It.Is <string>(user => user == "Guest"),
                                                 It.Is <SecureString>(pass => pass.Length == 0))).Returns(new UserQueryResult()).Verifiable();

            AuthenticateViewModel target = new AuthenticateViewModel(mockedRegionManager.Object,
                                                                     mockedEventAggregator.Object, mockedUserService.Object);

            //Act
            target.LoginAsGuestCommand.Execute(null);

            //Verify
            mockedUserService.Verify(x => x.Login(It.IsAny <string>(), It.IsAny <SecureString>()), Times.Once);
            mockedUserService.VerifyAll();
        }
コード例 #3
0
        public void WhenConstructed_IntializesValues()
        {
            //Prepare
            Mock<IRegionManager> mockedRegionManager = new Mock<IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock<IEventAggregator> mockedEventAggregator = new Mock<IEventAggregator>();
            mockedEventAggregator.Setup(x => x.GetEvent<LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            GameRegion[] gameRegions = new GameRegion[] { 
                new GameRegion { Header = "Asia & Southeast Asia"}, 
                new GameRegion { Header = "Europe"},
                new GameRegion { Header = "Asia"},
                new GameRegion { Header = "China"}};
            Mock<IUserService> mockedUserService = new Mock<IUserService>();
            mockedUserService.Setup(x => x.GameRegions).Returns(gameRegions);
            mockedUserService.Setup(x => x.HomeRegion).Returns(gameRegions[1]);

            //Act
            AuthenticateViewModel target = new AuthenticateViewModel(mockedRegionManager.Object, 
                mockedEventAggregator.Object, mockedUserService.Object);

            //Verify
            Assert.IsInstanceOfType(target.GameRegions, typeof(List<GameRegion>));
            Assert.IsFalse(target.IsLoggedIn);
            Assert.IsFalse(target.LoginFailed);
            Assert.IsNotNull(target.LoginCommand);
            Assert.IsNotNull(target.SelectGameRegionCommand);
            Assert.IsNull(target.SecurePassword);
            Assert.IsNull(target.Username);
            Assert.IsInstanceOfType(target.SelectedRegion, typeof(GameRegion));
            Assert.IsNotNull(target.Notification);
            Assert.IsNotNull(target.ResizeMode);
        }
コード例 #4
0
        public void WhenShowStoreViewCommandExecuted_NavigatesToStoreView()
        {
            //Prepare
            Mock <IRegion> mockMainRegion = new Mock <IRegion>();

            mockMainRegion.Setup(x => x.RequestNavigate(new Uri("StoreView", UriKind.Relative), It.IsAny <Action <NavigationResult> >())).Verifiable();

            Mock <IRegionManager> mockRegionManager = new Mock <IRegionManager>();

            mockRegionManager.Setup(x => x.Regions[RegionNames.MainBody]).Returns(mockMainRegion.Object);
            Mock <IUserService> mockUserService = new Mock <IUserService>();

            mockUserService.Setup(x => x.OnlineStatus).Returns(OnlineStatuses.Online);

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock <IEventAggregator>     mockedEventAggregator         = new Mock <IEventAggregator>();

            mockedEventAggregator.Setup(x => x.GetEvent <LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            MenubarViewModel target = new MenubarViewModel(mockRegionManager.Object, mockedEventAggregator.Object, mockUserService.Object);


            //Act
            target.ShowStoreViewCommand.Execute(null);

            //Verify
            mockMainRegion.Verify(x => x.RequestNavigate(new Uri("StoreView", UriKind.Relative), It.IsAny <Action <NavigationResult> >()), Times.Once());
        }
コード例 #5
0
        public void WhenSelectGameRegionCommandExecuted_SelectedRegionPropertyChanged()
        {
            //Prepare
            Mock <IRegionManager> mockedRegionManager = new Mock <IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock <IEventAggregator>     mockedEventAggregator         = new Mock <IEventAggregator>();

            mockedEventAggregator.Setup(x => x.GetEvent <LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            Mock <IUserService> mockedUserService = new Mock <IUserService>();

            mockedUserService.Setup(x => x.Login(It.Is <string>(user => user == "user"),
                                                 It.Is <SecureString>(pass => pass.Length == 2))).Returns(new UserQueryResult()).Verifiable();

            AuthenticateViewModel target = new AuthenticateViewModel(mockedRegionManager.Object,
                                                                     mockedEventAggregator.Object, mockedUserService.Object);

            GameRegion gameRegion = new GameRegion();

            //Act
            target.SelectGameRegionCommand.Execute(gameRegion);

            //Verify
            Assert.AreEqual(gameRegion, target.SelectedRegion);
        }
コード例 #6
0
        public void WhenNotLoggedIn_NavigateToAuthenticateView()
        {
            //Prepare
            Mock <IRegion> mockRegion = new Mock <IRegion>();

            mockRegion.Setup(x => x.RequestNavigate(new Uri("AuthenticateView", UriKind.Relative), It.IsAny <Action <NavigationResult> >())).Verifiable();

            Mock <IRegionManager> mockedRegionManager = new Mock <IRegionManager>();

            mockedRegionManager.Setup(x => x.Regions[RegionNames.ShellContentRegion]).Returns(mockRegion.Object);

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock <IEventAggregator>     mockedEventAggregator         = new Mock <IEventAggregator>();

            mockedEventAggregator.Setup(x => x.GetEvent <LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            Mock <IUserService> mockedUserService = new Mock <IUserService>();

            mockedUserService.Setup(x => x.IsLoggedIn).Returns(false);

            //Act
            AuthenticateViewModel target = new AuthenticateViewModel(mockedRegionManager.Object,
                                                                     mockedEventAggregator.Object, mockedUserService.Object);

            target.IsLoggedIn = true;
            mockedLoginStatusChangedEvent.Publish(mockedUserService.Object);

            //Verify
            Assert.IsFalse(target.IsLoggedIn);
            mockRegion.Verify(x => x.RequestNavigate(new Uri("AuthenticateView", UriKind.Relative), It.IsAny <Action <NavigationResult> >()), Times.Once());
        }
コード例 #7
0
        public void WhenLoginStatusChangedEvent_PropertiesUpdated()
        {
            //Prepare
            Mock <IRegionManager> mockedRegionManager = new Mock <IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock <IEventAggregator>     mockedEventAggregator         = new Mock <IEventAggregator>();

            mockedEventAggregator.Setup(x => x.GetEvent <LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            Mock <IUserService> mockedUserService = new Mock <IUserService>();

            mockedUserService.Setup(x => x.IsLoggedIn).Returns(true);
            mockedUserService.Setup(x => x.CurrentUser).Returns(new UserInformation {
                Username = "******"
            });
            mockedUserService.Setup(x => x.OnlineStatus).Returns(OnlineStatuses.Online);

            //Act
            MenubarViewModel target = new MenubarViewModel(mockedRegionManager.Object,
                                                           mockedEventAggregator.Object, mockedUserService.Object);

            mockedLoginStatusChangedEvent.Publish(mockedUserService.Object);

            //Verify
            Assert.AreEqual("User", target.Username);
            Assert.AreEqual(OnlineStatuses.Online, target.OnlineStatus);
        }
コード例 #8
0
        public void WhenConstructed_IntializesValues()
        {
            //Prepare
            Mock <IRegionManager> mockedRegionManager = new Mock <IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock <IEventAggregator>     mockedEventAggregator         = new Mock <IEventAggregator>();

            mockedEventAggregator.Setup(x => x.GetEvent <LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            GameRegion[] gameRegions = new GameRegion[] {
                new GameRegion {
                    Header = "Asia & Southeast Asia"
                },
                new GameRegion {
                    Header = "Europe"
                },
                new GameRegion {
                    Header = "Asia"
                },
                new GameRegion {
                    Header = "China"
                }
            };
            Mock <IUserService> mockedUserService = new Mock <IUserService>();

            mockedUserService.Setup(x => x.GameRegions).Returns(gameRegions);
            mockedUserService.Setup(x => x.HomeRegion).Returns(gameRegions[1]);

            //Act
            AuthenticateViewModel target = new AuthenticateViewModel(mockedRegionManager.Object,
                                                                     mockedEventAggregator.Object, mockedUserService.Object);

            //Verify
            Assert.IsInstanceOfType(target.GameRegions, typeof(List <GameRegion>));
            Assert.IsFalse(target.IsLoggedIn);
            Assert.IsFalse(target.LoginFailed);
            Assert.IsNotNull(target.LoginCommand);
            Assert.IsNotNull(target.SelectGameRegionCommand);
            Assert.IsNull(target.SecurePassword);
            Assert.IsNull(target.Username);
            Assert.IsInstanceOfType(target.SelectedRegion, typeof(GameRegion));
            Assert.IsNotNull(target.Notification);
            Assert.IsNotNull(target.ResizeMode);
        }
コード例 #9
0
        public void WhenPropertyChanged_PropertyIsUpdated()
        {
            //Prepare
            Mock <IRegionManager> mockedRegionManager = new Mock <IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock <IEventAggregator>     mockedEventAggregator         = new Mock <IEventAggregator>();

            mockedEventAggregator.Setup(x => x.GetEvent <LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            Mock <IUserService> mockedUserService = new Mock <IUserService>();

            mockedUserService.Setup(x => x.OnlineStatus).Returns(OnlineStatuses.Offline);

            MenubarViewModel target = new MenubarViewModel(mockedRegionManager.Object,
                                                           mockedEventAggregator.Object, mockedUserService.Object);


            bool userNameChangedRaised = false;

            target.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "Username")
                {
                    userNameChangedRaised = true;
                }
            };

            bool onlineStatusChangedRaised = false;

            target.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "OnlineStatus")
                {
                    onlineStatusChangedRaised = true;
                }
            };

            target.Username     = "";
            target.OnlineStatus = OnlineStatuses.Online;

            //Verify
            Assert.IsTrue(userNameChangedRaised);
            Assert.IsTrue(onlineStatusChangedRaised);
        }
コード例 #10
0
        public void WhenSelectGameRegionChanged_HomeRegionUpdated()
        {
            //Prepare
            Mock <IRegionManager> mockedRegionManager = new Mock <IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock <IEventAggregator>     mockedEventAggregator         = new Mock <IEventAggregator>();

            mockedEventAggregator.Setup(x => x.GetEvent <LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            GameRegion[] gameRegions = new GameRegion[] {
                new GameRegion {
                    Header = "Asia & Southeast Asia"
                },
                new GameRegion {
                    Header = "Europe"
                },
                new GameRegion {
                    Header = "Asia"
                },
                new GameRegion {
                    Header = "China"
                }
            };
            Mock <IUserService> mockedUserService = new Mock <IUserService>();

            mockedUserService.Setup(x => x.GameRegions).Returns(gameRegions);
            mockedUserService.SetupSet(x => x.HomeRegion = gameRegions[0]).Verifiable();
            mockedUserService.SetupGet(x => x.HomeRegion).Returns(gameRegions[1]);

            //Act
            AuthenticateViewModel target = new AuthenticateViewModel(mockedRegionManager.Object,
                                                                     mockedEventAggregator.Object, mockedUserService.Object);


            //Act
            target.SelectedRegion = gameRegions[0];

            //Verify
            Assert.AreEqual(gameRegions[0], target.SelectedRegion);
            Assert.IsInstanceOfType(target.GameRegions, typeof(List <GameRegion>));
            mockedUserService.VerifySet(x => x.HomeRegion = gameRegions[0]);
        }
コード例 #11
0
        public void ValidatesProperties()
        {
            //Prepare
            Mock <IRegionManager> mockedRegionManager = new Mock <IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock <IEventAggregator>     mockedEventAggregator         = new Mock <IEventAggregator>();

            mockedEventAggregator.Setup(x => x.GetEvent <LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            Mock <IUserService> mockedUserService = new Mock <IUserService>();

            //Act
            AuthenticateViewModel target = new AuthenticateViewModel(mockedRegionManager.Object,
                                                                     mockedEventAggregator.Object, mockedUserService.Object);

            //Verify
            Assert.IsNotNull(((IDataErrorInfo)target)["Username"]);
            Assert.IsNotNull(((IDataErrorInfo)target)["SecurePassword"]);
        }
コード例 #12
0
        public void WhenConstructed_IntializesValues()
        {
            //Prepare
            Mock<IRegionManager> mockedRegionManager = new Mock<IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock<IEventAggregator> mockedEventAggregator = new Mock<IEventAggregator>();
            mockedEventAggregator.Setup(x => x.GetEvent<LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            Mock<IUserService> mockedUserService = new Mock<IUserService>();
            mockedUserService.Setup(x => x.OnlineStatus).Returns(OnlineStatuses.Offline);

            //Act
            MenubarViewModel target = new MenubarViewModel(mockedRegionManager.Object,
                mockedEventAggregator.Object, mockedUserService.Object);

            //Verify
            Assert.IsNull(target.Username);
            Assert.AreEqual(OnlineStatuses.Offline, target.OnlineStatus);
        }
コード例 #13
0
        public async Task WhenLoginCommandExecuted_UserLoggedIn()
        {
            //Prepare
            Mock <IRegionManager> mockedRegionManager = new Mock <IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock <IEventAggregator>     mockedEventAggregator         = new Mock <IEventAggregator>();

            mockedEventAggregator.Setup(x => x.GetEvent <LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            Mock <IUserService> mockedUserService = new Mock <IUserService>();

            mockedUserService.Setup(x => x.LoginAsync(It.Is <string>(user => user == "user"),
                                                      It.Is <SecureString>(pass => pass.Length == 4), It.IsAny <CancellationToken>())).
            Returns(Task.FromResult(new UserQueryResult {
                Success = true
            })).Verifiable();

            AuthenticateViewModel target = new AuthenticateViewModel(mockedRegionManager.Object,
                                                                     mockedEventAggregator.Object, mockedUserService.Object);

            char[] password = "******".ToCharArray();
            target.SecurePassword = new SecureString();
            foreach (char c in password)
            {
                target.SecurePassword.AppendChar(c);
            }

            target.Username = "******";

            //Act
            target.LoginCommand.Execute(null);

            //Verify
            await Task.Delay(5000);

            mockedUserService.Verify(x => x.LoginAsync(It.IsAny <string>(), It.IsAny <SecureString>(),
                                                       It.IsAny <CancellationToken>()), Times.Once);
            mockedUserService.VerifyAll();
            target.LoginFailed = false;
        }
コード例 #14
0
        public void WhenMissingUsernameOrPassword_CantExecuteLoginCommand()
        {
            //Prepare
            Mock <IRegionManager> mockedRegionManager = new Mock <IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock <IEventAggregator>     mockedEventAggregator         = new Mock <IEventAggregator>();

            mockedEventAggregator.Setup(x => x.GetEvent <LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            Mock <IUserService> mockedUserService = new Mock <IUserService>();

            //Act
            AuthenticateViewModel target = new AuthenticateViewModel(mockedRegionManager.Object,
                                                                     mockedEventAggregator.Object, mockedUserService.Object);

            target.Username = "******";

            //Verify
            Assert.IsFalse(target.LoginCommand.CanExecute(null));
        }
コード例 #15
0
        public void WhenConstructed_IntializesValues()
        {
            //Prepare
            Mock <IRegionManager> mockedRegionManager = new Mock <IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock <IEventAggregator>     mockedEventAggregator         = new Mock <IEventAggregator>();

            mockedEventAggregator.Setup(x => x.GetEvent <LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            Mock <IUserService> mockedUserService = new Mock <IUserService>();

            mockedUserService.Setup(x => x.OnlineStatus).Returns(OnlineStatuses.Offline);

            //Act
            MenubarViewModel target = new MenubarViewModel(mockedRegionManager.Object,
                                                           mockedEventAggregator.Object, mockedUserService.Object);

            //Verify
            Assert.IsNull(target.Username);
            Assert.AreEqual(OnlineStatuses.Offline, target.OnlineStatus);
        }
コード例 #16
0
        public void WhenLogoutCommandExecuted_UserLoggedOut()
        {
            //Prepare
            Mock<IRegionManager> mockRegionManager = new Mock<IRegionManager>();

            Mock<IUserService> mockUserService = new Mock<IUserService>();
            mockUserService.Setup(x => x.Logout()).Verifiable();
            mockUserService.Setup(x => x.IsLoggedIn).Returns(false);
            mockUserService.Setup(x => x.OnlineStatus).Returns(OnlineStatuses.Offline);

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock<IEventAggregator> mockedEventAggregator = new Mock<IEventAggregator>();
            mockedEventAggregator.Setup(x => x.GetEvent<LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            MenubarViewModel target = new MenubarViewModel(mockRegionManager.Object, mockedEventAggregator.Object, mockUserService.Object);

            //Act
            target.LogoutCommand.Execute(null);

            //Verify
            mockUserService.Verify(x => x.Logout(), Times.Once);
            Assert.AreEqual(OnlineStatuses.Offline, target.OnlineStatus);
        }
コード例 #17
0
        public void WhenLoginStatusChangedEvent_PropertyUpdated()
        {
            //Prepare
            Mock <IRegionManager> mockedRegionManager = new Mock <IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock <IEventAggregator>     mockedEventAggregator         = new Mock <IEventAggregator>();

            mockedEventAggregator.Setup(x => x.GetEvent <LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            Mock <IUserService> mockedUserService = new Mock <IUserService>();

            mockedUserService.Setup(x => x.IsLoggedIn).Returns(true);

            //Act
            AuthenticateViewModel target = new AuthenticateViewModel(mockedRegionManager.Object,
                                                                     mockedEventAggregator.Object, mockedUserService.Object);

            mockedLoginStatusChangedEvent.Publish(mockedUserService.Object);

            //Verify
            Assert.IsTrue(target.IsLoggedIn);
        }
コード例 #18
0
        public void WhenLoginStatusChangedEvent_PropertiesUpdated()
        {
            //Prepare
            Mock<IRegionManager> mockedRegionManager = new Mock<IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock<IEventAggregator> mockedEventAggregator = new Mock<IEventAggregator>();
            mockedEventAggregator.Setup(x => x.GetEvent<LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            Mock<IUserService> mockedUserService = new Mock<IUserService>();
            mockedUserService.Setup(x => x.IsLoggedIn).Returns(true);
            mockedUserService.Setup(x => x.CurrentUser).Returns(new UserInformation { Username = "******" });
            mockedUserService.Setup(x => x.OnlineStatus).Returns(OnlineStatuses.Online);

            //Act
            MenubarViewModel target = new MenubarViewModel(mockedRegionManager.Object,
                mockedEventAggregator.Object, mockedUserService.Object);
            mockedLoginStatusChangedEvent.Publish(mockedUserService.Object);

            //Verify
            Assert.AreEqual("User", target.Username);
            Assert.AreEqual(OnlineStatuses.Online, target.OnlineStatus);
        }
コード例 #19
0
        public void WhenPropertyChanged_PropertyIsUpdated()
        {
            //Prepare
            Mock <IRegionManager> mockedRegionManager = new Mock <IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock <IEventAggregator>     mockedEventAggregator         = new Mock <IEventAggregator>();

            mockedEventAggregator.Setup(x => x.GetEvent <LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            GameRegion[] gameRegions = new GameRegion[] {
                new GameRegion {
                    Header = "Asia & Southeast Asia"
                },
                new GameRegion {
                    Header = "Europe"
                },
                new GameRegion {
                    Header = "Asia"
                },
                new GameRegion {
                    Header = "China"
                }
            };
            Mock <IUserService> mockedUserService = new Mock <IUserService>();

            mockedUserService.Setup(x => x.GameRegions).Returns(gameRegions);
            mockedUserService.Setup(x => x.HomeRegion).Returns(gameRegions[1]);

            AuthenticateViewModel target = new AuthenticateViewModel(mockedRegionManager.Object,
                                                                     mockedEventAggregator.Object, mockedUserService.Object);

            bool isLoggedInChangedRaised = false;

            target.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "IsLoggedIn")
                {
                    isLoggedInChangedRaised = true;
                }
            };

            bool userNameChangedRaised = false;

            target.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "Username")
                {
                    userNameChangedRaised = true;
                }
            };

            bool passwordChangedRaised = false;

            target.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "SecurePassword")
                {
                    passwordChangedRaised = true;
                }
            };

            bool selectedRegionChangedRaised = false;

            target.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "SelectedRegion")
                {
                    selectedRegionChangedRaised = true;
                }
            };

            bool gameRegionsChangedRaised = false;

            target.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "GameRegions")
                {
                    gameRegionsChangedRaised = true;
                }
            };

            bool loginFailedChangedRaised = false;

            target.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "LoginFailed")
                {
                    loginFailedChangedRaised = true;
                }
            };

            bool notificationChangedRaised = false;

            target.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "Notification")
                {
                    notificationChangedRaised = true;
                }
            };

            bool resizeModeChangedRaised = false;

            target.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "ResizeMode")
                {
                    resizeModeChangedRaised = true;
                }
            };

            //Act
            target.IsLoggedIn     = true;
            target.LoginFailed    = true;
            target.GameRegions    = null;
            target.SecurePassword = new System.Security.SecureString();
            target.SelectedRegion = null;
            target.Username       = "";
            target.Notification   = "";
            target.ResizeMode     = "";

            //Verify
            Assert.IsTrue(isLoggedInChangedRaised);
            Assert.IsTrue(loginFailedChangedRaised);
            Assert.IsTrue(userNameChangedRaised);
            Assert.IsTrue(passwordChangedRaised);
            Assert.IsTrue(selectedRegionChangedRaised);
            Assert.IsTrue(gameRegionsChangedRaised);
            Assert.IsTrue(notificationChangedRaised);
            Assert.IsTrue(resizeModeChangedRaised);
        }
コード例 #20
0
        public void WhenShowStoreViewCommandExecuted_NavigatesToStoreView()
        {
            //Prepare
            Mock<IRegion> mockMainRegion = new Mock<IRegion>();
            mockMainRegion.Setup(x => x.RequestNavigate(new Uri("StoreView", UriKind.Relative), It.IsAny<Action<NavigationResult>>())).Verifiable();

            Mock<IRegionManager> mockRegionManager = new Mock<IRegionManager>();
            mockRegionManager.Setup(x => x.Regions[RegionNames.MainBody]).Returns(mockMainRegion.Object);
            Mock<IUserService> mockUserService = new Mock<IUserService>();
            mockUserService.Setup(x => x.OnlineStatus).Returns(OnlineStatuses.Online);

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock<IEventAggregator> mockedEventAggregator = new Mock<IEventAggregator>();
            mockedEventAggregator.Setup(x => x.GetEvent<LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            MenubarViewModel target = new MenubarViewModel(mockRegionManager.Object, mockedEventAggregator.Object, mockUserService.Object);

            //Act
            target.ShowStoreViewCommand.Execute(null);

            //Verify
            mockMainRegion.Verify(x => x.RequestNavigate(new Uri("StoreView", UriKind.Relative), It.IsAny<Action<NavigationResult>>()), Times.Once());
        }
コード例 #21
0
        public void WhenLoginCommandFails_LoginFailedSet()
        {
            //Prepare
            Mock<IRegionManager> mockedRegionManager = new Mock<IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock<IEventAggregator> mockedEventAggregator = new Mock<IEventAggregator>();
            mockedEventAggregator.Setup(x => x.GetEvent<LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            Mock<IUserService> mockedUserService = new Mock<IUserService>();
            mockedUserService.Setup(x => x.LoginAsync(It.Is<string>(user => user == "user"),
                It.Is<SecureString>(pass => pass.Length == 4), It.IsAny<CancellationToken>())).
                Returns( Task.FromResult(new UserQueryResult { Success = false })).Verifiable();

            AuthenticateViewModel target = new AuthenticateViewModel(mockedRegionManager.Object,
                mockedEventAggregator.Object, mockedUserService.Object);
            char[] password = "******".ToCharArray();
            target.SecurePassword = new SecureString();
            foreach (char c in password)
            {
                target.SecurePassword.AppendChar(c);
            }

            target.Username = "******";

            //Act
            target.LoginCommand.Execute(null);

            //Verify
            mockedUserService.Verify(x => x.LoginAsync(It.IsAny<string>(), It.IsAny<SecureString>(), 
                It.IsAny<CancellationToken>()), Times.Once);
            mockedUserService.VerifyAll();
            target.LoginFailed = true;
        }
コード例 #22
0
        public void ValidatesProperties()
        {
            //Prepare
            Mock<IRegionManager> mockedRegionManager = new Mock<IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock<IEventAggregator> mockedEventAggregator = new Mock<IEventAggregator>();
            mockedEventAggregator.Setup(x => x.GetEvent<LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            Mock<IUserService> mockedUserService = new Mock<IUserService>();

            //Act
            AuthenticateViewModel target = new AuthenticateViewModel(mockedRegionManager.Object,
                mockedEventAggregator.Object, mockedUserService.Object);

            //Verify
            Assert.IsNotNull(((IDataErrorInfo)target)["Username"]);
            Assert.IsNotNull(((IDataErrorInfo)target)["SecurePassword"]);
        }
コード例 #23
0
        public void WhenPropertyChanged_PropertyIsUpdated()
        {
            //Prepare
            Mock<IRegionManager> mockedRegionManager = new Mock<IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock<IEventAggregator> mockedEventAggregator = new Mock<IEventAggregator>();
            mockedEventAggregator.Setup(x => x.GetEvent<LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            GameRegion[] gameRegions = new GameRegion[] { 
                new GameRegion { Header = "Asia & Southeast Asia"}, 
                new GameRegion { Header = "Europe"},
                new GameRegion { Header = "Asia"},
                new GameRegion { Header = "China"}};
            Mock<IUserService> mockedUserService = new Mock<IUserService>();
            mockedUserService.Setup(x => x.GameRegions).Returns(gameRegions);
            mockedUserService.Setup(x => x.HomeRegion).Returns(gameRegions[1]);

            AuthenticateViewModel target = new AuthenticateViewModel(mockedRegionManager.Object,
                mockedEventAggregator.Object, mockedUserService.Object);

            bool isLoggedInChangedRaised = false;
            target.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "IsLoggedIn")
                {
                    isLoggedInChangedRaised = true;
                }
            };

            bool userNameChangedRaised = false;
            target.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "Username")
                {
                    userNameChangedRaised = true;
                }
            };

            bool passwordChangedRaised = false;
            target.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "SecurePassword")
                {
                    passwordChangedRaised = true;
                }
            };

            bool selectedRegionChangedRaised = false;
            target.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "SelectedRegion")
                {
                    selectedRegionChangedRaised = true;
                }
            };

            bool gameRegionsChangedRaised = false;
            target.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "GameRegions")
                {
                    gameRegionsChangedRaised = true;
                }
            };

            bool loginFailedChangedRaised = false;
            target.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "LoginFailed")
                {
                    loginFailedChangedRaised = true;
                }
            };

            bool notificationChangedRaised = false;
            target.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "Notification")
                {
                    notificationChangedRaised = true;
                }
            };

            bool resizeModeChangedRaised = false;
            target.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "ResizeMode")
                {
                    resizeModeChangedRaised = true;
                }
            };

            //Act
            target.IsLoggedIn = true;
            target.LoginFailed = true;
            target.GameRegions = null;
            target.SecurePassword = new System.Security.SecureString();
            target.SelectedRegion = null;
            target.Username = "";
            target.Notification = "";
            target.ResizeMode = "";

            //Verify
            Assert.IsTrue(isLoggedInChangedRaised);
            Assert.IsTrue(loginFailedChangedRaised);
            Assert.IsTrue(userNameChangedRaised);
            Assert.IsTrue(passwordChangedRaised);
            Assert.IsTrue(selectedRegionChangedRaised);
            Assert.IsTrue(gameRegionsChangedRaised);
            Assert.IsTrue(notificationChangedRaised);
            Assert.IsTrue(resizeModeChangedRaised);
        }
コード例 #24
0
        public void WhenSelectGameRegionCommandExecuted_SelectedRegionPropertyChanged()
        {
            //Prepare
            Mock<IRegionManager> mockedRegionManager = new Mock<IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock<IEventAggregator> mockedEventAggregator = new Mock<IEventAggregator>();
            mockedEventAggregator.Setup(x => x.GetEvent<LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            Mock<IUserService> mockedUserService = new Mock<IUserService>();
            mockedUserService.Setup(x => x.Login(It.Is<string>(user => user == "user"),
                It.Is<SecureString>(pass => pass.Length == 2))).Returns(new UserQueryResult()).Verifiable();

            AuthenticateViewModel target = new AuthenticateViewModel(mockedRegionManager.Object,
                mockedEventAggregator.Object, mockedUserService.Object);

            GameRegion gameRegion = new GameRegion();

            //Act
            target.SelectGameRegionCommand.Execute(gameRegion);

            //Verify
            Assert.AreEqual(gameRegion, target.SelectedRegion);
        }
コード例 #25
0
        public void WhenSelectGameRegionChanged_HomeRegionUpdated()
        {
            //Prepare
            Mock<IRegionManager> mockedRegionManager = new Mock<IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock<IEventAggregator> mockedEventAggregator = new Mock<IEventAggregator>();
            mockedEventAggregator.Setup(x => x.GetEvent<LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            GameRegion[] gameRegions = new GameRegion[] { 
                new GameRegion { Header = "Asia & Southeast Asia"}, 
                new GameRegion { Header = "Europe"},
                new GameRegion { Header = "Asia"},
                new GameRegion { Header = "China"}};
            Mock<IUserService> mockedUserService = new Mock<IUserService>();
            mockedUserService.Setup(x => x.GameRegions).Returns(gameRegions);
            mockedUserService.SetupSet(x => x.HomeRegion = gameRegions[0]).Verifiable();
            mockedUserService.SetupGet(x => x.HomeRegion).Returns(gameRegions[1]);
            
            //Act
            AuthenticateViewModel target = new AuthenticateViewModel(mockedRegionManager.Object,
                mockedEventAggregator.Object, mockedUserService.Object);


            //Act
            target.SelectedRegion = gameRegions[0];

            //Verify
            Assert.AreEqual(gameRegions[0], target.SelectedRegion);
            Assert.IsInstanceOfType(target.GameRegions, typeof(List<GameRegion>));
            mockedUserService.VerifySet(x => x.HomeRegion = gameRegions[0]);
        }
コード例 #26
0
        public void WhenNotLoggedIn_NavigateToAuthenticateView()
        {
            //Prepare
            Mock<IRegion> mockRegion = new Mock<IRegion>();
            mockRegion.Setup(x => x.RequestNavigate(new Uri("AuthenticateView", UriKind.Relative), It.IsAny<Action<NavigationResult>>())).Verifiable();

            Mock<IRegionManager> mockedRegionManager = new Mock<IRegionManager>();
            mockedRegionManager.Setup(x => x.Regions[RegionNames.ShellContentRegion]).Returns(mockRegion.Object);

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock<IEventAggregator> mockedEventAggregator = new Mock<IEventAggregator>();
            mockedEventAggregator.Setup(x => x.GetEvent<LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            Mock<IUserService> mockedUserService = new Mock<IUserService>();
            mockedUserService.Setup(x => x.IsLoggedIn).Returns(false);

            //Act
            AuthenticateViewModel target = new AuthenticateViewModel(mockedRegionManager.Object,
                mockedEventAggregator.Object, mockedUserService.Object);
            target.IsLoggedIn = true;
            mockedLoginStatusChangedEvent.Publish(mockedUserService.Object);

            //Verify
            Assert.IsFalse(target.IsLoggedIn);
            mockRegion.Verify(x => x.RequestNavigate(new Uri("AuthenticateView", UriKind.Relative), It.IsAny<Action<NavigationResult>>()), Times.Once());
        }
コード例 #27
0
        public void WhenMissingUsernameOrPassword_CantExecuteLoginCommand()
        {
            //Prepare
            Mock<IRegionManager> mockedRegionManager = new Mock<IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock<IEventAggregator> mockedEventAggregator = new Mock<IEventAggregator>();
            mockedEventAggregator.Setup(x => x.GetEvent<LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            Mock<IUserService> mockedUserService = new Mock<IUserService>();

            //Act
            AuthenticateViewModel target = new AuthenticateViewModel(mockedRegionManager.Object,
                mockedEventAggregator.Object, mockedUserService.Object);
            target.Username = "******";

            //Verify
            Assert.IsFalse(target.LoginCommand.CanExecute(null));
        }
コード例 #28
0
        public void WhenLoginAsGuestCommandExecuted_UserLoggedIn()
        {
            //Prepare
            Mock<IRegionManager> mockedRegionManager = new Mock<IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock<IEventAggregator> mockedEventAggregator = new Mock<IEventAggregator>();
            mockedEventAggregator.Setup(x => x.GetEvent<LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            Mock<IUserService> mockedUserService = new Mock<IUserService>();
            mockedUserService.Setup(x => x.Login(It.Is<string>(user => user == "Guest"),
                It.Is<SecureString>(pass => pass.Length == 0))).Returns(new UserQueryResult()).Verifiable();

            AuthenticateViewModel target = new AuthenticateViewModel(mockedRegionManager.Object,
                mockedEventAggregator.Object, mockedUserService.Object);            

            //Act
            target.LoginAsGuestCommand.Execute(null);

            //Verify
            mockedUserService.Verify(x => x.Login(It.IsAny<string>(), It.IsAny<SecureString>()), Times.Once);
            mockedUserService.VerifyAll();
        }
コード例 #29
0
        public void WhenPropertyChanged_PropertyIsUpdated()
        {
            //Prepare
            Mock<IRegionManager> mockedRegionManager = new Mock<IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock<IEventAggregator> mockedEventAggregator = new Mock<IEventAggregator>();
            mockedEventAggregator.Setup(x => x.GetEvent<LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            Mock<IUserService> mockedUserService = new Mock<IUserService>();
            mockedUserService.Setup(x => x.OnlineStatus).Returns(OnlineStatuses.Offline);

            MenubarViewModel target = new MenubarViewModel(mockedRegionManager.Object,
                mockedEventAggregator.Object, mockedUserService.Object);

            bool userNameChangedRaised = false;
            target.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "Username")
                {
                    userNameChangedRaised = true;
                }
            };

            bool onlineStatusChangedRaised = false;
            target.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
            {
                if (e.PropertyName == "OnlineStatus")
                {
                    onlineStatusChangedRaised = true;
                }
            };

            target.Username = "";
            target.OnlineStatus = OnlineStatuses.Online;

            //Verify
            Assert.IsTrue(userNameChangedRaised);
            Assert.IsTrue(onlineStatusChangedRaised);
        }
コード例 #30
0
        public void WhenLoginStatusChangedEvent_PropertyUpdated()
        {
            //Prepare
            Mock<IRegionManager> mockedRegionManager = new Mock<IRegionManager>();

            MockLoginStatusChangedEvent mockedLoginStatusChangedEvent = new MockLoginStatusChangedEvent();
            Mock<IEventAggregator> mockedEventAggregator = new Mock<IEventAggregator>();
            mockedEventAggregator.Setup(x => x.GetEvent<LoginStatusChangedEvent>()).Returns(mockedLoginStatusChangedEvent);

            Mock<IUserService> mockedUserService = new Mock<IUserService>();
            mockedUserService.Setup(x => x.IsLoggedIn).Returns(true);

            //Act
            AuthenticateViewModel target = new AuthenticateViewModel(mockedRegionManager.Object,
                mockedEventAggregator.Object, mockedUserService.Object);
            mockedLoginStatusChangedEvent.Publish(mockedUserService.Object);

            //Verify
            Assert.IsTrue(target.IsLoggedIn);
        }