public void Validate_TitleIsDuplicate_ExceptionThrown() { var now = DateTime.Now; var unique = Guid.NewGuid(); var builder = new DbContextOptionsBuilder <DataContext>().UseSqlServer("Server=.;Database=SimpleTodo;Trusted_Connection=True;MultipleActiveResultSets=true"); // arrange data using (var context = new DataContext(builder.Options)) { context.TodoItems.Add(new TodoItem { DueDate = now.AddDays(3), IsDone = false, Title = "TitleIsDuplicate_" + unique }); context.SaveChanges(); } // act using (var context = new DataContext(builder.Options)) { var validator = new TodoDtoValidator(context); Assert.Throws <InvalidOperationException>(() => validator.Validate(new TodoDto { Title = "TitleIsDuplicate_" + unique, DueDate = DateTime.Now, IsDone = false })); } }
public void AddTodo(TodoDto input) { var exists = context.TodoItems.Any(ff => ff.Title.ToLower() == input.Title.ToLower()); if (exists) { throw new InvalidOperationException("Duplicate todo item"); } var validator = new TodoDtoValidator(context); validator.Validate(input); // refactor to mapper var todoEntity = new TodoItem { CreationDate = DateTime.Now, Title = input.Title, IsDone = false, DueDate = input.DueDate }; context.TodoItems.Add(todoEntity); context.SaveChanges(); }
public void Validate_TitleIsEmpty_ExceptionThrown() { var builder = new DbContextOptionsBuilder <DataContext>().UseSqlServer("Server=.;Database=SimpleTodo;Trusted_Connection=True;MultipleActiveResultSets=true"); using (var context = new DataContext(builder.Options)) { var validator = new TodoDtoValidator(context); Assert.Throws <InvalidOperationException>(() => validator.Validate(new TodoDto { Title = "", DueDate = DateTime.Now, IsDone = false })); } }