Created
January 2, 2014 09:18
-
-
Save feanz/1eca95bf41bfc6c2962b to your computer and use it in GitHub Desktop.
AutoMoqDataAttributeVersions Uses Autofixture and Xunit Data Theory attribute.
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 class AutoMoqControllerDataAttribute : AutoDataAttribute | |
{ | |
public AutoMoqControllerDataAttribute() | |
: base(new Fixture() | |
.Customize(new AutoMoqControllerCustomization())) | |
{ | |
} | |
} | |
public class AutoMoqControllerCustomization : CompositeCustomization | |
{ | |
public AutoMoqControllerCustomization() | |
: base(new AutoMoqCustomization(), | |
new MoqControllerCustomization(), | |
new SitecoreCustomization()) | |
{ | |
} | |
private class MoqControllerCustomization : ICustomization | |
{ | |
public void Customize(IFixture fixture) | |
{ | |
var builder = new MockHttpContextFixture(); | |
//remove the display attribute to avoid errors testing controller | |
fixture.Customize<ControllerContext>(c => c | |
.Without(x => x.DisplayMode) | |
.With(cc => cc.HttpContext, builder.Build())); | |
} | |
} | |
private class SitecoreCustomization : ICustomization | |
{ | |
public void Customize(IFixture fixture) | |
{ | |
fixture.Customizations.Add(new SitecoreItemSpecimenBuilder()); | |
fixture.Customizations.Add(new SitecoreCustomItemSpecimenBuilder()); | |
fixture.Customizations.Add(new SitecoreItemIDSpecimenBuilder()); | |
fixture.Customizations.Add(new SitecoreItemStringIDSpecimenBuilder()); | |
fixture.Customizations.Add(new SitecoreMediaItemSpecimenBuilder()); | |
fixture.Customizations.Add(new SitecoreLinkItemSpecimenBuilder()); | |
} | |
private class SitecoreMediaItemSpecimenBuilder : ISpecimenBuilder | |
{ | |
public object Create(object request, | |
ISpecimenContext context) | |
{ | |
var pi = request as ParameterInfo; | |
if (pi == null) | |
{ | |
return new NoSpecimen(request); | |
} | |
if (pi.ParameterType != typeof(MediaItem)) | |
{ | |
return new NoSpecimen(request); | |
} | |
return null; | |
} | |
} | |
private class SitecoreLinkItemSpecimenBuilder : ISpecimenBuilder | |
{ | |
public object Create(object request, | |
ISpecimenContext context) | |
{ | |
var pi = request as ParameterInfo; | |
if (pi == null) | |
{ | |
return new NoSpecimen(request); | |
} | |
if (pi.ParameterType != typeof(MediaItem)) | |
{ | |
return new NoSpecimen(request); | |
} | |
return null; | |
} | |
} | |
private class SitecoreItemSpecimenBuilder : ISpecimenBuilder | |
{ | |
public object Create(object request, | |
ISpecimenContext context) | |
{ | |
var pi = request as ParameterInfo; | |
if (pi == null) | |
{ | |
return new NoSpecimen(request); | |
} | |
if (pi.ParameterType != typeof(Item)) | |
{ | |
return new NoSpecimen(request); | |
} | |
return new Item(new ID(Guid.NewGuid()), | |
new ItemData(new ItemDefinition(new ID(Guid.NewGuid()), | |
"itemname", | |
new ID(Guid.NewGuid()) | |
,new ID(Guid.NewGuid())), Language.Current, new Sitecore.Data.Version(1), new FieldList()) | |
,new Database("master") | |
); | |
} | |
} | |
private class SitecoreCustomItemSpecimenBuilder : ISpecimenBuilder | |
{ | |
public object Create(object request, | |
ISpecimenContext context) | |
{ | |
var pi = request as ParameterInfo; | |
if (pi == null) | |
{ | |
return new NoSpecimen(request); | |
} | |
if (pi.ParameterType != typeof(CustomItemBase)) | |
{ | |
return new NoSpecimen(request); | |
} | |
return null; | |
} | |
} | |
private class SitecoreItemStringIDSpecimenBuilder : ISpecimenBuilder | |
{ | |
public object Create(object request, | |
ISpecimenContext context) | |
{ | |
var pi = request as ParameterInfo; | |
if (pi == null) | |
{ | |
return new NoSpecimen(request); | |
} | |
if (pi.ParameterType != typeof(string) | |
|| pi.Name == "id") | |
{ | |
return new NoSpecimen(request); | |
} | |
return string.Format("{{{0}}}", Guid.NewGuid()); | |
} | |
} | |
private class SitecoreItemIDSpecimenBuilder : ISpecimenBuilder | |
{ | |
public object Create(object request, | |
ISpecimenContext context) | |
{ | |
var pi = request as ParameterInfo; | |
if (pi == null) | |
{ | |
return new NoSpecimen(request); | |
} | |
if (pi.ParameterType != typeof(ID)) | |
{ | |
return new NoSpecimen(request); | |
} | |
return new ID(Guid.NewGuid()); | |
} | |
} | |
} | |
} |
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 class AutoMoqDataAttribute : AutoDataAttribute | |
{ | |
public AutoMoqDataAttribute() | |
: base(new Fixture() | |
.Customize(new AutoMoqCustomization())) | |
{ | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment