public void Can_Delete_User()
        {
            // Arrange
            var password = "******";
            var passwordCoderMock = new Mock<IPasswordCoder>();
            passwordCoderMock.Setup(pc => pc.PasswordFormat).Returns(MembershipPasswordFormat.Clear);
            var encodedPassword = Encoding.Default.GetBytes(password);
            passwordCoderMock.Setup(pc => pc.Encode(encodedPassword))
                                            .Returns(encodedPassword);

            HousingMgmtUser user = new HousingMgmtUser("username", password, passwordCoderMock.Object) {
                Email = "*****@*****.**"
            };

            LegalPerson legalPerson = new LegalPerson("12345678902", "FER");

            user.Person = legalPerson;

            UsersNHRepository usersNHRepository = new UsersNHRepository(SessionFactory);

            // Act
            using (var session = SessionFactory.OpenSession()) {
                using (var tx = Session.BeginTransaction()) {
                    usersNHRepository.SaveOrUpdate(user);
                    tx.Commit();
                }
            }

            using (var session = SessionFactory.OpenSession()) {
                using (var tx = Session.BeginTransaction()) {
                    usersNHRepository.Delete(user);
                    tx.Commit();
                }
            }

            HousingMgmtUser fetchedUser = null;
            using (var session = SessionFactory.OpenSession()) {
                using (var tx = Session.BeginTransaction()) {
                    fetchedUser = usersNHRepository.GetById(user.Id) as HousingMgmtUser;
                    tx.Commit();
                }

            }

            // Assert
            Assert.IsTrue(fetchedUser == null, "FetchedUser isn't null.");
        }
        public void Can_Save_Person_To_DB()
        {
            // Arrange
            var password = "******";
            var passwordCoderMock = new Mock<IPasswordCoder>();
            passwordCoderMock.Setup(pc => pc.PasswordFormat).Returns(MembershipPasswordFormat.Clear);
            var encodedPassword = Encoding.Default.GetBytes(password);
            passwordCoderMock.Setup(pc => pc.Encode(encodedPassword))
                                          	.Returns(encodedPassword);

            HousingMgmtUser user = new HousingMgmtUser("username", password, passwordCoderMock.Object) {
                Email = "*****@*****.**"
            };

            LegalPerson legalPerson = new LegalPerson("12345678902", "FER");

            user.Person = legalPerson;

            UsersNHRepository usersNHRepository = new UsersNHRepository(SessionFactory);

            // Act
            using (var session = SessionFactory.OpenSession()) {
                using (var tx = Session.BeginTransaction()) {
                    usersNHRepository.SaveOrUpdate(user);
                    tx.Commit();
                }
            }

            HousingMgmtUser fetchedUser = null;
            using (var session = SessionFactory.OpenSession()) {
                using (var tx = Session.BeginTransaction()) {
                    fetchedUser = usersNHRepository.GetById(user.Id) as HousingMgmtUser;
                    tx.Commit();
                }

            }

            // Assert
            Assert.IsTrue(fetchedUser != null, "FetchedUser is null.");
            Assert.AreEqual(legalPerson, fetchedUser.Person, "Persons aren't equal.");
            Assert.AreEqual(DateTime.MinValue.ToLocalTime(), fetchedUser.LastLockoutDate, "Date and Time aren't equal.");
        }