Esempio n. 1
0
        public void Edit_TagNameIsNull_ThrowsArgumentNullException()
        {
            // Arrange
            int tagId = 1;

            ITagService target = new TagService(new Mock<IUnitOfWork>().Object, this._tagValidationMock.Object);

            // Act and Assert
            Assert.Throws<ArgumentNullException>(() => target.Edit(tagId, null));
        }
Esempio n. 2
0
        public void Edit_TagNameFormatIsInvalid_ThrowsInvalidTagNameFormatException()
        {
            // Arrange
            int tagId = 1;
            string newTagName = "invalid_new_tag_name";

            // Arrange - mock tagValidation
            this._tagValidationMock.Setup(v => v.IsValidName(newTagName))
            .Returns(false);

            // Arrange - create target
            ITagService target = new TagService(new Mock<IUnitOfWork>().Object, this._tagValidationMock.Object);

            // Act and Assert
            Assert.Throws<InvalidTagNameFormatException>(() => target.Edit(tagId, newTagName));

            this._tagValidationMock.Verify(v => v.IsValidName(newTagName), Times.Once);
        }
Esempio n. 3
0
        public void Edit_NonexistentTagId_ThrowsTagNotFoundException()
        {
            // Arrange
            int tagId = 1;
            string newTagName = "new_tag_name";

            // Arrange - mock tagRepository
            Mock<ITagRepository> tagRepositoryMock = new Mock<ITagRepository>();

            tagRepositoryMock.Setup(r => r.GetByName(newTagName))
            .Returns((Tag)null);

            tagRepositoryMock.Setup(r => r.GetById(tagId))
            .Returns((Tag)null);

            // Arrange - mock unitOfWork
            Mock<IUnitOfWork> unitOfWorkMock = new Mock<IUnitOfWork>();

            unitOfWorkMock.SetupGet(u => u.TagRepository)
            .Returns(tagRepositoryMock.Object);

            ITagService target = new TagService(unitOfWorkMock.Object, this._tagValidationMock.Object);

            // Act and Assert
            Assert.Throws<TagNotFoundException>(() => target.Edit(tagId, newTagName));

            tagRepositoryMock.Verify(r => r.GetByName(newTagName), Times.Once);
            tagRepositoryMock.Verify(r => r.GetById(tagId), Times.Once);
            tagRepositoryMock.Verify(r => r.Update(It.Is<Tag>(t => t.TagId == tagId)), Times.Never);

            unitOfWorkMock.Verify(r => r.Save(), Times.Never);
        }
Esempio n. 4
0
        public void Edit_TagIdIsLessOrEqualToZero_ThrowsArgumentOutOfRangeException()
        {
            // Arrange
            string newTagName = "new_tag_name";

            ITagService target = new TagService(new Mock<IUnitOfWork>().Object, this._tagValidationMock.Object);

            // Act and Assert
            Assert.Throws<ArgumentOutOfRangeException>(() => target.Edit(-1, newTagName));
            Assert.Throws<ArgumentOutOfRangeException>(() => target.Edit(0, newTagName));
        }
Esempio n. 5
0
        public void Edit_AllCredentialsAreValid_EditsTag()
        {
            // Arrange
            Tag tag = new Tag { TagId = 1 };
            string newTagName = "new_tag_name";

            // Arrange - mock tagRepository
            Mock<ITagRepository> tagRepositoryMock = new Mock<ITagRepository>();

            tagRepositoryMock.Setup(r => r.GetById(tag.TagId))
            .Returns(tag);

            tagRepositoryMock.Setup(r => r.GetByName(newTagName))
            .Returns((Tag)null);

            Tag editedTag = null;

            tagRepositoryMock.Setup(r => r.Update(It.Is<Tag>(t => t.TagId == tag.TagId)))
            .Callback((Tag t) => editedTag = t);

            // Arrange - mock unitOfWork
            Mock<IUnitOfWork> unitOfWorkMock = new Mock<IUnitOfWork>();

            unitOfWorkMock.SetupGet(u => u.TagRepository)
            .Returns(tagRepositoryMock.Object);

            // Arrange - create target
            ITagService target = new TagService(unitOfWorkMock.Object, this._tagValidationMock.Object);

            // Act
            target.Edit(tag.TagId, newTagName);

            // Assert
            Assert.IsNotNull(editedTag);
            Assert.AreEqual(newTagName, editedTag.Name);

            tagRepositoryMock.Verify(r => r.GetById(tag.TagId), Times.Once);
            tagRepositoryMock.Verify(r => r.GetByName(newTagName), Times.Once);
            tagRepositoryMock.Verify(r => r.Update(It.Is<Tag>(t => t.TagId == tag.TagId)), Times.Once);

            unitOfWorkMock.Verify(r => r.Save(), Times.Once);
        }