public void Should_Calculate_Previous_Resistance_Amount_When_Scenario_Is_Complex()
        {
            //TODO: Refine/base expectations dynamically not statically

            //ARRANGE
            var sut = new ResistanceBandService(_repo.Object);

            //ACT
            var result = sut.CalculatePreviousAvailableResistanceAmount(80, 20, 25, false);

            //ASSERT
            Assert.AreEqual(4, result.Count);
            Assert.AreEqual(56, result.Sum(band => band.MaxResistanceAmount));
            Assert.IsTrue(
                result.Count(band => band.Color == "Onyx") == 1 &&
                result.Count(band => band.Color == "Yellow") == 1 &&
                result.Count(band => band.Color == "Green") == 1 &&
                result.Count(band => band.Color == "Red") == 1);
        }
        public void Should_Update()
        {
            //ARRANGE
            var repoMock = new Mock <IRepository <ResistanceBand> >(MockBehavior.Strict);

            repoMock
            .Setup(mock => mock.Update(It.IsAny <ResistanceBand>(), true))
            .Returns((ResistanceBand resistanceBand, bool save) => resistanceBand);

            var sut            = new ResistanceBandService(repoMock.Object);
            var resistanceBand = new ResistanceBand();

            //ACT
            var result = sut.Update(resistanceBand);

            //ASSERT
            repoMock.Verify(mock => mock.Update(resistanceBand, true), Times.Once);
            result.ShouldBeSameAs(resistanceBand);
        }
        public void Should_Get_By_ID()
        {
            //ARRANGE
            var resistanceBand = new ResistanceBand {
                Color = "Blue", MaxResistanceAmount = 13
            };
            var repoMock = new Mock <IRepository <ResistanceBand> >(MockBehavior.Strict);

            repoMock.Setup(mock => mock.Get(It.IsAny <int>())).Returns(resistanceBand);

            var sut = new ResistanceBandService(repoMock.Object);

            //ACT
            var result = sut.GetById(1);

            //ASSERT
            result.ShouldBe(resistanceBand);
            repoMock.Verify(mock => mock.Get(It.IsAny <int>()), Times.Once);
        }