Пример #1
0
        private void categoryButton_Click(object sender, EventArgs e)
        {
            if (current == null)
            {
                return;
            }
            CategoryChange cc = new CategoryChange(current);

            if (cc.ShowDialog() == DialogResult.OK)
            {
                ShowTags();
            }
        }
        public async Task ExecuteAddsLinkToExistingCategoryUsingCaseInsensitiveNameMatchTest(string name)
        {
            var profile = Model.Create <Profile>();
            var changes = Model.Create <ProfileChangeResult>().Set(x => x.CategoryChanges.Clear());
            var change  = new CategoryChange
            {
                CategoryGroup = CategoryGroup.Gender,
                CategoryName  = name,
                ChangeType    = CategoryLinkChangeType.Add
            };
            var category = Model.Create <Category>().Set(x => x.Name = "Female")
                           .Set(x => x.Group = CategoryGroup.Gender);
            var categories        = Model.Create <List <Category> >();
            var previousLinkCount = category.LinkCount;

            changes.CategoryChanges.Add(change);
            categories.Add(category);

            var profileStore  = Substitute.For <IProfileStore>();
            var categoryStore = Substitute.For <ICategoryStore>();
            var linkStore     = Substitute.For <ICategoryLinkStore>();
            var profileCache  = Substitute.For <IProfileCache>();
            var cacheManager  = Substitute.For <ICategoryCache>();
            var eventTrigger  = Substitute.For <IEventTrigger>();

            var sut = new ProfileChangeProcessor(
                profileStore,
                categoryStore,
                linkStore,
                eventTrigger,
                profileCache,
                cacheManager);

            using (var tokenSource = new CancellationTokenSource())
            {
                categoryStore.GetAllCategories(tokenSource.Token).Returns(categories);

                await sut.Execute(profile, changes, tokenSource.Token).ConfigureAwait(false);

                await categoryStore.Received().StoreCategory(category, tokenSource.Token).ConfigureAwait(false);

                await categoryStore.Received().StoreCategory(
                    Arg.Is <Category>(x => x.LinkCount == previousLinkCount + 1),
                    tokenSource.Token).ConfigureAwait(false);

                cacheManager.Received(1).StoreCategories(
                    Verify.That <ICollection <Category> >(
                        x => x.Should().Contain(
                            y => y.Group == category.Group && y.Name == category.Name &&
                            y.LinkCount == previousLinkCount + 1)));
                categories.Should().Contain(
                    x => x.Group == category.Group && x.Name == category.Name && x.LinkCount == previousLinkCount + 1);

                await linkStore.Received().StoreCategoryLink(
                    Arg.Is <CategoryGroup>(x => x == category.Group),
                    Arg.Is <string>(x => x == category.Name),
                    Arg.Is <CategoryLinkChange>(
                        x => x.ChangeType == CategoryLinkChangeType.Add && x.ProfileId == profile.Id),
                    tokenSource.Token).ConfigureAwait(false);
            }
        }