Example #1
0
        public IActionResult AddApplication([FromBody] AddApplicationModel applicationModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var app = _db.Applications.FirstOrDefault(a => a.AppName == applicationModel.ApplicationName);

            if (app != null)
            {
                return(BadRequest("Application already exists!"));
            }

            var application = _db.Applications.Add(new Application
            {
                AppName = applicationModel.ApplicationName
            });

            _db.SaveChanges();

            _db.DeployEnvironments.Add(
                new DeployEnvironment
            {
                EnvName            = applicationModel.EnvironmentName,
                ApplicationId      = application.Entity.Id,
                DefaultToggleValue = applicationModel.DefaultToggleValue,
                SortOrder          = 1
            });

            _db.SaveChanges();

            return(Ok(application.Entity));
        }
Example #2
0
        public void GetApplications_ReturnsAllExistingApplications()
        {
            //arrange
            var bccApp = new Application {
                AppName = "BCC"
            };
            var cmmApp = new Application {
                AppName = "CMM"
            };

            _context.Applications.Add(bccApp);
            _context.Applications.Add(cmmApp);
            _context.SaveChanges();

            var controller = new ApplicationsController(_context);

            //act
            var result = controller.GetAllApplications() as OkObjectResult;

            //assert
            result.Value.As <List <Application> >().Should().BeEquivalentTo(new List <Application> {
                bccApp, cmmApp
            });
        }
        public IActionResult Update([FromBody] FeatureToggleUpdateModel model)
        {
            var featureToggle = _db.FeatureToggles.Where(ft => ft.Id == model.Id)
                                .Include(ft => ft.FeatureToggleStatuses).ThenInclude(fts => fts.Environment).FirstOrDefault();

            if (featureToggle is null)
            {
                throw new InvalidOperationException("Feature toggle not found!");
            }

            featureToggle.ToggleName   = model.FeatureToggleName;
            featureToggle.UserAccepted = model.UserAccepted;
            featureToggle.Notes        = model.Notes;
            featureToggle.IsPermanent  = model.IsPermanent;
            foreach (var toggleStatus in model.Statuses)
            {
                var status = featureToggle.FeatureToggleStatuses.FirstOrDefault(s => s.Environment.EnvName == toggleStatus.Environment);
                if (status != null)
                {
                    UpdateTimestampOnChange(status, toggleStatus);
                    status.Enabled = toggleStatus.Enabled;
                }
            }

            _db.SaveChanges();

            return(Ok(model));

            void UpdateTimestampOnChange(FeatureToggleStatus status, FeatureToggleStatusUpdateModel toggleStatus)
            {
                if (status.Enabled != toggleStatus.Enabled)
                {
                    status.LastUpdated = DateTime.UtcNow;
                }
            }
        }
Example #4
0
        public void GetToggles_ReturnsAList_WithAllTheToggles_ForTheGivenApplication()
        {
            //arrange
            var app = new Application {
                AppName = "BCC", Id = 1
            };
            var date = DateTime.Now;
            var firstFeatureToggle = new FeatureToggle {
                Application = app, ApplicationId = app.Id, UserAccepted = true,
                ToggleName  = "TestToggle", CreatedDate = date, Notes = "TestNote", IsPermanent = true
            };

            var secondFeatureToggle = new FeatureToggle {
                Application = app, ApplicationId = app.Id, UserAccepted = false,
                ToggleName  = "TestToggle", CreatedDate = date, Notes = "TestNote"
            };

            _context.FeatureToggles.AddRange(firstFeatureToggle, secondFeatureToggle);
            _context.SaveChanges();

            var controller = new FeatureTogglesController(_context);

            //act
            var result = controller.GetToggles(app.Id) as OkObjectResult;
            var list   = result.Value as IEnumerable <FeatureToggleViewModel>;

            //assert
            list.Count().Should().Be(2);
            list.First().Notes.Should().Be(firstFeatureToggle.Notes);
            list.First().CreatedDate.Should().Be(date);
            list.First().ToggleName.Should().Be(firstFeatureToggle.ToggleName);
            list.First().UserAccepted.Should().Be(firstFeatureToggle.UserAccepted);
            list.First().IsPermanent.Should().Be(firstFeatureToggle.IsPermanent);
        }