Пример #1
0
        public async Task TestSelectCommandCanBeExecuted()
        {
            var appsNames = new[] { "App", "AnotherApp", "OneMoreApp" };
            var apps      = appsNames.Select(n => new ApplicationModel
            {
                DisplayName = n
            });

            _autoMocker
            .Setup <IApplicationService, Task <IEnumerable <ApplicationModel> > >(m => m.GetInstalledApplicationsAsync())
            .ReturnsAsync(apps);
            _autoMocker
            .Setup <IApplicationService, Task <IEnumerable <ApplicationModel> > >(m => m.GetAssociatedApplicationsAsync(FileExtension))
            .ReturnsAsync(new[] { apps.First() });

            var dialog    = _autoMocker.CreateInstance <OpenWithDialogViewModel>();
            var parameter = new OpenWithNavigationParameter(FileExtension, null);
            await dialog.ActivateAsync(parameter);

            Assert.True(dialog.SelectCommand.CanExecute(null));
            dialog.SelectedDefaultApplication = null;
            Assert.False(dialog.SelectCommand.CanExecute(null));
            dialog.SelectedOtherApplication = dialog.OtherApplications.First();
            Assert.True(dialog.SelectCommand.CanExecute(null));
        }
Пример #2
0
        public async Task TestSelectedAndMultipleRecommendedApps()
        {
            var selectedApplication = new ApplicationModel
            {
                DisplayName = "App"
            };
            var recommendedApplication = new ApplicationModel
            {
                DisplayName = "AnotherApp"
            };
            var otherApplication = new ApplicationModel
            {
                DisplayName = "OneMoreApp"
            };

            _autoMocker
            .Setup <IApplicationService, Task <IEnumerable <ApplicationModel> > >(m => m.GetAssociatedApplicationsAsync(FileExtension))
            .ReturnsAsync(new[] { recommendedApplication, selectedApplication });
            _autoMocker
            .Setup <IApplicationService, Task <IEnumerable <ApplicationModel> > >(m => m.GetInstalledApplicationsAsync())
            .ReturnsAsync(Enumerable.Repeat(otherApplication, 1));

            var dialog    = _autoMocker.CreateInstance <OpenWithDialogViewModel>();
            var parameter = new OpenWithNavigationParameter(FileExtension, selectedApplication);
            await dialog.ActivateAsync(parameter);

            Assert.Equal(selectedApplication, dialog.SelectedDefaultApplication);
            Assert.Equal(2, dialog.RecommendedApplications.Count());
            Assert.Equal(selectedApplication, dialog.RecommendedApplications.First());
            Assert.Equal(recommendedApplication, dialog.RecommendedApplications.Last());
            Assert.Single(dialog.OtherApplications);
            Assert.Equal(otherApplication, dialog.OtherApplications.Single());
        }
Пример #3
0
        public async Task TestSelectCommand(bool isDefaultApplication)
        {
            var selectedApplication = new ApplicationModel
            {
                DisplayName = "App"
            };

            _autoMocker
            .Setup <IApplicationService, Task <IEnumerable <ApplicationModel> > >(m => m.GetAssociatedApplicationsAsync(FileExtension))
            .ReturnsAsync(new[] { selectedApplication });

            var isCallbackCalled = false;
            var dialog           = _autoMocker.CreateInstance <OpenWithDialogViewModel>();
            var parameter        = new OpenWithNavigationParameter(FileExtension, null);
            await dialog.ActivateAsync(parameter);

            dialog.CloseRequested += (sender, args) =>
            {
                var result = args.Result;

                isCallbackCalled = result != null &&
                                   result.FileExtension == FileExtension &&
                                   result.IsDefaultApplication == isDefaultApplication &&
                                   result.Application == selectedApplication;
            };

            dialog.IsDefaultApplication       = isDefaultApplication;
            dialog.SelectedDefaultApplication = dialog.RecommendedApplications.First();
            dialog.SelectCommand.Execute(null);

            Assert.True(isCallbackCalled);
        }
Пример #4
0
        private async Task <OpenWithDialogResult> ShowOpenWithDialogAsync(string fullPath)
        {
            var fileExtension       = _pathService.GetExtension(fullPath);
            var selectedApplication = _openWithApplicationService.GetSelectedApplication(fileExtension);
            var parameter           = new OpenWithNavigationParameter(fileExtension, selectedApplication);

            return(await _dialogService.ShowDialogAsync <OpenWithDialogResult, OpenWithNavigationParameter>(
                       nameof(OpenWithDialogViewModel), parameter));
        }
        public async Task TestDefaultProperties()
        {
            var dialog    = _autoMocker.CreateInstance <OpenWithDialogViewModel>();
            var parameter = new OpenWithNavigationParameter(FileExtension, null);
            await dialog.ActivateAsync(parameter);

            Assert.Null(dialog.ApplicationName);
            Assert.False(dialog.IsDefaultApplication);
            Assert.Equal(parameter.FileExtension, dialog.OpenFileExtension);
            Assert.Null(dialog.SelectedApplication);
            Assert.Empty(dialog.RecommendedApplications);
            Assert.Empty(dialog.OtherApplications);
            Assert.False(dialog.IsDefaultApplication);
        }
Пример #6
0
        public async Task TestCancelCommand()
        {
            var isCallbackCalled = false;
            var dialog           = _autoMocker.CreateInstance <OpenWithDialogViewModel>();
            var parameter        = new OpenWithNavigationParameter(FileExtension, null);
            await dialog.ActivateAsync(parameter);

            dialog.CloseRequested += (sender, args) =>
            {
                var result = args.Result;
                if (result is null)
                {
                    isCallbackCalled = true;
                }
            };

            dialog.CancelCommand.Execute(null);

            Assert.True(isCallbackCalled);
        }
    public async Task TestSearch(string searchString, int count)
    {
        var appsNames = new[] { "App", "AnotherApp", "OneMoreApp" };
        var apps      = appsNames.Select(n => new ApplicationModel
        {
            DisplayName = n
        }).ToArray();

        _autoMocker
        .Setup <IApplicationService, Task <IEnumerable <ApplicationModel> > >(m => m.GetInstalledApplicationsAsync())
        .ReturnsAsync(apps);

        var dialog    = _autoMocker.CreateInstance <OpenWithDialogViewModel>();
        var parameter = new OpenWithNavigationParameter(FileExtension, null);
        await dialog.ActivateAsync(parameter);

        Assert.Null(dialog.ApplicationName);
        dialog.ApplicationName = searchString;
        Assert.Equal(searchString, dialog.ApplicationName);

        Assert.Equal(count, dialog.OtherApplications.Count());
    }
Пример #8
0
        public async Task TestRecommendedApp()
        {
            var application = new ApplicationModel
            {
                DisplayName = "App"
            };

            _autoMocker
            .Setup <IApplicationService, Task <IEnumerable <ApplicationModel> > >(m => m.GetAssociatedApplicationsAsync(FileExtension))
            .ReturnsAsync(Enumerable.Repeat(application, 1));
            _autoMocker
            .Setup <IApplicationService, Task <IEnumerable <ApplicationModel> > >(m => m.GetInstalledApplicationsAsync())
            .ReturnsAsync(Enumerable.Repeat(application, 1));

            var dialog    = _autoMocker.CreateInstance <OpenWithDialogViewModel>();
            var parameter = new OpenWithNavigationParameter(FileExtension, null);
            await dialog.ActivateAsync(parameter);

            Assert.Equal(application, dialog.SelectedDefaultApplication);
            Assert.Single(dialog.RecommendedApplications);
            Assert.Equal(application, dialog.RecommendedApplications.Single());
            Assert.Empty(dialog.OtherApplications);
        }