Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
            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));
            }
Exemplo n.º 3
0
            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));
            }
Exemplo n.º 4
0
        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();
            }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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));
            }
Exemplo n.º 9
0
 protected AutocompleteProviderTest()
 {
     Provider = new AutocompleteProvider(InteractorFactory);
 }