public SelectableTagViewModel(TagSuggestion tagSuggestion, bool selected)
 {
     Id        = tagSuggestion.TagId;
     Name      = tagSuggestion.Name;
     Workspace = tagSuggestion.WorkspaceName;
     Selected  = selected;
 }
Пример #2
0
            public async Task ReturnsFalseIfTagIsCreated()
            {
                InteractorFactory
                .GetTagsAutocompleteSuggestions(Arg.Any <IList <string> >())
                .Execute()
                .Returns(Observable.Return(new List <AutocompleteSuggestion>()));

                var newTag = Substitute.For <IThreadSafeTag>();

                newTag.Id.Returns(12345);
                newTag.WorkspaceId.Returns(workspaceId);
                newTag.Name.Returns("new tag");

                ViewModel.Prepare((new long[] { }, workspaceId));

                var observer = TestScheduler.CreateObserver <bool>();
                await ViewModel.Initialize();

                ViewModel.IsEmpty.Subscribe(observer);
                InteractorFactory
                .GetTagsAutocompleteSuggestions(Arg.Any <IList <string> >())
                .Execute()
                .Returns(Observable.Return(TagSuggestion.FromTags(new List <IThreadSafeTag> {
                    newTag
                })));
                ViewModel.FilterText.OnNext(string.Empty);
                TestScheduler.Start();

                observer.LastEmittedValue().Should().BeFalse();
            }
            public void PrependsTheNewTagToTheTagList()
            {
                var  tagName     = "Some Tag";
                long workspaceId = 123;
                var  initialTags = CreateTags(count: 10);

                InteractorFactory
                .GetTagsAutocompleteSuggestions(Arg.Any <IList <string> >())
                .Execute()
                .Returns(Observable.Return(initialTags));
                var createdTag = CreateTagSubstitute(0, tagName);

                createdTag.WorkspaceId.Returns(workspaceId);
                DataSource.Tags.Create(Arg.Is(tagName), Arg.Any <long>())
                .Returns(Observable.Return(createdTag));
                ViewModel.Prepare((new long[0], workspaceId));
                ViewModel.Initialize().Wait();
                //Reconfigure AutocopleteProvider, so it returns the created tag as well
                var createdTagSuggestion = new TagSuggestion(createdTag);
                var newTagSuggestions    = initialTags
                                           .Concat(new AutocompleteSuggestion[] { createdTagSuggestion });
                var observable = Observable
                                 .Return(newTagSuggestions);

                InteractorFactory
                .GetTagsAutocompleteSuggestions(Arg.Any <IList <string> >())
                .Execute()
                .Returns(observable);
                ViewModel.Text = tagName;

                ViewModel.CreateTagCommand.ExecuteAsync(tagName).Wait();

                ViewModel.Tags.First().Name.Should().Be(tagName);
            }
Пример #4
0
        public TextFieldInfo RemoveTag(TagSuggestion tag)
        {
            var newTags = Tags.ToList();

            newTags.Remove(tag);
            return(new TextFieldInfo(
                       Text, CursorPosition, WorkspaceId, ProjectId, ProjectName, ProjectColor, TaskId, TaskName, newTags.ToArray()));
        }
Пример #5
0
            public TheSelectTagAction()
            {
                var databaseTag = Substitute.For <IThreadSafeTag>();

                databaseTag.Name.Returns("Tag0");
                databaseTag.Id.Returns(0);
                tagSuggestion = new TagSuggestion(databaseTag);
            }
Пример #6
0
        public static TextFieldInfo FromTagSuggestion(
            this TextFieldInfo textFieldInfo,
            TagSuggestion tagSuggestion)
        {
            var result = textFieldInfo.AddTag(tagSuggestion.TagId, tagSuggestion.Name);

            return(result);
        }
Пример #7
0
            public TheSelectTagCommand()
            {
                var databaseTag = Substitute.For <IDatabaseTag>();

                databaseTag.Name.Returns("Tag0");
                databaseTag.Id.Returns(0);
                tagSuggestion = new TagSuggestion(databaseTag);
            }
Пример #8
0
        private async Task createTag()
        {
            var createdTag = await dataSource.Tags
                             .Create(CurrentQuery.Trim(), TextFieldInfo.WorkspaceId.Value);

            var tagSuggestion = new TagSuggestion(createdTag);
            await SelectSuggestionCommand.ExecuteAsync(tagSuggestion);
        }
Пример #9
0
        public TextFieldInfo AddTag(TagSuggestion tagSuggestion)
        {
            var tags = new List <TagSuggestion>(Tags)
            {
                tagSuggestion
            }.ToArray();

            return(new TextFieldInfo(
                       Text, CursorPosition, WorkspaceId, ProjectId, ProjectName, ProjectColor, TaskId, TaskName, tags));
        }
        private async Task createTag()
        {
            var createdTag = await interactorFactory.CreateTag(currentQuery, textFieldInfo.Value.WorkspaceId).Execute();

            var tagSuggestion = new TagSuggestion(createdTag);
            await SelectSuggestion.ExecuteWithCompletion(tagSuggestion);

            hasAnyTags = true;
            toggleTagSuggestions();
        }
Пример #11
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));
            }
Пример #12
0
        public TextFieldInfo AddTag(TagSuggestion tagSuggestion)
        {
            if (Tags.Any(t => t.TagId == tagSuggestion.TagId))
            {
                return(this);
            }

            var tags = new List <TagSuggestion>(Tags)
            {
                tagSuggestion
            }.ToArray();

            return(new TextFieldInfo(
                       Text, CursorPosition, WorkspaceId, ProjectId, ProjectName, ProjectColor, TaskId, TaskName, tags));
        }
Пример #13
0
            private void setup(Func <long, long> workspaceIdSelector)
            {
                var tags = Enumerable.Range(0, 10)
                           .Select(i =>
                {
                    var tag = Substitute.For <IThreadSafeTag>();
                    tag.Name.Returns(Guid.NewGuid().ToString());
                    tag.Id.Returns(i);
                    tag.WorkspaceId.Returns(workspaceIdSelector(i));
                    return(tag);
                })
                           .ToList();

                InteractorFactory
                .GetTagsAutocompleteSuggestions(Arg.Any <IList <string> >())
                .Execute()
                .Returns(Observable.Return(TagSuggestion.FromTags(tags)));
            }
Пример #14
0
 private SelectableTagBaseViewModel toSelectableTagViewModel(TagSuggestion tagSuggestion)
 => new SelectableTagViewModel(
     tagSuggestion.TagId,
     tagSuggestion.Name,
     selectedTagIds.Contains(tagSuggestion.TagId),
     workspaceId);