Example #1
0
        public async Task Accept_incoming_navigation_request()
        {
            var context = TestAppContext.ConstructTestAppContext();

            var firebaseAuthService         = context.TestContainer.Resolve <IFirebaseAuthService>();
            var userRepository              = context.TestContainer.Resolve <IUserRepository>();
            var chatRepository              = context.TestContainer.Resolve <IChatRepository>();
            var mapRepository               = context.TestContainer.Resolve <IMapRepository>();
            var navigationRequestRepository = context.TestContainer.Resolve <INavigateRequestRepository>();
            var requestNavigationService    = context.TestContainer.Resolve <INavigationRequestService>();

            var sut = context.TestContainer.Resolve <RequestViewModel>();

            firebaseAuthService.LoginUser("*****@*****.**", "theday");

            var initiator = await userRepository.GetUser("*****@*****.**");

            var responder = await userRepository.GetUser("*****@*****.**");

            var chat = chatRepository.GetChat(initiator, responder);

            var otherChat = chatRepository.GetChat(responder, initiator);

            var navigationRequest = await navigationRequestRepository.GetNavigationRequest(chat);

            var otherNavigationRequest = await navigationRequestRepository.GetNavigationRequest(otherChat);

            var testHook = new NavigateRequestHook();

            sut.AcceptedHook = testHook;

            sut.Prepare(new NavigateRequestParameters {
                Chat = chat, NavigateRequest = navigationRequest
            });

            await requestNavigationService.InitiatNavigationRequest(navigationRequest);

            await requestNavigationService.AcceptNavigationRequest(otherNavigationRequest);

            testHook.ResetEvent.WaitOne();

            Assert.IsTrue(context.TestNavigationService.TestNavigations.Any(a => a.Parameter is Map));

            userRepository.Dispose();
            navigationRequestRepository.Dispose();
            mapRepository.Dispose();
        }
Example #2
0
        public async Task Incoming_decline_of_request()
        {
            var context = TestAppContext.ConstructTestAppContext();

            var firebaseAuthService         = context.TestContainer.Resolve <IFirebaseAuthService>();
            var userRepository              = context.TestContainer.Resolve <IUserRepository>();
            var chatRepository              = context.TestContainer.Resolve <IChatRepository>();
            var navigationRequestRepository = context.TestContainer.Resolve <INavigateRequestRepository>();
            var requestNavigationService    = context.TestContainer.Resolve <INavigationRequestService>();

            var sut = context.TestContainer.Resolve <RequestViewModel>();

            firebaseAuthService.LoginUser("*****@*****.**", "theday");

            var initiator = await userRepository.GetUser("*****@*****.**");

            var responder = await userRepository.GetUser("*****@*****.**");

            var chat = chatRepository.GetChat(initiator, responder);

            var otherChat = chatRepository.GetChat(responder, initiator);

            var navigateRequest = await navigationRequestRepository.GetNavigationRequest(chat);

            var otherNavigateRequest = await navigationRequestRepository.GetNavigationRequest(otherChat);

            var testHook = new NavigateRequestHook();

            sut.TestHook = testHook;

            sut.Prepare(new NavigateRequestParameters {
                Chat = chat, NavigateRequest = navigateRequest
            });

            await requestNavigationService.DeclineNavigationRequest(otherNavigateRequest);

            testHook.ResetEvent.WaitOne();

            Assert.IsTrue(context.TestNavigationService.TestNavigations.Any(a => a.Parameter is ChatParameters));
            Assert.AreEqual(string.Empty, navigateRequest.InitiatorEmail);
            Assert.AreEqual(false, navigateRequest.IsNavigationActive);

            userRepository.Dispose();
            navigationRequestRepository.Dispose();
        }
        public async Task Recieve_incoming_navigation_request()
        {
            var context = TestAppContext.ConstructTestAppContext();

            var firebaseAuthService          = context.TestContainer.Resolve <IFirebaseAuthService>();
            var userRepository               = context.TestContainer.Resolve <IUserRepository>();
            var chatRepository               = context.TestContainer.Resolve <IChatRepository>();
            var messageRepository            = context.TestContainer.Resolve <IMessageRepository>();
            var navigateRequestRepository    = context.TestContainer.Resolve <INavigateRequestRepository>();
            var testNavigationRequestService = context.TestContainer.Resolve <TestNavigationRequestService>();
            var chatViewModel          = context.TestContainer.Resolve <ChatViewModel>();
            var receivingChatViewModel = context.TestContainer.Resolve <ChatViewModel>();

            firebaseAuthService.LoginUser("*****@*****.**", "theday");

            var initiator = await userRepository.GetUser("*****@*****.**");

            var responder = await userRepository.GetUser("*****@*****.**");

            var chat = chatRepository.GetChat(initiator, responder);

            await testNavigationRequestService.ResetNavigationRequest(chat);

            await chatViewModel.PrepareAsync(new ChatParameters { Chat = chat });

            var testHook = new NavigateRequestHook();

            chatViewModel.TestNavigationHook = testHook;

            await testNavigationRequestService.SendTestNavigationRequest(chat);

            testHook.ResetEvent.WaitOne();

            var navigateRequestNavigation = context.TestNavigationService.TestNavigations.First(f => f.Parameter is NavigateRequestParameters);

            var navigateRequestParameters = (NavigateRequestParameters)navigateRequestNavigation.Parameter;

            Assert.AreEqual(responder.EmailAddress, navigateRequestParameters.NavigateRequest.InitiatorEmail);

            userRepository.Dispose();
            messageRepository.Dispose();
            navigateRequestRepository.Dispose();
        }