Skip to content

Instantly share code, notes, and snippets.

@ashic
Created August 20, 2011 04:03
Show Gist options
  • Save ashic/1158644 to your computer and use it in GitHub Desktop.
Save ashic/1158644 to your computer and use it in GitHub Desktop.
denormalizer testing
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