public void DoTheParsing_IdentifiesAliases(string query, Dictionary <string, string> expected) { var provider = new AutocompleteProvider(query); var aliases = new Dictionary <string, string>(); provider.DoTheParsing(9, aliases); aliases.Should().BeEquivalentTo(expected); }
public TheToggleTagSuggestionsCommand() { var tag = Substitute.For <IDatabaseTag>(); tag.Id.Returns(TagId); tag.Name.Returns(TagName); var suggestions = TagSuggestion.FromTags(new[] { tag }); AutocompleteProvider .Query(Arg.Is <TextFieldInfo>(info => info.Text.Contains("#"))) .Returns(Observable.Return(suggestions)); }
public TheToggleProjectSuggestionsCommand() { var suggestions = ProjectSuggestion.FromProjectsPrependingEmpty(Enumerable.Empty <IDatabaseProject>()); AutocompleteProvider .Query(Arg.Is <TextFieldInfo>(info => info.Text.Contains("@"))) .Returns(Observable.Return(suggestions)); AutocompleteProvider .Query(Arg.Any <string>(), Arg.Is(AutocompleteSuggestionType.Projects)) .Returns(Observable.Return(suggestions)); }
public virtual async Task <IHttpActionResult> SuggestTerms(AutoCompleteSearchViewModel request, int limit = MAXIMUM_SEARCH_TERMS_SUGGESTIONS) { string searchTerm = request.Query.Trim().ToLower(); List <string> suggestedTerms = await AutocompleteProvider.GetSearchSuggestedTerms(ComposerContext.CultureInfo, searchTerm).ConfigureAwait(false); SearchTermsSuggestionsViewModel vm = new SearchTermsSuggestionsViewModel() { Suggestions = suggestedTerms .OrderBy(term => term) .Select(term => new SearchTermsSuggestionViewModel { DisplayName = term }) .Take(limit).ToList() }; return(Ok(vm)); }
public async Task ReturnsFalseIfHasProjectsButFilteredProjectCollectionDoesNot() { var projects = Enumerable.Range(0, 5) .Select(createArbitraryProject) .ToList(); DataSource.Projects.GetAll().Returns(Observable.Return(projects)); AutocompleteProvider .Query(Arg.Is <QueryInfo>(arg => arg.SuggestionType == AutocompleteSuggestionType.Projects)) .Returns(Observable.Return(new List <ProjectSuggestion>())); ViewModel.Prepare(SelectProjectParameter.WithIds(null, null, workspaceId)); await ViewModel.Initialize(); ViewModel.Text = "Anything"; ViewModel.IsEmpty.Should().BeFalse(); }
public TogglDataSource(ITogglDatabase database, ITogglApi api, ITimeService timeService, IScheduler scheduler) { Ensure.Argument.IsNotNull(api, nameof(api)); Ensure.Argument.IsNotNull(database, nameof(database)); Ensure.Argument.IsNotNull(timeService, nameof(timeService)); Ensure.Argument.IsNotNull(scheduler, nameof(scheduler)); this.database = database; User = new UserDataSource(database.User); Tags = new TagsDataSource(database.Tags); Tasks = new TasksDataSource(database.Tasks); Workspaces = new WorkspacesDataSource(database); Projects = new ProjectsDataSource(database.Projects); TimeEntries = new TimeEntriesDataSource(database.IdProvider, database.TimeEntries, timeService); AutocompleteProvider = new AutocompleteProvider(database); SyncManager = TogglSyncManager.CreateSyncManager(database, api, this, timeService, scheduler); }
public TogglDataSource( ITogglApi api, ITogglDatabase database, ITimeService timeService, IApiErrorHandlingService apiErrorHandlingService, IBackgroundService backgroundService, Func <ITogglDataSource, ISyncManager> createSyncManager, TimeSpan minimumTimeInBackgroundForFullSync, IApplicationShortcutCreator shortcutCreator) { Ensure.Argument.IsNotNull(api, nameof(api)); Ensure.Argument.IsNotNull(database, nameof(database)); Ensure.Argument.IsNotNull(timeService, nameof(timeService)); Ensure.Argument.IsNotNull(apiErrorHandlingService, nameof(apiErrorHandlingService)); Ensure.Argument.IsNotNull(backgroundService, nameof(backgroundService)); Ensure.Argument.IsNotNull(createSyncManager, nameof(createSyncManager)); Ensure.Argument.IsNotNull(shortcutCreator, nameof(shortcutCreator)); this.database = database; this.apiErrorHandlingService = apiErrorHandlingService; this.backgroundService = backgroundService; this.shortcutCreator = shortcutCreator; this.minimumTimeInBackgroundForFullSync = minimumTimeInBackgroundForFullSync; User = new UserDataSource(database.User, timeService); Tags = new TagsDataSource(database.IdProvider, database.Tags, timeService); Tasks = new TasksDataSource(database.Tasks); Clients = new ClientsDataSource(database.IdProvider, database.Clients, timeService); Preferences = new PreferencesDataSource(database.Preferences); Projects = new ProjectsDataSource(database.IdProvider, database.Projects, timeService); TimeEntries = new TimeEntriesDataSource(database.IdProvider, database.TimeEntries, timeService); AutocompleteProvider = new AutocompleteProvider(database); SyncManager = createSyncManager(this); ReportsProvider = new ReportsProvider(api, database); errorHandlingDisposable = SyncManager.ProgressObservable.Subscribe(onSyncError); isLoggedIn = true; }
protected AutocompleteProviderTest() { Provider = new AutocompleteProvider(Database); Clients = Enumerable.Range(10, 10).Select(id => { var client = Substitute.For <IDatabaseClient>(); client.Id.Returns(id); client.Name.Returns(id.ToString()); return(client); }); Tasks = Enumerable.Range(20, 10).Select(id => { var task = Substitute.For <IDatabaseTask>(); task.Id.Returns(id); task.Name.Returns(id.ToString()); return(task); }).ToList(); Projects = Enumerable.Range(30, 10).Select(id => { var tasks = id % 2 == 0 ? Tasks.Where(t => (t.Id == id - 10 || t.Id == id - 11)).ToList() : null; var project = Substitute.For <IDatabaseProject>(); project.Id.Returns(id); project.Name.Returns(id.ToString()); project.Color.Returns("#1e1e1e"); project.Tasks.Returns(tasks); var client = id % 2 == 0 ? Clients.Single(c => c.Id == id - 20) : null; project.Client.Returns(client); if (tasks != null) { foreach (var task in tasks) { task.ProjectId.Returns(id); } } return(project); }); TimeEntries = Enumerable.Range(40, 10).Select(id => { var timeEntry = Substitute.For <IDatabaseTimeEntry>(); timeEntry.Id.Returns(id); timeEntry.Description.Returns(id.ToString()); var project = id % 2 == 0 ? Projects.Single(c => c.Id == id - 10) : null; timeEntry.Project.Returns(project); var task = id > 45 ? project?.Tasks?.First() : null; //var task = id % 2 == 1 ? Tasks.Single(t => t.Id == id - 20) : null; timeEntry.Task.Returns(task); return(timeEntry); }); Tags = Enumerable.Range(50, 10).Select(id => { var tag = Substitute.For <IDatabaseTag>(); tag.Id.Returns(id); tag.Name.Returns(id.ToString()); return(tag); }); Database.Tasks.GetAll() .Returns(callInfo => Observable.Return(Tasks)); Database.Tags.GetAll() .Returns(callInfo => Observable.Return(Tags)); Database.Projects.GetAll() .Returns(callInfo => Observable.Return(Projects)); Database.TimeEntries.GetAll() .Returns(callInfo => Observable.Return(TimeEntries)); }
protected AutocompleteProviderTest() { Provider = new AutocompleteProvider(InteractorFactory); }