public void When_CallingValidPost_ExpectValidReturnJSonInBody() { var dob = new NameDateOfBirth { DateOfBirth = DateTime.Now.AddYears(-20), Name = "Miles Davis" }; IActionResult result = ageController.Post(dob); Created created = (Created)((JsonResult)result).Value; Assert.Equal("Miles Davis", created.Name); Assert.Equal("XX", created.Numeral); }
public void When_NameTooShort_Expect_400() { var dob = new NameDateOfBirth { DateOfBirth = DateTime.Now.AddYears(2), Name = "Miles" }; IActionResult result = ageController.Post(dob); int status = ((StatusCodeResult)result).StatusCode; Assert.Equal(400, status); }
public void When_AgeIsZero_Expect_400() { var dob = new NameDateOfBirth { DateOfBirth = DateTime.Now.AddDays(-364), Name = "Miles Davis" }; IActionResult result = ageController.Post(dob); int status = ((StatusCodeResult)result).StatusCode; Assert.Equal(400, status); }
public async void When_FileClearedAndCallPostTwice_Expect_TwoLinesInFile() { await Task.Delay(30); fileHandler.ClearFile(); var dob = new NameDateOfBirth { DateOfBirth = new DateTime(1999, 02, 28), Name = "Miles Davis" }; IActionResult result = ageController.Post(dob); result = ageController.Post(dob); string[] createdLines = fileHandler.ReadLines(); Assert.Equal(2, createdLines.Length); }
public async void When_FileClearedAndCallPost_Expect_OneLineInFile() { // Tests can occasionally try and grab the file at the same time // A database would be advisable for real world code await Task.Delay(30); fileHandler.ClearFile(); var dob = new NameDateOfBirth { DateOfBirth = new DateTime(1999, 02, 28), Name = "Miles Davis" }; IActionResult result = ageController.Post(dob); string[] createdLines = fileHandler.ReadLines(); Assert.Single(createdLines); }
public IActionResult Post([FromBody] NameDateOfBirth nameDateOfBirth) { // ToDo // Validate input and return 400 if date invalid or name too short int yearsAge = age.Calculate(nameDateOfBirth.DateOfBirth); if (yearsAge < 1 || (nameDateOfBirth.Name?.Length ?? 0) < 6) { return(BadRequest()); } string romanAge = numerals.Convert(yearsAge); Created created = new Created { Name = nameDateOfBirth.Name, CreatedAt = DateTime.Now.ToString(), Numeral = romanAge }; fileHandler.WriteLine(created.GetCSV()); return(Json(created)); }
public async void When_FileClearedAndCallPostTwice_Expect_TwoCreatedsReturnedFromGet() { await Task.Delay(30); fileHandler.ClearFile(); var dob1 = new NameDateOfBirth { DateOfBirth = new DateTime(1999, 02, 28), Name = "Miles Davis" }; IActionResult result = ageController.Post(dob1); var dob2 = new NameDateOfBirth { DateOfBirth = new DateTime(1999, 02, 28), Name = "Peter Parker" }; result = ageController.Post(dob2); JsonResult jsonFromFile = ageController.Get(); Created[] createds = (Created[])jsonFromFile.Value; Assert.Equal("Miles Davis", createds[0].Name); Assert.Equal("Peter Parker", createds[1].Name); }