Hello

I am trying to work through some repository ideas I found on Fabio's
blog (http://fabiomaulo.blogspot.com/2009/09/repository-or-dao-
repository.html) and running into some session state issues in a
SQLite test fixture.

If I try to wrap each test in a transaction and roll it back I get an
error on the second test saying the session is closed.

If I do not wrap the tests in transactions but rather try to delete
each saved item in a tear down method I get an error saying a column
unique constraint is being violated (I do want the column to be unique
but why should it be a violation after the item has been deleted??)

I am reluctant to just blow away the SQLite db and recreate it on each
and every test, but maybe that is the right answer.

Some sample code below; tests run in isolation.

What is the best way to do the testing for this scenario without
errors?

Cheers,
Berryl

=== code with tx wrappers: fails on 2nd test as Session is Closed ===


        [Test]
        public void
Add_IfTheProjectIsTransient_ItIsSavedAndAvailable()
        {
            using (var session = _SessionFactory.GetCurrentSession())
            using(var tx = session.BeginTransaction())  {

                .... add it & assert it's available and persistent

                tx.Rollback();
            }
        }

        [Test]
        public void Add_IfTheProjectIsPersistent_ItIsNoProblem() {
            using (var session = _SessionFactory.GetCurrentSession())
            using (var tx = session.BeginTransaction()) {

                ... add it twice & assert no error
                tx.Rollback();
            }
        }

=== attempted tear down gets unique column violation =====

        [TearDown]
        public void TearDown()
        {
            foreach (var p in _repos.GetOpenProjects())
            {
                _repos.Remove(p);
                _SessionFactory.GetCurrentSession().Evict(p);
            }
            _SessionFactory.GetCurrentSession().Clear();
        }

== add method in repository ====

        public void Add(T item) {
            _sessionFactory.GetCurrentSession().SaveOrUpdate(item);
        }

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to