Hi Ivan, Thanks for your contribution, the changes are now in the official trunk.
Paul Batum On Sun, Dec 13, 2009 at 9:33 AM, Ivan Zlatev <[email protected]> wrote: > Greetings fellow Fluent NHibernate users and developers, > > I have recently started using FH and it's been great. When using the > PersistenceSpecification to test my domain model integration I > stumbled upon two tiny buglets/limitations. I forked the source code > on github (http://github.com/ivanz/fluent-nhibernate) and fixed them. > So here I am asking for a review of my patches so that we could get > them upstream if possible. > > I have created a branch for each of them so that review can be easier > (I hope). Ideally if you are going to merge them both you should pull > from my master because both commits touch the same file and won't > apply cleanly if you cherry pick from each branch. So here we go: > > > ==> Patch 1: > http://github.com/ivanz/fluent-nhibernate/commit/37d113dd9a5396e0d536fd780df5b0d66a013013 > > Branch: http://github.com/ivanz/fluent-nhibernate/commits/bug-54 > > Description: > > Fix bug 54 ( > http://code.google.com/p/fluent-nhibernate/issues/detail?id=54 > ) so that it is now possible to use chained property references when > testing components or one-to-one references. E.g.: > > new PersistenceSpecification<User> (base.Session) > .CheckProperty (user => > user.Preferences.DailyCaloriesTarget, 1500) > > Without this commit Fluent NHibernate will throw trying to set the > value on "user.DailyCaloriesTarget" instead of > “user.Preferences.DailyCaloriesTarget”. > > It is important to note that your POCOs have to internally initialize > the nested objects/components at construction. Otherwise you should be > using CheckReference instead. > > The fix involves the following refactoring: > > - Refactor Testing.Values.*Property to wrap a property Accessor > instead of a PropertyInfo directly, because unlike the PropertyInfo > the Accessor infrastructure already handles chained property > references. > - Refactor PersistenceSpecificationExtensions(...) to call > ReflectionHelper.GetAccessor instead of ReflectionHelper.GetProperty > (...) so that we get an Accessor instead of a PropertyInfo to store. > - Fixup the unit tests to use Accessor instead of PropertyInfo. > > > > ==> Patch 2: > http://github.com/ivanz/fluent-nhibernate/commit/d6f5b074b583dd648f3daf8f3050a4518ff6ba70 > > Branch: > http://github.com/ivanz/fluent-nhibernate/commits/check-property-comparer > > Description: > > Implement property-level equality comparison specification in addition > to the entity-level one and add tests. > > If there is no property-level equality comparer the code will fall- > back to the entity-level comparer and if neither are set simply to > Object.Equals. > > An example: > > new PersistenceSpecification<Food> (base.Session, new > EntityLevelEqualityComparer ()) > .CheckProperty (food => food.Image, new Bitmap (20, 20), > new BitmapEqualityComparer ()) > .CheckProperty (food => food.Brand, "banana") > .VerifyTheMappings (); > > Here for the property Image the BitmapEqualityComparer will be used > and for the property Brand the EntityLevelEqualityComparer. > > > Please review. > > Kind Regards, > Ivan Zlatev > > -- > > You received this message because you are subscribed to the Google Groups > "Fluent NHibernate" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<fluent-nhibernate%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/fluent-nhibernate?hl=en. > > > -- You received this message because you are subscribed to the Google Groups "Fluent NHibernate" 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/fluent-nhibernate?hl=en.
