Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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));
        }
Example #7
0
        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);
        }