Created
August 20, 2011 04:03
-
-
Save ashic/1158644 to your computer and use it in GitHub Desktop.
denormalizer testing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public abstract class DenormalizerTest<TDenormalizer, TView> | |
{ | |
public abstract IEnumerable<Event> GivenTheseEvents(); | |
public abstract IQueryable<TView> WhenIPerformThisQuery(); | |
public abstract IEnumerable<TView> IShouldGetTheseResults(); | |
[Test] | |
public void PerformTest() | |
{ | |
var events = GivenTheseEvents(); | |
dynamic denormalizer = Activator.CreateInstance<TDenormalizer>(); //many ways of doing this | |
foreach(dynamic @event in events) { denormalizer.Handle(@event); } | |
var actual = WhenIPerformThisQuery().ToList(); | |
var expected = IShouldGetTheseResults().ToList(); | |
CompareObjects co = new CompareObject(); | |
//use other virtual methods to set up ignore patterns etc. | |
Assert.IsTrue(co.Compare(expected, Actual), co.DifferencesString); | |
} | |
} | |
//An implementation might look like: | |
[TestFixture] | |
public class SomeDenormalizerTest : DenormalizerTest<SomeDenormalizer, ViewManagedByDenormalizer> | |
{ | |
SomeReadContext _context = new SomeReadContext(); | |
public override IEnumerable<Event> GivenTheseEvents(){ yield return new Event1(...); yield return new Event2(...); ...} | |
public override IQueryable<TView>() { return _context.ViewManagedByDenormalizers.Where(x=>x.Age>16); } | |
public override IEnumerable<TView>() { yield return new ViewManagedByDenormalizer(...); yield return ViewManagedBYDenormalizers(...); ... } | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment