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)); }
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; } } }
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); }