public async Task ShouldNotGetExclusive() { var dto1 = new ToggleDto { Name = "isButtonBlue", DefaultValue = ToggleValue.True, ToggleValue = null }; var dto2 = new ToggleDto { Name = "isButtonGreen", DefaultValue = ToggleValue.Exclusive, ToggleValue = null }; _toggleRepository.Setup(s => s.GetAll("ABC", 1)).ReturnsAsync(new[] { dto1, dto2 }); var toggles = await _service.GetAll("ABC", 1); toggles.ShouldNotBeEmpty(); toggles.Count().ShouldBe(1); toggles.First().Name.ShouldBe("isButtonBlue"); toggles.First().ToBoolValue().ShouldBeTrue(); }
/// <summary> /// Defines the toggle dto. /// </summary> /// <returns></returns> private static ToggleDto DefineToggleDto() { var id = Guid.NewGuid().ToString(); var toggle = new ToggleDto { Id = id, Name = $"isNewToggle {id}", Version = "v1", Applications = new List <ApplicationDto> { new ApplicationDto { Name = "XPTO", Id = "1de8cb5d-72ab-4ef4-be90-c1baefbdd732" }, new ApplicationDto { Name = "ABC", Id = "f7456d63-0583-4307-ad0e-b244abbcd8c5" } } }; return(toggle); }
public void Should_MapToggleDtoToToggle() { ToggleDto toggleDto = new ToggleDto { Id = Guid.NewGuid(), Name = "testName", Value = true, Overrides = true, ServiceList = new List <ServiceDto> { new ServiceDto { Id = Guid.NewGuid(), Name = "testName", Version = "testVersion", ApiKey = "testApiKey" } } }; Toggle toggle = Mapper.Map <ToggleDto, Toggle>(toggleDto); Assert.NotNull(toggle); Assert.AreEqual(toggleDto.Id, toggle.Id); Assert.AreEqual(toggleDto.Name, toggle.Name); Assert.AreEqual(toggleDto.Value, toggle.Value); Assert.AreEqual(toggleDto.Overrides, toggle.Overrides); Assert.NotNull(toggleDto.ServiceList); Assert.AreEqual(toggleDto.ServiceList.FirstOrDefault()?.Id, toggle.ServiceList.FirstOrDefault()?.Id); Assert.AreEqual(toggleDto.ServiceList.FirstOrDefault()?.Name, toggle.ServiceList.FirstOrDefault()?.Name); Assert.AreEqual(toggleDto.ServiceList.FirstOrDefault()?.Version, toggle.ServiceList.FirstOrDefault()?.Version); Assert.AreEqual(toggleDto.ServiceList.FirstOrDefault()?.ApiKey, toggle.ServiceList.FirstOrDefault()?.ApiKey); }
public void Should_Insert() { IConfiguration config = InitConfiguration(); TogglerController togglerController = new TogglerController(config); ToggleDto toggle = new ToggleDto { Id = Guid.Empty, Name = "ToggleNameTestInsert", ServiceList = new List <ServiceDto>(), Value = true, Overrides = false }; var farfetchMessage = togglerController.Insert(toggle); Assert.NotNull(farfetchMessage); Assert.AreEqual(typeof(FarfetchMessage <ToggleDto>), farfetchMessage.GetType()); Assert.NotNull(farfetchMessage.Result); Assert.AreEqual(toggle.Name, farfetchMessage.Result.Name); Assert.AreEqual(toggle.Value, farfetchMessage.Result.Value); Assert.AreEqual(toggle.Overrides, farfetchMessage.Result.Overrides); Assert.NotNull(farfetchMessage.Result.ServiceList); Assert.IsEmpty(farfetchMessage.Result.ServiceList); }
/// <inheritdoc /> public FarfetchMessage <ToggleDto> Get(Guid id) { if (_togglerService == null) { throw new NullReferenceException("Toggler Service hasn't been defined"); } Toggle toggle = _togglerService.GetById(id); if (toggle == null) { return(new FarfetchMessage <ToggleDto> { Result = null }); } ToggleDto toggleDto = Mapper.Map <Toggle, ToggleDto>(toggle); if (toggleDto == null) { throw new AutoMapperMappingException("Error mapping types"); } return(new FarfetchMessage <ToggleDto> { Result = toggleDto }); }
/// <inheritdoc /> public FarfetchMessage <ToggleDto> Update(ToggleDto toggleDto) { if (_togglerService == null) { throw new NullReferenceException("Toggler Service hasn't been defined"); } Toggle toggle = Mapper.Map <ToggleDto, Toggle>(toggleDto); if (toggle == null) { throw new AutoMapperMappingException("Error mapping types"); } _togglerService.Update(toggle); toggle = _togglerService.GetById(toggle.Id); toggleDto = Mapper.Map <Toggle, ToggleDto>(toggle); if (toggle == null) { throw new AutoMapperMappingException("Error mapping types"); } return(new FarfetchMessage <ToggleDto> { Result = toggleDto, }); }
/// <inheritdoc /> public FarfetchMessage <ToggleDto> Insert(ToggleDto toggleDto) { if (_togglerService == null) { throw new NullReferenceException("Toggler Service hasn't been defined"); } Toggle toggle = Mapper.Map <ToggleDto, Toggle>(toggleDto); if (toggle == null) { throw new AutoMapperMappingException("Error mapping types"); } _togglerService.Insert(toggle); toggle = _togglerService.GetByExpression(x => x.Value == toggleDto.Value && x.Overrides == toggleDto.Overrides && x.Name == toggleDto.Name); toggleDto = Mapper.Map <Toggle, ToggleDto>(toggle); if (toggle == null) { throw new AutoMapperMappingException("Error mapping types"); } return(new FarfetchMessage <ToggleDto> { Result = toggleDto, }); }
public static bool ToBoolValue(this ToggleDto dto) { if (dto.ToggleValue.HasValue) { return(dto.ToggleValue.Value == ToggleValue.True); } return(dto.DefaultValue == ToggleValue.True); }
public IActionResult Put(int id, [FromBody] ToggleDto toggleDto) { try { _toggleService.Put(id, toggleDto); return(Ok()); } catch (System.Exception ex) { return(BadRequest(new { message = ex.Message })); } }
public async Task ShouldGetTogglesAndOverrideIsButtonBlue() { var dto1 = new ToggleDto { Name = "isButtonBlue", DefaultValue = ToggleValue.True, ToggleValue = ToggleValue.False }; _toggleRepository.Setup(s => s.GetAll("ABC", 1)).ReturnsAsync(new[] { dto1 }); var toggles = await _service.GetAll("ABC", 1); toggles.ShouldNotBeEmpty(); toggles.Count().ShouldBe(1); toggles.Last().ToBoolValue().ShouldBeFalse(); }
public void Should_GetForService() { IConfiguration config = InitConfiguration(); TogglerController togglerController = new TogglerController(config); ToggleDto toggle = new ToggleDto { Id = Guid.Empty, Name = "ToggleNameTestUpdate", ServiceList = new List <ServiceDto>() { new ServiceDto { Id = Guid.NewGuid(), Name = "ServiceTestIntegration", Version = "1.0", ApiKey = "apiKey" } }, Value = true, Overrides = false }; var farfetchMessage = togglerController.Insert(toggle); Assert.NotNull(farfetchMessage); Assert.AreEqual(typeof(FarfetchMessage <ToggleDto>), farfetchMessage.GetType()); Assert.NotNull(farfetchMessage.Result); Assert.AreEqual(toggle.Name, farfetchMessage.Result.Name); Assert.AreEqual(toggle.Value, farfetchMessage.Result.Value); Assert.AreEqual(toggle.Overrides, farfetchMessage.Result.Overrides); Assert.NotNull(farfetchMessage.Result.ServiceList); Assert.IsNotEmpty(farfetchMessage.Result.ServiceList); farfetchMessage.Result.Value = false; var farfetchMessage2 = togglerController.GetForService(toggle.Name, toggle.Value, toggle.ServiceList.FirstOrDefault().Name, toggle.ServiceList.FirstOrDefault().Version); Assert.NotNull(farfetchMessage2); Assert.AreEqual(typeof(FarfetchMessage <bool>), farfetchMessage2.GetType()); Assert.NotNull(farfetchMessage2.Result); Assert.AreEqual(true, farfetchMessage2.Result); }
public async Task <IHttpActionResult> PostToggleAsync(ToggleDto toogDto) { try { if (toogDto == null) { // if application id is null the request is wrong return(BadRequest()); } var result = await _toggleBusinessManager.PostToggleAsync(toogDto); return(Ok(result)); } catch (Exception ex) { // in some cases the exception could not be sent and it is only written in log system return(InternalServerError(ex)); } }
/// <summary> /// To the toggle dto. /// </summary> /// <param name="toggle">The toggle.</param> /// <returns></returns> private static ToggleDto ToToggleDto(Toggle toggle) { var apps = new List <ApplicationDto>(); if (toggle.Configs != null) { apps.AddRange(toggle.Configs.Select(config => new ApplicationDto { Id = config.ApplicationId, Name = config.Application?.Name, Version = config.Version })); } var dto = new ToggleDto { Id = toggle.Id, Name = toggle.Name, Applications = apps }; return(dto); }
public async Task <IActionResult> PutToggleAsync(ToggleDto toogDto) { try { if (toogDto == null) { // if application id is null the request is wrong return(BadRequest()); } var result = await _toggleBusinessManager.PutToggleAsync(toogDto); return(Ok(result)); } catch (ArgumentOutOfRangeException e) { return(NotFound()); } catch (Exception ex) { // in some cases the exception could not be sent and it is only written in log system return(StatusCode(500, ex)); } }
public void Put(int id, ToggleDto toggleDto) { Toggle toggle = _context.Toggles.Find(id); if (toggle != null) { if (!string.IsNullOrWhiteSpace(toggleDto.Name)) { toggle.Name = toggleDto.Name; toggle.State = toggleDto.State; _context.Toggles.Update(toggle); _context.SaveChanges(); } else { throw new ArgumentException("The name can't be null"); } } else { throw new ArgumentException("Toggle Not Found"); } }
/// <summary> /// Puts a toggle asynchronous. /// </summary> /// <param name="toogDto">The toog dto.</param> /// <returns>The toggle,</returns> /// <exception cref="ArgumentNullException">toogDto</exception> public async Task <Response <ToggleDto> > PutToggleAsync(ToggleDto toogDto) { if (toogDto == null) { throw new ArgumentNullException(nameof(toogDto)); } if (string.IsNullOrEmpty(toogDto.Id)) { throw new ArgumentNullException(nameof(toogDto.Id)); } var toggleRepository = GetToggleRepository(); var toogle = toggleRepository.FindIdAsync(toogDto.Id); if (toogle == null) { throw new ArgumentOutOfRangeException(); } // todo update data return(await Task.FromResult(new Response <ToggleDto> { IsValid = false, ErrorCode = "301", Message = "Method not compled." })); }
public async Task ShouldGetTogglesDefault() { var dto1 = new ToggleDto { Name = "isButtonBlue", DefaultValue = ToggleValue.True, ToggleValue = null }; var dto2 = new ToggleDto { Name = "isButtonGreen", DefaultValue = ToggleValue.True, ToggleValue = null }; var dto3 = new ToggleDto { Name = "isButtonRed", DefaultValue = ToggleValue.True, ToggleValue = null }; _toggleRepository.Setup(s => s.GetAll("ABC", 1)).ReturnsAsync(new[] { dto1, dto2, dto3 }); var toggles = await _service.GetAll("ABC", 1); toggles.ShouldNotBeEmpty(); toggles.Count().ShouldBe(3); foreach (var toggle in toggles) { toggle.ToBoolValue().ShouldBeTrue(); } }
/// <summary> /// Posts a toggle asynchronous. /// </summary> /// <param name="toogDto">The toog dto.</param> /// <returns>The toggle,</returns> /// <exception cref="ArgumentNullException">toogDto</exception> public async Task <Response <ToggleDto> > PostToggleAsync(ToggleDto toogDto) { if (toogDto == null) { throw new ArgumentNullException(nameof(toogDto)); } if (string.IsNullOrEmpty(toogDto.Name)) { throw new ArgumentNullException(nameof(toogDto.Name)); } if (toogDto.Applications == null && !toogDto.Applications.Any()) { throw new ArgumentNullException(nameof(toogDto.Applications)); } //get all repositories var toggleRepository = GetToggleRepository(); var toggleConfigRepository = _repositoryFactory.CreateRepository <ToggleConfig>(_unitOfWork); var applicationRepository = _repositoryFactory.CreateRepository <Application>(_unitOfWork) as ApplicationRepository; // define toggle var toggle = new ToggleBuilder().WithId(toogDto.Id ?? Guid.NewGuid().ToString()) .WithName(toogDto.Name) .Build(); // get apps from database to set the new toggle var apps = applicationRepository.GetApplications(toogDto.Applications.Select(c => c.Id).ToList()); foreach (var app in apps) { app.IsToggleServiceAllowed = true; var toggleConfig = new ToggleConfig { Id = Guid.NewGuid().ToString(), Version = toogDto.Version, Value = true, ToggleId = toggle.Id, Toggle = toggle, ApplicationId = app.Id, Application = app, CreatedAt = DateTime.UtcNow, UpdateAt = DateTime.UtcNow }; if (toggle.Configs == null) { toggle.Configs = new List <ToggleConfig>(); } if (app.Configs == null) { app.Configs = new List <ToggleConfig>(); } // set toggle configs app.Configs.Add(toggleConfig); toggle.Configs.Add(toggleConfig); applicationRepository.Update(app); toggleConfigRepository.Insert(toggleConfig); } toggleRepository.Insert(toggle); await _unitOfWork.SaveAsync(); return(await Task.FromResult(new Response <ToggleDto> { IsValid = true, Result = ToToggleDto(toggle) })); }
public FarfetchMessage <ToggleDto> Update([FromBody] ToggleDto toggleDto) { return(Service?.Update(toggleDto)); }
public FarfetchMessage <ToggleDto> Insert([FromBody] ToggleDto toggleDto) { return(Service?.Insert(toggleDto)); }