コード例 #1
0
        public async Task Update_Test()
        {
            // arrange
            var fakeUowProvider     = A.Fake <IUnitOfWorkProvider>();
            var fakeRepoProvider    = A.Fake <IMediaItemRepositoryProvider>();
            var fakeTagRepoProvider = A.Fake <ITagRepositoryServiceProvider>();
            var fakeUow             = A.Fake <IUnitOfWork>();
            var fakeRepo            = A.Fake <IMediaItemRepository>();
            var fakeTagRepo         = A.Fake <ITagRepository>();

            A.CallTo(() => fakeUowProvider.Get()).Returns(fakeUow);
            A.CallTo(() => fakeRepoProvider.Get(fakeUow)).Returns(fakeRepo);
            A.CallTo(() => fakeTagRepoProvider.Get(fakeUow)).Returns(fakeTagRepo);
            MediaItemService service = new MediaItemService(fakeUowProvider, fakeRepoProvider, fakeTagRepoProvider);
            MediaItem        item    = new MediaItem {
                Id = 1, Title = "item"
            };

            // act
            await service.Update(item);

            // assert
            A.CallTo(() => fakeRepo.Update(item)).MustHaveHappened();
            A.CallTo(() => fakeUow.Commit()).MustHaveHappened();
        }
コード例 #2
0
        public async Task GetAll_Test()
        {
            // arrange
            var fakeUowProvider     = A.Fake <IUnitOfWorkProvider>();
            var fakeRepoProvider    = A.Fake <IMediaItemRepositoryProvider>();
            var fakeTagRepoProvider = A.Fake <ITagRepositoryServiceProvider>();
            var fakeUow             = A.Fake <IUnitOfWork>();
            var fakeRepo            = A.Fake <IMediaItemRepository>();
            var fakeTagRepo         = A.Fake <ITagRepository>();

            A.CallTo(() => fakeUowProvider.Get()).Returns(fakeUow);
            A.CallTo(() => fakeRepoProvider.Get(fakeUow)).Returns(fakeRepo);
            A.CallTo(() => fakeTagRepoProvider.Get(fakeUow)).Returns(fakeTagRepo);
            MediaItemService service = new MediaItemService(fakeUowProvider, fakeRepoProvider, fakeTagRepoProvider);
            List <MediaItem> items   = new List <MediaItem>
            {
                new MediaItem {
                    Id = 1, Title = "item1"
                }
            };

            A.CallTo(() => fakeRepo.ReadAll()).Returns(items);

            // act
            var result = await service.GetAll();

            // assert
            Assert.IsTrue(result.ToList().Count == 1);
            Assert.IsTrue(result.ToList()[0].Id == 1);
            A.CallTo(() => fakeUow.Dispose()).MustHaveHappened();
        }
コード例 #3
0
        public async Task ExistsWithTitle_Test(string title, bool expectedResult)
        {
            // arrange
            var           fakeUowProvider     = A.Fake <IUnitOfWorkProvider>();
            var           fakeRepoProvider    = A.Fake <IMediaItemRepositoryProvider>();
            var           fakeTagRepoProvider = A.Fake <ITagRepositoryServiceProvider>();
            var           fakeUow             = A.Fake <IUnitOfWork>();
            var           fakeRepo            = A.Fake <IMediaItemRepository>();
            List <string> titles = new List <string>
            {
                "item1",
                "item2"
            };

            A.CallTo(() => fakeRepo.GetTitles()).Returns(titles);
            var fakeTagRepo = A.Fake <ITagRepository>();

            A.CallTo(() => fakeUowProvider.Get()).Returns(fakeUow);
            A.CallTo(() => fakeRepoProvider.Get(fakeUow)).Returns(fakeRepo);
            A.CallTo(() => fakeTagRepoProvider.Get(fakeUow)).Returns(fakeTagRepo);
            MediaItemService service = new MediaItemService(fakeUowProvider, fakeRepoProvider, fakeTagRepoProvider);

            // arrange
            var actualResult = await service.ExistsWithTitle(title);

            // act
            Assert.AreEqual(expectedResult, actualResult);
        }
コード例 #4
0
        public async Task GetById_Test()
        {
            // arrange
            var       fakeUowProvider     = A.Fake <IUnitOfWorkProvider>();
            var       fakeRepoProvider    = A.Fake <IMediaItemRepositoryProvider>();
            var       fakeTagRepoProvider = A.Fake <ITagRepositoryServiceProvider>();
            var       fakeUow             = A.Fake <IUnitOfWork>();
            var       fakeRepo            = A.Fake <IMediaItemRepository>();
            MediaItem item = new MediaItem
            {
                Id    = 1,
                Title = "item"
            };

            A.CallTo(() => fakeRepo.GetById(1)).Returns(item);
            var fakeTagRepo = A.Fake <ITagRepository>();

            A.CallTo(() => fakeUowProvider.Get()).Returns(fakeUow);
            A.CallTo(() => fakeRepoProvider.Get(fakeUow)).Returns(fakeRepo);
            A.CallTo(() => fakeTagRepoProvider.Get(fakeUow)).Returns(fakeTagRepo);
            MediaItemService service = new MediaItemService(fakeUowProvider, fakeRepoProvider, fakeTagRepoProvider);

            // act
            var result = await service.GetById(1);

            // assert
            Assert.AreEqual(1, result.Id);
            Assert.AreEqual("item", result.Title);
        }
コード例 #5
0
        public async Task Add_Test()
        {
            // arrange
            var fakeUowProvider     = A.Fake <IUnitOfWorkProvider>();
            var fakeRepoProvider    = A.Fake <IMediaItemRepositoryProvider>();
            var fakeTagRepoProvider = A.Fake <ITagRepositoryServiceProvider>();
            var fakeUow             = A.Fake <IUnitOfWork>();
            var fakeRepo            = A.Fake <IMediaItemRepository>();
            var fakeTagRepo         = A.Fake <ITagRepository>();

            A.CallTo(() => fakeUowProvider.Get()).Returns(fakeUow);
            A.CallTo(() => fakeRepoProvider.Get(fakeUow)).Returns(fakeRepo);
            A.CallTo(() => fakeTagRepoProvider.Get(fakeUow)).Returns(fakeTagRepo);
            A.CallTo(() => fakeTagRepo.ExistsWithName("new_tag")).Returns(false);
            A.CallTo(() => fakeTagRepo.ExistsWithName("existing_tag")).Returns(true);
            MediaItemService service = new MediaItemService(fakeUowProvider, fakeRepoProvider, fakeTagRepoProvider);
            Tag newTag = new Tag {
                Id = 1, Name = "new_tag"
            };
            Tag existingTag = new Tag {
                Id = 2, Name = "existing_tag"
            };
            MediaItem item = new MediaItem
            {
                Id    = 1,
                Title = "new_item",
                Tags  = new List <Tag>
                {
                    newTag,
                    existingTag
                }
            };

            // act
            await service.Add(item);

            // assert
            A.CallTo(() => fakeUow.Begin()).MustHaveHappened();
            A.CallTo(() => fakeRepo.Create(item)).MustHaveHappened();
            A.CallTo(() => fakeTagRepo.Create(newTag)).MustHaveHappened();
            A.CallTo(() => fakeTagRepo.LinkMediaItem(1, 1));
            A.CallTo(() => fakeTagRepo.LinkMediaItem(1, 2));
            A.CallTo(() => fakeUow.Commit()).MustHaveHappened();
        }
コード例 #6
0
        public async Task UpdateTags_Test()
        {
            // arrange
            var fakeUowProvider     = A.Fake <IUnitOfWorkProvider>();
            var fakeRepoProvider    = A.Fake <IMediaItemRepositoryProvider>();
            var fakeTagRepoProvider = A.Fake <ITagRepositoryServiceProvider>();
            var fakeUow             = A.Fake <IUnitOfWork>();
            var fakeRepo            = A.Fake <IMediaItemRepository>();
            var fakeTagRepo         = A.Fake <ITagRepository>();

            A.CallTo(() => fakeUowProvider.Get()).Returns(fakeUow);
            A.CallTo(() => fakeRepoProvider.Get(fakeUow)).Returns(fakeRepo);
            A.CallTo(() => fakeTagRepoProvider.Get(fakeUow)).Returns(fakeTagRepo);
            A.CallTo(() => fakeTagRepo.ExistsWithName("tag1")).Returns(true);
            A.CallTo(() => fakeTagRepo.GetIdByName("tag1")).Returns(1);
            A.CallTo(() => fakeTagRepo.ExistsWithName("tag2")).Returns(true);
            A.CallTo(() => fakeTagRepo.GetIdByName("tag2")).Returns(2);
            A.CallTo(() => fakeTagRepo.ExistsWithName("tag3")).Returns(true);
            A.CallTo(() => fakeTagRepo.GetIdByName("tag3")).Returns(3);
            A.CallTo(() => fakeTagRepo.ExistsWithName("tag4")).Returns(false);
            A.CallTo(() => fakeTagRepo.GetIdByName("tag4")).Returns(4);
            MediaItemService service      = new MediaItemService(fakeUowProvider, fakeRepoProvider, fakeTagRepoProvider);
            List <string>    originalTags = new List <string> {
                "tag1", "tag2", "tag3"
            };
            List <string> selectedTags = new List <string> {
                "tag2", "tag4"
            };
            ItemTagsDto itemTags = new ItemTagsDto(1, originalTags, selectedTags);
            Tag         newTag   = new Tag {
                Name = "tag4"
            };

            // act
            await service.UpdateTags(itemTags);

            // assert
            A.CallTo(() => fakeUow.Begin()).MustHaveHappened();
            A.CallTo(() => fakeTagRepo.LinkMediaItem(1, 4));
            A.CallTo(() => fakeTagRepo.UnlinkMediaItem(1, 1));
            A.CallTo(() => fakeUow.Commit()).MustHaveHappened();
        }
コード例 #7
0
        public async Task DeleteById_Test()
        {
            // arrange
            var fakeUowProvider     = A.Fake <IUnitOfWorkProvider>();
            var fakeRepoProvider    = A.Fake <IMediaItemRepositoryProvider>();
            var fakeTagRepoProvider = A.Fake <ITagRepositoryServiceProvider>();
            var fakeUow             = A.Fake <IUnitOfWork>();
            var fakeRepo            = A.Fake <IMediaItemRepository>();
            var fakeTagRepo         = A.Fake <ITagRepository>();

            A.CallTo(() => fakeUowProvider.Get()).Returns(fakeUow);
            A.CallTo(() => fakeRepoProvider.Get(fakeUow)).Returns(fakeRepo);
            A.CallTo(() => fakeTagRepoProvider.Get(fakeUow)).Returns(fakeTagRepo);
            MediaItemService service = new MediaItemService(fakeUowProvider, fakeRepoProvider, fakeTagRepoProvider);

            // act
            await service.DeleteById(1);

            // assert
            A.CallTo(() => fakeRepo.DeleteById(1)).MustHaveHappened();
            A.CallTo(() => fakeUow.Commit()).MustHaveHappened();
        }
コード例 #8
0
        public ManageTagsForItemDialog(Item item)
        {
            InitializeComponent();

            this._tagService = new TagService();

            this._item = item;
            this.itemTitleLabel.Text = item.Title;

            this.tagsList.CheckOnClick = true;

            this.CenterToParent();

            // initially disable add and save buttons
            this.buttonSave.Enabled      = false;
            this.addNewTagButton.Enabled = false;

            // register event handlers
            this.buttonCancel.Click += ((sender, args) =>
            {
                this.Close();
            });
            this.buttonSave.Click += (async(sender, args) =>
            {
                // disable add, save and cancel buttons
                this.addNewTagButton.Enabled = false;
                this.buttonSave.Enabled = false;
                this.buttonCancel.Enabled = false;

                // save changes
                List <string> originalTags = new List <string>();
                foreach (var tag in this._item.Tags)
                {
                    originalTags.Add(tag.Name);
                }
                ItemTagsDto dto = new ItemTagsDto(this._item.Id, originalTags, this.SelectedTags);
                try
                {
                    if (this._item.Type == ItemType.Book)
                    {
                        IBookService _bookService = new BookService();
                        await _bookService.UpdateTags(dto);
                    }
                    else
                    {
                        IMediaItemService _itemRepo = new MediaItemService();
                        await _itemRepo.UpdateTags(dto);
                    }

                    this.Close();
                }
                catch (Exception ex)
                {
                    // something bad happened
                    // notify the user
                    MessageBox.Show("Error updating tags: " + ex.Message, "manage tags", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                finally
                {
                    // re-enable buttons
                    this.addNewTagButton.Enabled = true;
                    this.buttonSave.Enabled = true;
                    this.buttonCancel.Enabled = true;
                }

                TagsUpdated?.Invoke(this, args);
            });
            this.newTagField.TextChanged += ((sender, args) =>
            {
                this.addNewTagButton.Enabled = !string.IsNullOrWhiteSpace(this.newTagField.Text);
            });
            this.addNewTagButton.Click += (async(sender, args) =>
            {
                // disable add, save and cancel buttons
                this.addNewTagButton.Enabled = false;
                this.buttonSave.Enabled = false;
                this.buttonCancel.Enabled = false;

                string newTagName = this.newTagField.Text;

                try
                {
                    // check for existing tag
                    bool tagAlreadyInList = false;
                    foreach (var tagInList in this.tagsList.Items)
                    {
                        if (tagInList.ToString().Equals(newTagName))
                        {
                            tagAlreadyInList = true;
                        }
                    }
                    if (await this._tagService.ExistsWithName(newTagName) ||
                        tagAlreadyInList)
                    {
                        MessageBox.Show("Tag: \"" + newTagName + "\" already exists.", "Manage tags", MessageBoxButtons.OK, MessageBoxIcon.Warning);

                        // re-enable buttons
                        this.addNewTagButton.Enabled = true;
                        this.buttonSave.Enabled = true;
                        this.buttonCancel.Enabled = true;

                        return;
                    }
                }
                catch (Exception ex)
                {
                    // something bad happened
                    MessageBox.Show("Error checking if tag \"" + newTagName + "\" exists: " + ex.Message, "Manage tags", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    // re-enable buttons
                    this.addNewTagButton.Enabled = true;
                    this.buttonSave.Enabled = true;
                    this.buttonCancel.Enabled = true;

                    return;
                }

                this.tagsList.Items.Add(this.newTagField.Text, true);

                // re-enable buttons
                this.addNewTagButton.Enabled = true;
                this.buttonSave.Enabled = true;
                this.buttonCancel.Enabled = true;
            });
            this.tagsList.ItemCheck += ((sender, args) =>
            {
                this.buttonSave.Enabled = true;
            });
        }