private static string GetTestData(FilerViewModel.FilerArgs args)
        {
            if (args.CurrentDirectory.StartsWith("Endless"))
            {
                return(FilerTestData.GetEndless(args.CurrentDirectory));
            }

            switch (args.CurrentDirectory)
            {
            case "":
                return(FilerTestData.Root);

            case "LV1_Dynamic/":
                return(FilerTestData.Lv1Dynamic);

            case "BigDir500/":
                return(FilerTestData.GetBigDir(args.CurrentDirectory, 500));

            case "MobileAppTestData/":
                return(FilerTestData.MobileAppTestData);

            default:
                return(FilerTestData.Empty);
            }
        }
Пример #2
0
        public async Task TestDeepLink()
        {
            // Setup
            var path           = "/This/is/a/deeplink/";
            var storageService = new Mock <IIOStorageService>(MockBehavior.Strict);

            storageService.Setup(r => r.DirectoryExists(path)).Returns(true);
            storageService.Setup(r => r.StartOpenFile(It.IsNotNull <string>()));

            storageService.Setup(r => r.GetDirectoryNames(path)).Returns <string>(a => RandomEntries(2));
            storageService.Setup(r => r.GetFileNames(path)).Returns <string>(a => RandomEntries(3));
            storageService.Setup(r => r.Download(It.IsAny <IOListing>(), It.IsNotNull <Action <ResultState> >()))
            .Callback((IOListing a, Action <ResultState> b) => b(ResultState.Success));

            var args = new FilerViewModel.FilerArgs {
                CurrentDirectory = path
            };

            var filerWebHandler = new Mock <IFilerWebHandler>(MockBehavior.Strict);

            filerWebHandler
            .Setup(r => r.GetDirectoryListingAsync(args, It.IsNotNull <CancellationToken>()))
            .Returns <FilerViewModel.FilerArgs, CancellationToken>((a, b) => this.GetRandomEntriesAsync(path));

            var navigationService = new Mock <IMvxNavigationService>(MockBehavior.Strict);

            navigationService.Setup(r => r.Navigate <FilerViewModel, FilerViewModel.FilerArgs>(It.IsAny <FilerViewModel.FilerArgs>(), null)).Returns(Task.CompletedTask);

            this.Ioc.RegisterSingleton(navigationService.Object);
            this.Ioc.RegisterSingleton(filerWebHandler.Object);
            this.Ioc.RegisterSingleton(storageService.Object);

            var viewModel = this.Ioc.IoCConstruct <FilerViewModel>();

            // Exercise
            await viewModel.Init(args);

            // Verify
            storageService.Verify(r => r.DirectoryExists(path), Times.Once);

            Assert.AreEqual(7, viewModel.Listings.Count);

            // Exercise
            viewModel.ShowDetailCommand.Execute(viewModel.Listings.First(t => t.IsDirectory));

            // Open local file
            viewModel.ShowDetailCommand.Execute(viewModel.Listings.First(t => !t.IsDirectory && t.IsLocal));

            // Verify
            storageService.Verify(t => t.StartOpenFile(It.IsNotNull <string>()), Times.Once);

            // Download Remote
            Assert.AreEqual(5, viewModel.Listings.Count(t => t.IsLocal));

            // Exercise
            viewModel.ShowDetailCommand.Execute(viewModel.Listings.First(t => !t.IsDirectory && !t.IsLocal));

            // Verify
            Assert.AreEqual(6, viewModel.Listings.Count(t => t.IsLocal));
        }
Пример #3
0
        protected virtual async Task <string> GetDirectoryListingJsonAsync(FilerViewModel.FilerArgs args, CancellationToken cancellationToken)
        {
            var webClient = new NativeHttpClient(this.httpClientConfiguration);

            webClient
            .AssignAgent(this.device)
            .AssignAcceptTypeJson()
            .AssignBearerToken(await this.oAuth.BearerTokenAsync());

            return(await webClient.GetStringAsync(this.serviceApi.FilerApiUriBase + args.CurrentDirectory, cancellationToken));
        }
Пример #4
0
        public async Task <IEnumerable <IOListing> > GetDirectoryListingAsync(FilerViewModel.FilerArgs args, CancellationToken cancellationToken)
        {
            if (!this.account.HasAccount)
            {
                return(null);
            }

            var response = await this.GetDirectoryListingJsonAsync(args, cancellationToken);

            return(cancellationToken.IsCancellationRequested ? null : response.CreateFromJsonString <Holding>().Data);
        }
Пример #5
0
        public async Task TestExisting()
        {
            // Setup
            var path           = "/This/is/a/deeplink/";
            var storageService = new Mock <IIOStorageService>(MockBehavior.Strict);

            storageService.Setup(r => r.DirectoryExists(path)).Returns(true);

            storageService.Setup(r => r.GetDirectoryNames(path)).Returns <string>(a => RandomEntries(2));
            storageService.Setup(r => r.GetFileNames(path)).Returns <string>(a => RandomEntries(3, true));

            var args = new FilerViewModel.FilerArgs {
                CurrentDirectory = path
            };

            var filerWebHandler = new Mock <IFilerWebHandler>(MockBehavior.Strict);

            filerWebHandler
            .Setup(r => r.GetDirectoryListingAsync(args, It.IsNotNull <CancellationToken>()))
            .Returns <FilerViewModel.FilerArgs, CancellationToken>((a, b) => this.GetRandomEntriesAsync(path, true));

            var navigationService = new Mock <IMvxNavigationService>(MockBehavior.Strict);

            this.Ioc.RegisterSingleton(navigationService.Object);
            this.Ioc.RegisterSingleton(filerWebHandler.Object);
            this.Ioc.RegisterSingleton(storageService.Object);

            var viewModel = this.Ioc.IoCConstruct <FilerViewModel>();

            // Exercise
            await viewModel.Init(args);

            // Verify
            Assert.AreEqual(8, viewModel.Listings.Count);

            Assert.AreEqual(1, viewModel.Listings.Count(t => t.Name.Equals("existing")));
        }
 protected override Task <string> GetDirectoryListingJsonAsync(FilerViewModel.FilerArgs args, CancellationToken cancellationToken)
 {
     return(Task <string> .Factory.StartNew(() => GetTestData(args), cancellationToken));
 }