public void TestToggle() { var configuration = new SearchViewModelConfiguration(); var regexServiceMock = new Mock <IRegexService>(); var resourceProviderMock = new Mock <IResourceProvider>(); var viewModel = new SearchViewModel(regexServiceMock.Object, resourceProviderMock.Object, configuration); Assert.False(viewModel.IsSearchEnabled); viewModel.SearchText = SearchText; viewModel.ToggleSearch(); Assert.True(viewModel.IsSearchEnabled); Assert.Equal(string.Empty, viewModel.SearchText); viewModel.SearchText = SearchText; viewModel.ToggleSearch(); Assert.False(viewModel.IsSearchEnabled); Assert.Equal(string.Empty, viewModel.SearchText); viewModel.SearchText = SearchText; viewModel.ToggleSearch(); Assert.True(viewModel.IsSearchEnabled); Assert.Equal(string.Empty, viewModel.SearchText); }
public SearchViewModel( IRegexService regexService, IResourceProvider resourceProvider, IApplicationDispatcher applicationDispatcher, SearchViewModelConfiguration searchViewModelConfiguration) { _regexService = regexService; _applicationDispatcher = applicationDispatcher; ToggleSearchCommand = ReactiveCommand.Create(ToggleSearch); Reset(); this.ValidationRule( vm => vm.SearchText, this.WhenAnyValue(x => x.IsRegexSearchEnabled, x => x.SearchText), v => !HasText || IsValid, _ => resourceProvider.GetResourceByName(searchViewModelConfiguration.InvalidRegexResourceName) ); this.WhenAnyValue( x => x.SearchText, x => x.IsSearchEnabled, x => x.IsRegexSearchEnabled, x => x.IsSearchCaseSensitive, x => x.IsRecursiveSearchEnabled) .Throttle(TimeSpan.FromMilliseconds(searchViewModelConfiguration.TimeoutMs)) .Subscribe(_ => FireSettingsChangedEvent()); }
public async Task TestRegexChanged(bool isRegexValid) { var taskCompletionSource = new TaskCompletionSource <bool>(); var regexServiceMock = new Mock <IRegexService>(); regexServiceMock .Setup(m => m.ValidateRegex(SearchText)) .Returns(isRegexValid); var resourceProviderMock = new Mock <IResourceProvider>(); var configuration = new SearchViewModelConfiguration { TimeoutMs = 10 }; var viewModel = new SearchViewModel(regexServiceMock.Object, resourceProviderMock.Object, configuration); viewModel.SearchSettingsChanged += (sender, args) => taskCompletionSource.SetResult(true); viewModel.SearchText = SearchText; viewModel.IsRegexSearchEnabled = true; var task = await Task.WhenAny(Task.Delay(1000), taskCompletionSource.Task); Assert.Equal(isRegexValid, taskCompletionSource.Task == task); }
private static void RegisterSearchViewModelConfiguration(IMutableDependencyResolver services, IConfiguration configuration) { var config = new SearchViewModelConfiguration(); configuration.GetSection("SearchPanel").Bind(config); config.InvalidRegexResourceName = nameof(Resources.InvalidRegex); services.RegisterConstant(config); }
public void TestDefaults() { var configuration = new SearchViewModelConfiguration(); var viewModel = new SearchViewModel(configuration); Assert.False(viewModel.IsSearchEnabled); Assert.False(viewModel.IsRegexSearchEnabled); Assert.False(viewModel.IsSearchCaseSensitive); Assert.Equal(string.Empty, viewModel.SearchText); }
public void TestDefaults() { var regexServiceMock = new Mock <IRegexService>(); var resourceProviderMock = new Mock <IResourceProvider>(); var configuration = new SearchViewModelConfiguration(); var viewModel = new SearchViewModel(regexServiceMock.Object, resourceProviderMock.Object, configuration); Assert.False(viewModel.IsSearchEnabled); Assert.False(viewModel.IsRegexSearchEnabled); Assert.False(viewModel.IsSearchCaseSensitive); Assert.Equal(string.Empty, viewModel.SearchText); }
public void TestSpecification(bool isSearchEnabled, bool isRegexSearchEnabled, Type specificationType) { var configuration = new SearchViewModelConfiguration(); var viewModel = new SearchViewModel(configuration) { IsSearchEnabled = isSearchEnabled, IsRegexSearchEnabled = isRegexSearchEnabled }; var specification = viewModel.GetSpecification(); Assert.IsType(specificationType, specification); }
private static void RegisterConfiguration(IMutableDependencyResolver services) { var configuration = new ConfigurationBuilder() .AddJsonFile("appsettings.json") .Build(); var aboutDialogConfiguration = new AboutDialogConfiguration(); configuration.GetSection("About").Bind(aboutDialogConfiguration); services.RegisterConstant(aboutDialogConfiguration); var databaseName = configuration["DataAccess:DatabaseName"]; var connectionString = configuration["DataAccess:ConnectionString"]; var assemblyLocation = Assembly.GetEntryAssembly()?.Location; var assemblyDirectory = Path.GetDirectoryName(assemblyLocation); var databaseConfiguration = new DatabaseConfiguration { ConnectionString = string.Format(connectionString, Path.Combine(assemblyDirectory, databaseName)) }; services.RegisterConstant(databaseConfiguration); var fileSystemWatcherConfiguration = new FileSystemWatcherConfiguration(); configuration.GetSection("FileSystemWatcher").Bind(fileSystemWatcherConfiguration); services.RegisterConstant(fileSystemWatcherConfiguration); var imagePreviewConfiguration = new ImagePreviewConfiguration(); configuration.GetSection("ImagePreview").Bind(imagePreviewConfiguration); services.RegisterConstant(imagePreviewConfiguration); var filePanelConfiguration = new FilePanelConfiguration(); configuration.GetSection("FilePanel").Bind(filePanelConfiguration); services.RegisterConstant(filePanelConfiguration); var searchViewModelConfiguration = new SearchViewModelConfiguration(); configuration.GetSection("SearchPanel").Bind(searchViewModelConfiguration); searchViewModelConfiguration.InvalidRegexResourceName = nameof(Resources.InvalidRegex); services.RegisterConstant(searchViewModelConfiguration); var driveServiceConfiguration = new DriveServiceConfiguration(); configuration.GetSection("Drives").Bind(driveServiceConfiguration); services.RegisterConstant(driveServiceConfiguration); }
public SearchViewModel( IRegexService regexService, IResourceProvider resourceProvider, SearchViewModelConfiguration searchViewModelConfiguration) { _regexService = regexService; Reset(); this.ValidationRule(vm => vm.SearchText, vm => this.WhenAnyValue(x => x.IsRegexSearchEnabled, x => x.SearchText).Select(_ => IsValid), (vm, r) => resourceProvider.GetResourceByName(searchViewModelConfiguration.InvalidRegexResourceName)); this.WhenAnyValue(x => x.SearchText, x => x.IsSearchEnabled, x => x.IsRegexSearchEnabled, x => x.IsSearchCaseSensitive) .Throttle(TimeSpan.FromMilliseconds(searchViewModelConfiguration.TimeoutMs)) .Subscribe(_ => FireSettingsChangedEvent()); }
public async Task TestSearchCaseChanged() { var taskCompletionSource = new TaskCompletionSource <bool>(); var configuration = new SearchViewModelConfiguration { TimeoutMs = 10 }; var viewModel = new SearchViewModel(configuration); viewModel.SearchSettingsChanged += (sender, args) => taskCompletionSource.SetResult(true); viewModel.IsSearchCaseSensitive = true; var task = await Task.WhenAny(Task.Delay(1000), taskCompletionSource.Task); Assert.Equal(taskCompletionSource.Task, task); }
public async Task TestTextChangedChanged() { var taskCompletionSource = new TaskCompletionSource <bool>(); var regexServiceMock = new Mock <IRegexService>(); var resourceProviderMock = new Mock <IResourceProvider>(); var configuration = new SearchViewModelConfiguration { TimeoutMs = 10 }; var viewModel = new SearchViewModel(regexServiceMock.Object, resourceProviderMock.Object, configuration); viewModel.SearchSettingsChanged += (sender, args) => taskCompletionSource.SetResult(true); viewModel.SearchText = "test"; var task = await Task.WhenAny(Task.Delay(1000), taskCompletionSource.Task); Assert.Equal(taskCompletionSource.Task, task); }
public void TestSpecification(bool isSearchEnabled, bool isRegexSearchEnabled, Type specificationType, bool isRegexValid) { var regexServiceMock = new Mock <IRegexService>(); regexServiceMock .Setup(m => m.ValidateRegex(It.IsAny <string>())) .Returns(isRegexValid); var resourceProviderMock = new Mock <IResourceProvider>(); var configuration = new SearchViewModelConfiguration(); var viewModel = new SearchViewModel(regexServiceMock.Object, resourceProviderMock.Object, configuration) { IsSearchEnabled = isSearchEnabled, IsRegexSearchEnabled = isRegexSearchEnabled }; var specification = viewModel.GetSpecification(); Assert.IsType(specificationType, specification); }
public void TestToggle() { const string searchText = "text"; var configuration = new SearchViewModelConfiguration(); var viewModel = new SearchViewModel(configuration); Assert.False(viewModel.IsSearchEnabled); viewModel.SearchText = searchText; viewModel.ToggleSearch(); Assert.True(viewModel.IsSearchEnabled); Assert.Equal(string.Empty, viewModel.SearchText); viewModel.SearchText = searchText; viewModel.ToggleSearch(); Assert.False(viewModel.IsSearchEnabled); Assert.Equal(string.Empty, viewModel.SearchText); viewModel.SearchText = searchText; viewModel.ToggleSearch(); Assert.True(viewModel.IsSearchEnabled); Assert.Equal(string.Empty, viewModel.SearchText); }