public void GetById_ReturnsBugWithSameId()
        {
            // Arrange
            int testId = 5;
            var data = Mock.Create<IBugLoggerData>();
            Mock.Arrange(() => data.Bugs.Find(testId)).Returns(new Bug() { Id = testId });
            var controller = new BugsController(data);

            // Act
            IHttpActionResult actionResult = controller.Get(testId);
            var contentResult = actionResult as OkNegotiatedContentResult<BugModel>;

            // Assert
            Assert.IsNotNull(contentResult);
            Assert.IsNotNull(contentResult.Content);
            Assert.AreEqual(testId, contentResult.Content.Id);
        }
        private BugsController SetupController(IEnumerable<Bug> bugs)
        {
            var data = Mock.Create<IBugLoggerData>();
            Mock.Arrange(() => data.Bugs.All()).Returns(() => bugs.AsQueryable());

            Mock.Arrange(
                () => data.Bugs.Find(Arg.IsAny<int>()))
                .Returns((int id) => bugs.FirstOrDefault(b => b.Id == id));

            var controller = new BugsController(data);
            this.ConfigureController(controller);
            return controller;
        }
        public void AddBug_WhenBugTextIsValid_ShouldBeAddedToRepoWithLogDateAndStatusPending()
        {
            var bugs = new List<Bug>();

            var bug = new Bug()
            {
                Text = "NEW TEST BUG"
            };

            var data = Mock.Create<IBugLoggerData>();

            Mock.Arrange(() => data.Bugs.All()).Returns(() => bugs.AsQueryable());

            Mock.Arrange(() => data.Bugs.Add(Arg.IsAny<Bug>())).DoInstead((Bug b) => bugs.Add(b));

            bool saveChangesIsCalled = false;
            Mock.Arrange(() => data.SaveChanges()).DoInstead(() => { saveChangesIsCalled = true; });

            var controller = new BugsController(data);
            this.ConfigureController(controller);

            //act
            controller.Post(bug);

            //assert
            Assert.AreEqual(data.Bugs.All().Count(), 1);
            var bugInDb = data.Bugs.All().FirstOrDefault();
            Assert.AreEqual(bug.Text, bugInDb.Text);
            Assert.IsNotNull(bugInDb.LogDate);
            Assert.AreEqual(BugStatus.Pending, bugInDb.Status);
            Assert.IsTrue(saveChangesIsCalled);
        }