You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@isis.apache.org by "Dan Haywood (JIRA)" <ji...@apache.org> on 2014/10/10 15:19:34 UTC

[jira] [Resolved] (ISIS-908) Enhance FixtureScript service, support "non-strict" mode

     [ https://issues.apache.org/jira/browse/ISIS-908?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dan Haywood resolved ISIS-908.
------------------------------
    Resolution: Fixed

> Enhance FixtureScript service, support "non-strict" mode
> --------------------------------------------------------
>
>                 Key: ISIS-908
>                 URL: https://issues.apache.org/jira/browse/ISIS-908
>             Project: Isis
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: core-1.6.0
>            Reporter: Dan Haywood
>            Assignee: Dan Haywood
>             Fix For: core-1.7.0
>
>
> Currently the design of the fixture script service is that a given fixture script can only run once (by class/type).  This supports the approach where a leaf fixture script encodes both the "how to" (which business operations to perform) and also the "what" (what the fixture data actually is).  This distinction is seen in Estatio as the difference between the "abstract" superclasses (eg LeaseAbstract) and the concrete subclasses (eg LeaseForOxfPret004, LeaseForKalPoison001).
> But another way to use fixture scripts is to keep the "what" in the calling fixture, and just have the leaf fixture scripts be parameterizable.  eg in effect LeaseAbstract becomes concrete (rename to LeaseSetUp) and can be called multiple times.
> Thus, make the fixture script configurable to either strictly enforce the rule that a given fixture class can only be run once (Estatio's design) or, um, simply not enforce that (the other design).
> ~~~~
> In addition...
> in FixtureResultList (or equiv), an overloaded way to lookup fixtures by key:
>         public static Object Lookup(this IList<IFixtureResult> fixtureResults, string key)
>         {
>             var keys = key.Split('/');
>             return Lookup(fixtureResults, keys);
>         }
> and in FixtureScriptExecutionContext:
> internal void TraceResult(IFixtureScript fixtureScript, string key, FixtureResult fixtureResult)
>         {
>             if (_traceWriter == null)
>             {
>                 return;
>             }
>             var qualifiedName = FixtureScriptService.QualifiedNameFor(fixtureScript);
>             var paddedQualifiedName = Pad(qualifiedName, MaxQualifiedNameLength);
>             var trace = paddedQualifiedName + "/" + key + ": " + fixtureResult.ToString();
>             _traceWriter.WriteLine(trace);
>             _traceWriter.Flush();
>         }



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)