Esempio n. 1
0
        public void ShouldCreateASingleMilestoneForAKnownGoal()
        {
            const string expectedDescription = "Testing a milestone";
            double       expectedTarget      = 230d;
            DateTime     expectedDateMet     = DateTime.Now;
            int          expectedGoalId      = 1;
            int          expectedMilestoneId = 10;

            Model.Milestone milestone = new Model.Milestone(expectedTarget, expectedDescription, expectedDateMet);
            Model.Milestone expectedResultandMilestone = new Model.Milestone(expectedMilestoneId, expectedTarget, expectedDescription, expectedDateMet);
            string          expectedSqlStatement       = "INSERT INTO saver.Milestone (target, description, datemet, goalid) VALUES (@Target, @Description, @DateMet, @GoalId);";

            mockDataAccess.Setup
            (
                da => da.ExecuteQuery <Model.Milestone>
                (
                    It.Is <string>(val => val.Equals(expectedSqlStatement)),
                    It.Is <Dictionary <string, object> >
                    (
                        val => (int)val["GoalId"] == expectedGoalId &&
                        (string)val["Description"] == expectedDescription &&
                        (double)val["Target"] == expectedTarget &&
                        (DateTime?)val["DateMet"] == expectedDateMet
                    )
                )
            ).Returns(new List <Model.Milestone>()
            {
                expectedResultandMilestone
            });
            mockSqlStringService.Setup(ss => ss.GetSqlFromResource(It.IsAny <string>())).Returns(expectedSqlStatement);

            IMilestoneRepository repository = new MilestoneRepository(mockDataAccess.Object, mockSqlStringService.Object);

            //Act
            Model.Milestone returnedMilestone = repository.CreateForGoal(milestone, expectedGoalId);

            //Assert
            returnedMilestone.Should().NotBeNull();
            returnedMilestone.Id.Should().Be(expectedMilestoneId);
            returnedMilestone.Should().BeEquivalentTo(expectedResultandMilestone);
        }