public void TestAddUserPageGetterAndSetterPreferredTime()
        {
            using (var context = new UserDbContext(MockRSVPUserDb.TestRSVPDbContextOptions()))
            {
                Add_UserModel aum = new Add_UserModel(context);
                Assert.False(aum.PreferredTime);

                aum.PreferredTime = true;
                Assert.True(aum.PreferredTime);
            }
        }
        public void TestAddUserPageGetterAndSetterPhone()
        {
            using (var context = new UserDbContext(MockRSVPUserDb.TestRSVPDbContextOptions()))
            {
                Add_UserModel aum = new Add_UserModel(context);
                Assert.Null(aum.PhoneNumber);

                aum.PhoneNumber = "0123456789";
                Assert.Equal("0123456789", aum.PhoneNumber);
            }
        }
        public void TestAddUserPageGetterAndSetterIsWashingtonResident()
        {
            using (var context = new UserDbContext(MockRSVPUserDb.TestRSVPDbContextOptions()))
            {
                Add_UserModel aum = new Add_UserModel(context);
                Assert.False(aum.IsWashingtonResident);

                aum.IsWashingtonResident = true;
                Assert.True(aum.IsWashingtonResident);
            }
        }
        public void TestAddUserPageGetterAndSetterName()
        {
            using (var context = new UserDbContext(MockRSVPUserDb.TestRSVPDbContextOptions()))
            {
                Add_UserModel aum = new Add_UserModel(context);
                Assert.Null(aum.Name);

                aum.Name = "Test Name";
                Assert.Equal("Test Name", aum.Name);
            }
        }
        public void TestAddUserPageGetterAndSetterEmail()
        {
            using (var context = new UserDbContext(MockRSVPUserDb.TestRSVPDbContextOptions()))
            {
                Add_UserModel aum = new Add_UserModel(context);
                Assert.Null(aum.Email);

                aum.Email = "*****@*****.**";
                Assert.Equal("*****@*****.**", aum.Email);
            }
        }
        public void TestAddUserPageGetterAndSetterHasChildren()
        {
            using (var context = new UserDbContext(MockRSVPUserDb.TestRSVPDbContextOptions()))
            {
                Add_UserModel aum = new Add_UserModel(context);
                Assert.False(aum.HasChildren);

                aum.HasChildren = true;
                Assert.True(aum.HasChildren);
            }
        }
        public void TestAddUserPageGetterAndSetterPersonalRep()
        {
            using (var context = new UserDbContext(MockRSVPUserDb.TestRSVPDbContextOptions()))
            {
                Add_UserModel aum = new Add_UserModel(context)
                {
                    PersonalRep = WhoToInheritEstate.ComplicatedChildren
                };
                Assert.Equal(WhoToInheritEstate.ComplicatedChildren, aum.PersonalRep);

                aum.PersonalRep = WhoToInheritEstate.OtherPerson;
                Assert.Equal(WhoToInheritEstate.OtherPerson, aum.PersonalRep);
            }
        }
        public void TestAddUserPageGetterAndSetterMaritalStatus()
        {
            using (var context = new UserDbContext(MockRSVPUserDb.TestRSVPDbContextOptions()))
            {
                Add_UserModel aum = new Add_UserModel(context)
                {
                    ChooseMaritalStatus = MaritalStatus.FirstMarriage
                };

                Assert.Equal(MaritalStatus.FirstMarriage, aum.ChooseMaritalStatus);
                aum.ChooseMaritalStatus = MaritalStatus.SecondMarriage;
                Assert.Equal(MaritalStatus.SecondMarriage, aum.ChooseMaritalStatus);
            }
        }
        public async void TestAddUserPageTryingToAddUserWithInvalidModelState()
        {
            using (var context = new UserDbContext(MockRSVPUserDb.TestRSVPDbContextOptions()))
            {
                Add_UserModel aum = new Add_UserModel(context)
                {
                    Name        = "Test User",
                    PhoneNumber = "0123456789"
                };

                //Checking DB is actually empty
                var result = await context.Users.ToListAsync();

                Assert.Empty(result);

                //Checking Validation of the Model
                MockValidation.CheckValidation(aum);
                var page = aum.OnPost().Result;
                Assert.IsType <PageResult>(page);
            }
        }
        public async void TestAddUserPageAddingAUserWithValidModelState()
        {
            using (var context = new UserDbContext(MockRSVPUserDb.TestRSVPDbContextOptions()))
            {
                Add_UserModel aum = new Add_UserModel(context)
                {
                    Agree                = true,
                    Name                 = "Test User",
                    Email                = "*****@*****.**",
                    PhoneNumber          = "0123456789",
                    IsVeteran            = true,
                    PreferredTime        = false,
                    IsWashingtonResident = true,
                    ChooseMaritalStatus  = MaritalStatus.SingleAndNeverDivorced,
                    SpouseName           = "N/A",
                    HasChildren          = false,
                    IsCurrentlyPregnant  = false,
                    MinorChildName       = "N/A",
                    ContRemBeneficiary   = WhoToInheritEstate.OtherPerson,
                    PersonToInherit      = WhoToInheritEstate.OtherPerson,
                    PersonalRep          = WhoToInheritEstate.OtherPerson,
                };

                //Checking DB is actually empty
                var result = await context.Users.ToListAsync();

                Assert.Empty(result);

                MockValidation.CheckValidation(aum);
                var page = await aum.OnPost();

                RedirectToPageResult check = (RedirectToPageResult)page;
                result = await context.Users.ToListAsync();

                Assert.Single(result);
                Assert.Equal("/Dashboard", check.PageName);
            }
        }