示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        public void MutantService_IsMutantAsync_ParameterHumanInNull_Fails()
        {
            //Arrange
            MutantService service = GetMutantService();

            //Action && Asserts
            Assert.ThrowsExceptionAsync <ArgumentNullException>(() => service.IsMutantAsync(null));
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }