private void CompareTelescopes(Telescope expected, TelescopeDetailsServiceModel actual)
 {
     Assert.Equal(expected.Id, actual.Id);
     Assert.Equal(expected.Name, actual.Name);
     Assert.Equal(expected.Location, actual.Location);
     Assert.Equal(expected.Description, actual.Description);
     Assert.Equal(expected.MirrorDiameter, actual.MirrorDiameter);
     Assert.Equal(expected.ImageUrl, actual.ImageUrl);
 }
        public IActionResult Details(int id)
        {
            TelescopeDetailsServiceModel model = this.telescopeService.Details(id);

            if (model == null)
            {
                return(BadRequest());
            }

            return(View(model));
        }
        public void Details_WithNotExistingId_ShouldReturnNull()
        {
            // Arrange
            StarStuffDbContext db = this.Database;
            TelescopeService   telescopeService = new TelescopeService(db);
            const int          telescopeId      = 1;

            // Act
            TelescopeDetailsServiceModel result = telescopeService.Details(telescopeId);

            // Assert
            Assert.Null(result);
        }
        public void Details_WithNotExistingId_ShouldReturnBadRequest()
        {
            // Arrange
            Mock <ITelescopeService>     telescopeService = new Mock <ITelescopeService>();
            TelescopeDetailsServiceModel detailsModel     = null;

            telescopeService
            .Setup(t => t.Details(It.IsAny <int>()))
            .Returns(detailsModel);

            TelescopesController telescopesController = new TelescopesController(telescopeService.Object);

            // Act
            IActionResult result = telescopesController.Details(1);

            // Assert
            Assert.IsType <BadRequestResult>(result);
        }
        public void Details_WithExistingId_ShouldReturnTelescope()
        {
            // Arrange
            StarStuffDbContext db = this.Database;
            TelescopeService   telescopeService = new TelescopeService(db);

            this.SeedDatabase(db);

            const int telescopeId = 1;

            Telescope expected = this.GetFakeTelescopes().FirstOrDefault(t => t.Id == telescopeId);

            // Act
            TelescopeDetailsServiceModel actual = telescopeService.Details(telescopeId);

            // Assert
            this.CompareTelescopes(expected, actual);
        }
        public void Details_WithExistingId_ShouldReturnView()
        {
            // Arrange
            Mock <ITelescopeService>     telescopeService = new Mock <ITelescopeService>();
            TelescopeDetailsServiceModel detailsModel     = this.GetTelescopeDetailsServiceModel();

            telescopeService
            .Setup(t => t.Details(It.IsAny <int>()))
            .Returns(detailsModel);

            TelescopesController telescopesController = new TelescopesController(telescopeService.Object);

            // Act
            IActionResult result = telescopesController.Details(1);

            // Assert
            Assert.IsType <ViewResult>(result);
            object model = (result as ViewResult).Model;

            Assert.IsType <TelescopeDetailsServiceModel>(model);
            TelescopeDetailsServiceModel returnModel = model as TelescopeDetailsServiceModel;

            this.AssertTelescopeDetails(detailsModel, returnModel);
        }
 private void AssertTelescopeDetails(TelescopeDetailsServiceModel expected, TelescopeDetailsServiceModel actual)
 {
     this.AssertTelescopes(expected, actual);
     Assert.Equal(expected.MirrorDiameter, actual.MirrorDiameter);
 }