public void Create_TagNameAlreadyExists_ThrowsTagNameAlreadyExistsException() { // Arrange string tagName = "tag_name"; Tag tag = new Tag { TagId = 1, Name = tagName }; // Arrange - mock tagRepository Mock<ITagRepository> tagRepositoryMock = new Mock<ITagRepository>(); tagRepositoryMock.Setup(r => r.GetByName(tagName)) .Returns(tag); // 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 and Assert Assert.Throws<TagNameAlreadyExistsException>(() => target.Create(tagName)); tagRepositoryMock.Verify(r => r.GetByName(tagName), Times.Once); tagRepositoryMock.Verify(r => r.Insert(It.Is<Tag>(t => t.Name == tagName)), Times.Never); unitOfWorkMock.Verify(r => r.Save(), Times.Never); }
public void Create_TagNameIsEmpty_ThrowsArgumentException() { // Arrange ITagService target = new TagService(new Mock<IUnitOfWork>().Object, this._tagValidationMock.Object); // Act and Assert Assert.Throws<ArgumentException>(() => target.Create("")); }
public void Create_TagNameFormatIsInvalid_ThrowsInvalidTagNameFormatException() { // Arrange string tagName = "invalid_tag_name"; this._tagValidationMock.Setup(v => v.IsValidName(tagName)) .Returns(false); ITagService target = new TagService(new Mock<IUnitOfWork>().Object, this._tagValidationMock.Object); // Act and Assert Assert.Throws<InvalidTagNameFormatException>(() => target.Create(tagName)); this._tagValidationMock.Verify(v => v.IsValidName(tagName), Times.Once); }
public void Create_TagNameIsValid_CreatesTag() { // Arrange string tagName = "tag_name"; // Arrange - mock tagRepository Mock<ITagRepository> tagRepositoryMock = new Mock<ITagRepository>(); // 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 Tag createdTag = target.Create(tagName); // Assert Assert.IsNotNull(createdTag); Assert.AreEqual(tagName, createdTag.Name); tagRepositoryMock.Verify(r => r.Insert(It.Is<Tag>(t => t.Name == tagName)), Times.Once); unitOfWorkMock.Verify(r => r.Save(), Times.Once); }