Esempio n. 1
0
        public async Task PostOverflowTest()
        {
            var repoMock = new Mock <ICalculationRepository>();

            repoMock.Setup(repo => repo.Get(1))
            .Returns(() => Task.FromResult(Mock.Of <ICalculation>(c => c.Id == 1 && c.Current == 1)));

            var calculatorMock = new Mock <ICalculator>();

            calculatorMock.Setup(c => c.Calculate(It.IsAny <int>(), It.IsAny <int>())).Throws <InvalidOperationException>();

            var responseMock = new Mock <IResponseSender>();

            responseMock.Setup(r => r.SendResponseAsync(It.IsAny <ICalculation>()));

            var controller = new CalculationController(repoMock.Object,
                                                       calculatorMock.Object, responseMock.Object);

            var result = await controller.CalculateNext(1, 1);

            Assert.IsInstanceOfType(result, typeof(StatusCodeResult));
            var statusCodeResult = result as StatusCodeResult;

            Assert.AreEqual(HttpStatusCode.ResetContent, statusCodeResult.StatusCode);
            repoMock.Verify(r => r.Get(1), Times.Once);
            repoMock.Verify(r => r.Update(It.Is <ICalculation>(c => c.Id == 1 && c.Current == 2)), Times.Never);
            calculatorMock.Verify(c => c.Calculate(1, 1), Times.Once);
            responseMock.Verify(r => r.SendResponseAsync(It.IsAny <ICalculation>()), Times.Never);
        }
Esempio n. 2
0
        public async Task PostNextTest()
        {
            var repoMock = new Mock <ICalculationRepository>();

            repoMock.Setup(repo => repo.Get(1))
            .Returns(() => Task.FromResult(Mock.Of <ICalculation>(c => c.Id == 1 && c.Current == 1)));
            repoMock.Setup(r => r.Update(It.IsAny <ICalculation>())).Returns(Task.CompletedTask);

            var calculatorMock = new Mock <ICalculator>();

            calculatorMock.Setup(c => c.Calculate(1, 1)).Returns(2);

            var responseMock = new Mock <IResponseSender>();

            responseMock.Setup(r => r.SendResponseAsync(It.IsAny <ICalculation>())).Returns(Task.CompletedTask);

            var controller = new CalculationController(repoMock.Object,
                                                       calculatorMock.Object, responseMock.Object);

            var result = await controller.CalculateNext(1, 1);

            Assert.IsInstanceOfType(result, typeof(OkResult));
            repoMock.Verify(r => r.Get(1), Times.Once);
            repoMock.Verify(r => r.Update(It.Is <ICalculation>(c => c.Id == 1 && c.Current == 2)), Times.Once);
            calculatorMock.Verify(c => c.Calculate(1, 1), Times.Once);
            responseMock.Verify(r => r.SendResponseAsync(It.Is <ICalculation>(c => c.Id == 1 && c.Current == 2)));
        }