public void BugsController_Get()
        {
            var bugs = new List <Bug> {
                new Bug {
                    IdBug = Guid.NewGuid(), Name = "Bug One", IdPriority = Guid.NewGuid(), IdProject = Guid.NewGuid()
                },
                new Bug {
                    IdBug = Guid.NewGuid(), Name = "Bug Two", IdPriority = Guid.NewGuid(), IdProject = Guid.NewGuid()
                },
                new Bug {
                    IdBug = Guid.NewGuid(), Name = "Bug Three", IdPriority = Guid.NewGuid(), IdProject = Guid.NewGuid()
                }
            };

            _bugService.Setup(service => service.GetAll()).Returns(bugs);

            LoadRequestInController(_bugsController, HttpMethod.Get, url);
            var response = _bugsController.Get();


            var        values       = ((ObjectContent)(response.Content)).Value;
            List <Bug> responseData = (List <Bug>)(values);

            Assert.IsTrue(responseData.Any());
            _bugService.Verify(service => service.GetAll(), Times.Once());
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
        }
        public void GetById_WhenValid_ShouldReturnTheObjectWithSearchedId()
        {
            var data = Mock.Create <IBugLoggerData>();

            Bug[] bugs =
            {
                new Bug()
                {
                    Id   = 5,
                    Text = "First bug"
                }
            };

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

            var controller = new BugsController(data);

            this.SetupController(controller);

            var actionResult = controller.Get(5);
            var response     = actionResult.ExecuteAsync(CancellationToken.None).Result;
            var actual       = response.Content.ReadAsAsync <IEnumerable <BugModel> >().Result.Select(a => a.Id).ToList();

            var expected = bugs.AsQueryable().Where(b => b.Id == 5).Select(a => a.Id).ToList();

            CollectionAssert.AreEquivalent(expected, actual);
        }
        public async void BugsController_When_Get_IsCalledWithIdAndAnUnexpectedErrorOccurs_Then_500StatusCodeIsReturned()
        {
            _service.Setup(_ => _.FindBug("123")).Throws(new Exception("An exception"));
            var controller = new BugsController(_service.Object);

            var result = await controller.Get("123");

            var statusResult = Assert.IsType <StatusCodeResult>(result);

            Assert.Equal(500, statusResult.StatusCode);
        }
        public async void BugsController_When_Get_IsCalledWithId_Then_ABugIsReturned()
        {
            var bug = new Bug {
                Id = "123", Title = "Test", Description = "Test description"
            };

            _service.Setup(_ => _.FindBug("123")).ReturnsAsync(bug);
            var controller = new BugsController(_service.Object);

            var result = await controller.Get("123");

            var okResult    = Assert.IsType <OkObjectResult>(result);
            var returnedBug = Assert.IsType <Bug>(okResult.Value);

            Assert.Equal("123", returnedBug.Id);
        }
        public async void BugsController_When_Get_IsCalled_Then_AListOfBugsIsReturned()
        {
            var bugs = new List <Bug>();

            bugs.Add(new Bug {
                Title = "Test", Description = "Test description"
            });

            _service.Setup(_ => _.GetOpenBugs()).ReturnsAsync(bugs);
            var controller = new BugsController(_service.Object);

            var result = await controller.Get();

            var okResult     = Assert.IsType <OkObjectResult>(result);
            var returnedBugs = Assert.IsType <List <Bug> >(okResult.Value);

            Assert.Single(returnedBugs);
        }
        public void GetByDate_WhenValid_ShouldReturnCollectionMemberWithCorrespondingStatus()
        {
            Bug[] bugs =
            {
                new Bug()
                {
                    Text    = "First bug",
                    LogDate = DateTime.Now
                },
                new Bug()
                {
                    Text    = "Second bug",
                    LogDate = DateTime.Now.AddDays(2)
                }
            };

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

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

            var controller = new BugsController(data);

            this.SetupController(controller);

            var actionResult = controller.Get(DateTime.Now.ToString());
            var response     = actionResult.ExecuteAsync(CancellationToken.None).Result;
            var actual       = response.Content.ReadAsAsync <IEnumerable <BugModel> >().Result.Select(b => b.LogDate).ToList();

            var expected = bugs.AsQueryable()
                           .Where(b => b.LogDate.Day == DateTime.Now.Day &&
                                  b.LogDate.Month == DateTime.Now.Month &&
                                  b.LogDate.Year == DateTime.Now.Year)
                           .Select(b => b.LogDate)
                           .ToList();

            CollectionAssert.AreEquivalent(expected, actual);
        }