Skip to content

Instantly share code, notes, and snippets.

@benjanderson
Created November 30, 2016 02:00
Show Gist options
  • Save benjanderson/0b38eb6ec8d5c86619afec8d9d96780d to your computer and use it in GitHub Desktop.
Save benjanderson/0b38eb6ec8d5c86619afec8d9d96780d to your computer and use it in GitHub Desktop.
auto fixture example
[TestMethod]
public void MyTestMethod()
{
this.Container.RegisterType<FactoryBase<Entity>, CustomEntityFactory>();
this.Container.RegisterType<FactoryBase<Binding>, CustomBinding1>("binding1");
this.Container.RegisterType<FactoryBase<Binding>, CustomBinding2>("binding2");
var fixture = this.Container.Resolve<IFixture>();
fixture.Create<Binding>();
fixture.Create<DataMart>();
}
private class CustomEntityFactory : EntityFactory
{
public CustomEntityFactory(FactoryBase<Field> fieldFactory, [Dependency("binding1")]FactoryBase<Binding> bindingFactory, FactoryBase<Connection> connectionFactory) :base(fieldFactory, bindingFactory, connectionFactory)
{
}
}
private class CustomBinding1 : FactoryBase<Binding>
{
public override void FixtureCustomizations(IFixture fixture)
{
fixture.Customize<Binding>(composer => composer.Without(binding => binding.SourceConnection));
fixture.Customize<Binding>(composer => composer.Without(binding => binding.SourceConnectionId));
fixture.Customize<Binding>(composer => composer.Without(binding => binding.DataMart));
fixture.Customize<Binding>(composer => composer.Without(binding => binding.DataMartId));
fixture.Customize<Binding>(composer => composer.Without(binding => binding.Id));
fixture.Customize<Binding>(composer => composer.Without(binding => binding.Status));
fixture.Customize<Binding>(composer => composer.With(binding => binding.BindingType, BindingType.Sql));
fixture.Customize<Binding>(composer => composer.With(binding => binding.Classification, BindingClassification.Generic));
}
public sealed override void PostFixtureCustomizations(IFixture fixture, Binding binding)
{
binding.BindingType = BindingType.Sql;
var objectAttributeValue = new BindingAttributeValue()
{
AttributeName = ObjectAttributeValueName.UserDefinedSql,
Value = "SDFDSfsadlfakj"
};
binding.AttributeValues.Add(objectAttributeValue);
}
}
private class CustomBinding2 : FactoryBase<Binding>
{
public override void FixtureCustomizations(IFixture fixture)
{
fixture.Customize<Binding>(composer => composer.Without(binding => binding.SourceConnection));
fixture.Customize<Binding>(composer => composer.Without(binding => binding.SourceConnectionId));
fixture.Customize<Binding>(composer => composer.Without(binding => binding.DataMart));
fixture.Customize<Binding>(composer => composer.Without(binding => binding.DataMartId));
fixture.Customize<Binding>(composer => composer.Without(binding => binding.Id));
fixture.Customize<Binding>(composer => composer.Without(binding => binding.Status));
fixture.Customize<Binding>(composer => composer.With(binding => binding.BindingType, BindingType.Sql));
fixture.Customize<Binding>(composer => composer.With(binding => binding.Classification, BindingClassification.Generic));
}
public sealed override void PostFixtureCustomizations(IFixture fixture, Binding binding)
{
binding.BindingType = BindingType.Sql;
var objectAttributeValue = new BindingAttributeValue()
{
AttributeName = ObjectAttributeValueName.UserDefinedSql,
Value = "SDFDSfsadlfakj"
};
binding.AttributeValues.Add(objectAttributeValue);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment