public void Test_Account_Create()
        {
            DbContextOptionsBuilder optionsBuilder = new DbContextOptionsBuilder();

            optionsBuilder.UseInMemoryDatabase("test1");
            var context = new ApplicationDbContext(optionsBuilder.Options);
            AccountControllerV2 controller = new AccountControllerV2(context);

            IActionResult result = controller.Create(new Account()
            {
                Id = 1, Name = "Checking", SSN = "000-05-1120"
            });

            Assert.True(result != null);
            Assert.True(context.Accounts.Count() == 1);
            Assert.True(context.Accounts.First().Id == 1);
            Assert.True(context.Accounts.First().Name == "Checking");
            Assert.True(context.Accounts.First().DateCreated != null);
            Assert.True(context.Accounts.First().SSN == "000-05-1120");
        }
        public void Test_Account_Create_With_Validation()
        {
            //setup
            DbContextOptionsBuilder optionsBuilder = new DbContextOptionsBuilder();

            optionsBuilder.UseInMemoryDatabase("test2");
            var context = new ApplicationDbContext(optionsBuilder.Options);
            AccountControllerV2 controller = new AccountControllerV2(context);

            //act
            IActionResult result = controller.Create(new Account()
            {
                Id = 1, Name = "Checking", SSN = "000-05-1120"
            });

            Assert.True(result != null);                               // the result isn't null
            Assert.True(context.Accounts.Count() == 1);                // the result has the count we expect
            Assert.True(context.Accounts.First().Id == 1);             // the record has the id we expect
            Assert.True(context.Accounts.First().Name == "Checking");  // it has the right name
            Assert.True(context.Accounts.First().DateCreated != null); // we saved a date
            Assert.True(context.Accounts.First().SSN == "000-05-1120");
            // test that creating a blank name returns a 422 code
            IActionResult result2 = controller.Create(new Account()
            {
                Id = 1, Name = ""
            });

            Assert.True((result2 as StatusCodeResult).StatusCode == 422);

            // test that creating duplicate names returns 4222
            IActionResult resultUnique = controller.Create(new Account()
            {
                Id = 2, Name = "Checking1"
            });
            IActionResult resultUniqueTest = controller.Create(new Account()
            {
                Id = 2, Name = "Checking1"
            });

            Assert.True((result2 as StatusCodeResult).StatusCode == 422);
        }