public async Task MutantService_IsMutantAsync_ValidDnaAlreadySaved_Succeeds() { //Arrange Mock <MutantService> serviceMock = GetMutantServiceMock(); MutantService service = serviceMock.Object; Human human = new Human() { Dna = new string[] { "AAA", "CCC", "TTT" } }; Dna savedDna = new Dna() { Id = Guid.NewGuid(), ChainString = "AAA,CCC,TTT", IsMutant = true }; serviceMock.Setup(x => x.IsDnaValid(It.IsAny <string[]>())).Returns(true).Verifiable(); _memoryCacheServiceMock.Setup(x => x.GetAsync(It.IsAny <string>(), It.IsAny <Func <Task <Dna> > >())).ReturnsAsync(savedDna).Verifiable(); serviceMock.Setup(x => x.VerifyIsMutant(It.IsAny <string[]>())).Returns(true).Verifiable(); //Action bool result = await service.IsMutantAsync(human); //Asserts Assert.IsTrue(result); serviceMock.Verify(x => x.IsDnaValid(It.IsAny <string[]>()), Times.Once); _memoryCacheServiceMock.Verify(x => x.GetAsync(It.IsAny <string>(), It.IsAny <Func <Task <Dna> > >()), Times.Once); serviceMock.Verify(x => x.VerifyIsMutant(It.IsAny <string[]>()), Times.Never); }
public async Task MutantService_IsMutantAsync_ValidDnaNonSaved_Succeeds() { //Arrange Mock <MutantService> serviceMock = GetMutantServiceMock(); MutantService service = serviceMock.Object; Human human = new Human() { Dna = new string[] { "AAA", "CCC", "TTT" } }; serviceMock.Setup(x => x.IsDnaValid(It.IsAny <string[]>())).Returns(true).Verifiable(); _memoryCacheServiceMock.Setup(x => x.GetAsync(It.IsAny <string>(), It.IsAny <Func <Task <Dna> > >())).ReturnsAsync((Dna)null).Verifiable(); serviceMock.Setup(x => x.VerifyIsMutant(It.IsAny <string[]>())).Returns(true).Verifiable(); _dnaServiceMock.Setup(x => x.SaveAsync(It.IsAny <ICollection <Dna> >())).Verifiable(); //Action bool result = await service.IsMutantAsync(human); //Asserts Assert.IsTrue(result); serviceMock.Verify(x => x.IsDnaValid(It.IsAny <string[]>()), Times.Once); _memoryCacheServiceMock.Verify(x => x.GetAsync(It.IsAny <string>(), It.IsAny <Func <Task <Dna> > >()), Times.Once); serviceMock.Verify(x => x.VerifyIsMutant(It.IsAny <string[]>()), Times.Once); _dnaServiceMock.Verify(x => x.SaveAsync(It.IsAny <ICollection <Dna> >()), Times.Once); }
public void MutantService_IsMutantAsync_ParameterHumanInNull_Fails() { //Arrange MutantService service = GetMutantService(); //Action && Asserts Assert.ThrowsExceptionAsync <ArgumentNullException>(() => service.IsMutantAsync(null)); }
public void MutantService_IsMutantAsync_IsDnaValidThrowsException_Fails() { //Arrange Mock <MutantService> serviceMock = GetMutantServiceMock(); MutantService service = serviceMock.Object; serviceMock.Setup(x => x.IsDnaValid(It.IsAny <string[]>())).Throws <DnaInvalidException>().Verifiable(); //Action && Asserts Assert.ThrowsExceptionAsync <DnaInvalidException>(() => service.IsMutantAsync(new Human())); serviceMock.Verify(x => x.IsDnaValid(It.IsAny <string[]>()), Times.Once); }
public async Task MutantService_IsMutantAsync_InvalidDna_Succeeds() { //Arrange Mock <MutantService> serviceMock = GetMutantServiceMock(); MutantService service = serviceMock.Object; serviceMock.Setup(x => x.IsDnaValid(It.IsAny <string[]>())).Returns(false).Verifiable(); _memoryCacheServiceMock.Setup(x => x.GetAsync(It.IsAny <string>(), It.IsAny <Func <Task <Dna> > >())).ReturnsAsync(new Dna()).Verifiable(); //Action bool result = await service.IsMutantAsync(new Human()); //Asserts Assert.IsFalse(result); serviceMock.Verify(x => x.IsDnaValid(It.IsAny <string[]>()), Times.Once); _memoryCacheServiceMock.Verify(x => x.GetAsync(It.IsAny <string>(), It.IsAny <Func <Task <Dna> > >()), Times.Never); }