Skip to content

Instantly share code, notes, and snippets.

View jmarnold's full-sized avatar

Josh Arnold jmarnold

View GitHub Profile
@jmarnold
jmarnold / ConventionalEmailSource.cs
Created January 15, 2013 18:36
Conventional email rules
public class ConventionalEmailSource : IFieldValidationSource
{
public IEnumerable<IFieldValidationRule> RulesFor(PropertyInfo property)
{
if(property.Name.ToLower().Contains("email"))
{
yield return new EmailFieldRule();
}
}
}
@jmarnold
jmarnold / Basic.cs
Created December 22, 2012 18:01 — forked from anonymous/Basic.cs
var validator = Validator.BasicValidator();
@jmarnold
jmarnold / LoFiEndpoint.cs
Created December 2, 2012 04:56
LoFi Scenario
public class LoFiEndpoint
{
public const string GET = "Input data";
public const string SUCCESS = "Success";
public LoFiInput get_lofi(LoFiInput input)
{
// You could get fancier here and just create the GET from an actionsource
return input;
}
@jmarnold
jmarnold / Models.cs
Created November 28, 2012 04:52
Defining Test Inputs
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public IEnumerable<Error> Errors { get; set; }
}
public class Error
{
public string Code { get; set; }
@jmarnold
jmarnold / AjaxContinuationExtensions.cs
Created November 27, 2012 16:02
Ajax continuation failures
public static AjaxContinuation SystemFailure(this AjaxContinuation continuation, Exception exception)
{
continuation.Success = false;
continuation[EXCEPTION] = new AjaxException
{
type = exception.GetType().Name,
message = exception.Message,
stacktrace = exception.StackTrace
};
return continuation;
@jmarnold
jmarnold / sample.cs
Created November 22, 2012 19:36
SlickGrid & Serenity
// "records-grid" is the id of the div
var grid = Driver.GridAction<Person>("records-grid");
grid.Where(x => x.SSN).Is(ssn).ClickOnRow();
@jmarnold
jmarnold / Wait.cs
Created November 20, 2012 15:39
Wait
public static class Wait
{
public static bool ForExpectedValue<T>(T expectation, Func<T> source, int millisecondPolling = 500, int timeoutInMilliseconds = 5000)
{
var matched = Wait.Until(() => expectation.Equals(source()), millisecondPolling, timeoutInMilliseconds).WasSatisfied;
StoryTellerAssert.Fail(!matched, () => "Expected {0}, but was {1}".ToFormat(expectation, source()));
return true;
}
@jmarnold
jmarnold / EmailGateway.cs
Created November 16, 2012 20:17
Automated Testing
public class EmailGateway : IEmailGateway
{
private readonly EmailSettings _settings;
public EmailGateway(EmailSettings settings)
{
_settings = settings;
}
public void Send(MailMessage message)
@jmarnold
jmarnold / EmailGateway.cs
Created November 11, 2012 00:02
Automated Testing
public class EmailGateway : IEmailGateway
{
private readonly EmailSettings _settings;
private readonly ILogger _logger;
public EmailGateway(EmailSettings settings, ILogger logger)
{
_settings = settings;
_logger = logger;
}
public static class BindingJsonExtensions
{
public static void UseJsonBinding(this BehaviorChain chain)
{
chain.ApplyConneg();
chain.Output.AddFormatter<JsonFormatter>();
chain.Input.ClearAll();
chain.Input.Readers.Prepend(new NewtonSoftReaderNode(chain.InputType()));
}