brine-dsl 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
data/docs/guide.html CHANGED
@@ -546,11 +546,12 @@ type.</p>
546
546
  </dd>
547
547
  <dt class="hdlist1">Type Coercion</dt>
548
548
  <dd>
549
- <p>Related to transforms, a facility to coerce types is also provided. This allows
550
- more intelligent comparison of inputs which have been transformed to a
549
+ <p>Related to transforms, a facility to coerce types is also provided. This
550
+ allows more intelligent comparison of inputs which have been transformed to a
551
551
  richer data type with those that have not been transformed (normally strings).
552
552
  As an example comparing a date/time value with a string will attempt to parse
553
- the string to a date/time so that the values can be compared using the proper semantics.</p>
553
+ the string to a date/time so that the values can be compared using the proper
554
+ semantics.</p>
554
555
  </dd>
555
556
  <dt class="hdlist1"><a href="#_resource_cleanup">Resource Cleanup</a></dt>
556
557
  <dd>
@@ -616,7 +617,8 @@ requiring any additional ruby code.</p>
616
617
  <div class="sectionbody">
617
618
  <div class="paragraph">
618
619
  <p>We&#8217;ll write some tests against <a href="http://myjson.com/api" class="bare">http://myjson.com/api</a>
619
- (selected fairly arbitrary from the list at <a href="https://github.com/toddmotto/public-apis" class="bare">https://github.com/toddmotto/public-apis</a>).
620
+ (selected fairly arbitrary from the list at
621
+ <a href="https://github.com/toddmotto/public-apis" class="bare">https://github.com/toddmotto/public-apis</a>).
620
622
  The API is being explored for the sake of this tutorial,
621
623
  which also serves to bolster this library to support the effort.</p>
622
624
  </div>
@@ -648,7 +650,8 @@ end</code></pre>
648
650
  <p>which could then be called with <code>rake cucumber</code>. The rake approach
649
651
  can be extended for different tasks for each environment, each
650
652
  of which sets the appropriate environment variables allowing the
651
- test code itself to follow <a href="https://12factor.net/config">Twelve-Factor App guidelines</a>
653
+ test code itself to follow
654
+ <a href="https://12factor.net/config">Twelve-Factor App guidelines</a>
652
655
  where Rake provides sugary convenience.</p>
653
656
  </div>
654
657
  </div>
@@ -673,8 +676,8 @@ testing the response status from a GET request.</p>
673
676
  <h3 id="_a_write_request">A Write Request</h3>
674
677
  <div class="paragraph">
675
678
  <p>For POST, PATCH and PUT requests you&#8217;ll normally want to include a request body.
676
- To support this, additional data can be added to the requests before they are sent
677
- (see <a href="#_request_construction">Request Construction</a>).</p>
679
+ To support this, additional data can be added to the requests before they are
680
+ sent (see <a href="#_request_construction">Request Construction</a>).</p>
678
681
  </div>
679
682
  <div class="listingblock">
680
683
  <div class="content">
@@ -723,14 +726,16 @@ can check that the <code>uri</code> response child matches the expected pattern.
723
726
  <h2 id="_environment_variables">Environment Variables</h2>
724
727
  <div class="sectionbody">
725
728
  <div class="paragraph">
726
- <p>Some Brine behavior can be tuned by passing it appropriate environment variables, listed here.</p>
729
+ <p>Some Brine behavior can be tuned by passing it appropriate environment
730
+ variables, listed here.</p>
727
731
  </div>
728
732
  <div class="dlist">
729
733
  <dl>
730
734
  <dt class="hdlist1"><code>BRINE_LOG_HTTP</code></dt>
731
735
  <dd>
732
- <p>Output HTTP traffic to stdout. Any truthy value will result in request and response
733
- metadata being logged, a value of <code>DEBUG</code> (case insensitive) will also log the bodies.</p>
736
+ <p>Output HTTP traffic to stdout. Any truthy value will result in request and
737
+ response metadata being logged, a value of <code>DEBUG</code> (case insensitive) will
738
+ also log the bodies.</p>
734
739
  </dd>
735
740
  <dt class="hdlist1"><code>BRINE_LOG_BINDING</code></dt>
736
741
  <dd>
@@ -747,15 +752,16 @@ metadata being logged, a value of <code>DEBUG</code> (case insensitive) will als
747
752
  <h3 id="_the_use_of_code_code_s">The use of <code>`</code>s</h3>
748
753
  <div class="paragraph">
749
754
  <p>Backticks/grave accents are used as <em>parameter delimiters</em>. It is perhaps
750
- most helpful to think of them in those explicit terms rather than thinking of them
751
- as an alternate <em>quote</em> construct. In particular quoting implies that the parameter
752
- value is a string value, while the step transforms allow for alternate data types.</p>
755
+ most helpful to think of them in those explicit terms rather than thinking of
756
+ them as an alternate <em>quote</em> construct. In particular quoting implies that the
757
+ parameter value is a string value, while the step transforms allow for
758
+ alternative data types.</p>
753
759
  </div>
754
760
  <div class="paragraph">
755
- <p><code>`</code>s were chosen as they are less common than
756
- many other syntactical elements and also allow for the use of logically significant
757
- quoting within paremeter values while hopefully avoiding the need for escape artistry
758
- (as used for argument transforms).</p>
761
+ <p><code>`</code>s were chosen as they are less common than many other syntactical
762
+ elements and also allow for the use of logically significant
763
+ quoting within paremeter values while hopefully avoiding the need for escape
764
+ artistry (as used for argument transforms).</p>
759
765
  </div>
760
766
  </div>
761
767
  </div>
@@ -764,16 +770,19 @@ quoting within paremeter values while hopefully avoiding the need for escape art
764
770
  <h2 id="_selection_and_assertion">Selection and Assertion</h2>
765
771
  <div class="sectionbody">
766
772
  <div class="paragraph">
767
- <p>As tests are generally concerned with performing assertions, a testing DSL should be
768
- able to express the variety of assertions that may be needed. Because these are likely
769
- to be numerous, it could easily lead to duplicated logic or geometric growth of code due
770
- to the combinations of types of assertions and the means to select the inputs for the assertion.</p>
773
+ <p>As tests are generally concerned with performing assertions, a testing DSL
774
+ should be able to express the variety of assertions that may be needed. Because
775
+ these are likely to be numerous, it could easily lead to duplicated logic or
776
+ geometric growth of code due to the combinations of types of assertions and the
777
+ means to select the inputs for the assertion.</p>
771
778
  </div>
772
779
  <div class="paragraph">
773
- <p>To avoid this issue the concepts of selection and assertion are considered separate operations in Brine.
774
- Internally this corresponds to two steps: the first assigns a selector;
775
- the second passes the assertion to that selector which is responsible for applying the assertion against
776
- the selected value(s). In standard step use this will still be expressed as a single step,
780
+ <p>To avoid this issue the concepts of selection and assertion are considered
781
+ separate operations in Brine. Internally this corresponds to two steps: the
782
+ first assigns a selector;
783
+ the second passes the assertion to that selector which is responsible for
784
+ applying the assertion against the selected value(s). In standard step use this
785
+ will still be expressed as a single step,
777
786
  and dynamic step definitions are used to split the work appropriately.</p>
778
787
  </div>
779
788
  <div class="paragraph">
@@ -786,58 +795,67 @@ and dynamic step definitions are used to split the work appropriately.</p>
786
795
  </div>
787
796
  <div class="paragraph">
788
797
  <p>Will be split where the subject of the step (<code>the value of the response body</code>)
789
- defines the selector and the predicate of the step <code>is equal to `foo`</code> defines
790
- the assertion (which is translated to a step such as <code>Then it is equal to `foo`</code>).</p>
798
+ defines the selector and the predicate of the step
799
+ <code>is equal to `foo`</code> defines the assertion (which is translated to a
800
+ step such as <code>Then it is equal to `foo`</code>).</p>
791
801
  </div>
792
802
  <div class="paragraph">
793
- <p>The result of this is that the assertion steps will always follow a pattern where the subject
794
- resembles <code>the value of &#8230;&#8203;</code> and the predicate always resembles <code>is &#8230;&#8203;</code>. Learning the selection
795
- phrases and the assertion phrases and combining them should be a more efficient and flexible way
796
- to become familiar with the language instead of focusing on the resulting combined steps.</p>
803
+ <p>The result of this is that the assertion steps will always follow a pattern
804
+ where the subject resembles <code>the value of &#8230;&#8203;</code> and the predicate always
805
+ resembles <code>is &#8230;&#8203;</code>. Learning the selection phrases and the assertion phrases
806
+ and combining them should be a more efficient and flexible way to become
807
+ familiar with the language instead of focusing on the resulting combined steps.</p>
797
808
  </div>
798
809
  <div class="paragraph">
799
810
  <p>The chosen approach sacrifices eloquence for the sake of consistency.
800
- The predicate will always start with <code>is</code> which can lead to awkward language such as
801
- <code>is including</code> rather than simply <code>includes</code>.
811
+ The predicate will always start with <code>is</code> which can lead to awkward language
812
+ such as <code>is including</code> rather than simply <code>includes</code>.
802
813
  The consistency provides additional benefits such as consistent modification:
803
- for instance <code>is not</code> can always be use for negation rather than working out the appropriate
804
- phrasing for a more natural sounding step (let alone the logic).</p>
814
+ for instance <code>is not</code> can always be use for negation rather than working out the
815
+ appropriate phrasing for a more natural sounding step (let alone the logic).</p>
805
816
  </div>
806
817
  <div class="paragraph">
807
- <p>One of the secondary goals of this is that assertion step definitions should very simple to
808
- write and modifiers (such as negation) should be provided for free to those definitions.
809
- As assertion definitions are likely to be numerous and potentially customized, this should help optimize code economy.</p>
818
+ <p>One of the secondary goals of this is that assertion step definitions should
819
+ be very simple to write and modifiers (such as negation) should be provided for
820
+ free to those definitions.
821
+ As assertion definitions are likely to be numerous and potentially customized,
822
+ this should help optimize code economy.</p>
810
823
  </div>
811
824
  <div class="sect2">
812
825
  <h3 id="_selection_modifiers">Selection Modifiers</h3>
813
826
  <div class="paragraph">
814
- <p>To pursue economical flexibility Brine steps attempt to balance step definitions which accommodate variations
815
- while keeping the step logic and patterns fairly simple. Selection steps in particular generally accept some
816
- parameters that affect their behavior. This allows the relatively small number of selection steps to provide
817
- the flexibility to empower the more numerous assertion steps.</p>
827
+ <p>To pursue economical flexibility Brine steps attempt to balance step definitions
828
+ which accommodate variations while keeping the step logic and patterns fairly
829
+ simple. Selection steps in particular generally accept some parameters that
830
+ affect their behavior. This allows the relatively small number of selection
831
+ steps to provide the flexibility to empower the more numerous assertion steps.</p>
818
832
  </div>
819
833
  <div class="sect3">
820
834
  <h4 id="_traversal">Traversal</h4>
821
835
  <div class="paragraph">
822
- <p>Selection steps can generally target the root of the object specified (such as the response body)
823
- or some nodes within the object if it is a non-scalar value (for instance a child of the response body).
824
- This is indicated in the <a href="#_selection">step reference selection steps</a> by the <code>[$TRAVERSAL]</code> placeholder.
825
- <code>child `$EXPRESSION`</code> or <code>children `$EXPRESSION`</code> can optionally be
826
- inserted at the placeholder to select nested nodes as described in <a href="#_traversal_2">Traversal</a>.</p>
836
+ <p>Selection steps can generally target the root of the object specified (such as
837
+ the response body) or some nodes within the object if it is a non-scalar value
838
+ (for instance a child of the response body). This is indicated in the
839
+ <a href="#_selection">step reference selection steps</a> by the <code>[$TRAVERSAL]</code> placeholder.
840
+ <code>child `$EXPRESSION`</code> or <code>children `$EXPRESSION`</code> can
841
+ optionally be inserted at the placeholder to select nested nodes as described
842
+ in <a href="#_traversal_2">Traversal</a>.</p>
827
843
  </div>
828
844
  </div>
829
845
  <div class="sect3">
830
846
  <h4 id="_negation">Negation</h4>
831
847
  <div class="paragraph">
832
848
  <p>The selectors also currently handle negation of the associated assertions.
833
- This is potentially counter-intuitive but as previously mentioned the intent is that this
834
- should ease the creation of assertions. If negation is added to a selector that it is expected that
835
- the assertion will <em>fail</em>.</p>
849
+ This is potentially counter-intuitive but as previously mentioned the intent is
850
+ that this should ease the creation of assertions. If negation is added to a
851
+ selector that it is expected that the assertion will <em>fail</em>.</p>
836
852
  </div>
837
853
  <div class="paragraph">
838
- <p>Negation will be normally indicated in the <a href="#_selection">step reference selection steps</a> by the presence
839
- of the <code>[not]</code> placeholder. A similar placeholder may be used that is more readable but leads to an equivalent
840
- inversion of the semantics of the statement. To negate the step, the text within the <code>[]</code>s should be inserted
854
+ <p>Negation will be normally indicated in the
855
+ <a href="#_selection">step reference selection steps</a> by the presence
856
+ of the <code>[not]</code> placeholder. A similar placeholder may be used that is more
857
+ readable but leads to an equivalent inversion of the semantics of the statement.
858
+ To negate the step, the text within the <code>[]</code>s should be inserted
841
859
  in the indicated position.</p>
842
860
  </div>
843
861
  <div class="admonitionblock note">
@@ -847,10 +865,12 @@ in the indicated position.</p>
847
865
  <i class="fa icon-note" title="Future Versions"></i>
848
866
  </td>
849
867
  <td class="content">
850
- Handling this in the selectors is (as mentioned) counter-intuitive and unnecessarily couples the selector
851
- to the assertion. It is currently done for practical reasons but is likely to be replaced in a future version
852
- after (or as part of) the initial port of the library to another platform. When it is replaced, all existing steps
853
- will remain supported through at least one more major revision and most should (most should remain unchanged).
868
+ Handling this in the selectors is (as mentioned) counter-intuitive and
869
+ unnecessarily couples the selector to the assertion. It is currently done for
870
+ practical reasons but is likely to be replaced in a future version after (or as
871
+ part of) the initial port of the library to another platform. When it is
872
+ replaced, all existing steps will remain supported through at least one more
873
+ major revision and most should (most should remain unchanged).
854
874
  </td>
855
875
  </tr>
856
876
  </table>
@@ -872,9 +892,12 @@ Use at your own risk, this feature is <strong>not presently supported</strong>.
872
892
  </table>
873
893
  </div>
874
894
  <div class="paragraph">
875
- <p>For anyone that likes to live on the (relative) edge or if this gathers notable interest&#8230;&#8203;the above also
876
- provides an implicit feature: after a value is selected multiple assertions could be performed against it.
877
- For instance:</p>
895
+ <p>For anyone that likes to live on the (relative) edge or if this gathers notable
896
+ interest&#8230;&#8203;the above also provides an implicit feature: after a value is
897
+ selected multiple assertions could be performed against it.</p>
898
+ </div>
899
+ <div class="paragraph">
900
+ <p>For instance:</p>
878
901
  </div>
879
902
  <div class="listingblock">
880
903
  <div class="content">
@@ -883,9 +906,10 @@ And it is of the type `String`</code></pre>
883
906
  </div>
884
907
  </div>
885
908
  <div class="paragraph">
886
- <p>Though this may work in simple cases the present design is likely to produce surprising results since
887
- some aspects (such as negation) are handled by the selector so it would be inherited by the conjunctions
888
- even though it wouldn&#8217;t read that way.</p>
909
+ <p>Though this may work in simple cases the present design is likely to produce
910
+ surprising results since some aspects (such as negation) are handled by the
911
+ selector so it would be inherited by the conjunctions even though it wouldn&#8217;t
912
+ read that way.</p>
889
913
  </div>
890
914
  </div>
891
915
  </div>
@@ -894,13 +918,14 @@ even though it wouldn&#8217;t read that way.</p>
894
918
  <h2 id="_traversal_2">Traversal</h2>
895
919
  <div class="sectionbody">
896
920
  <div class="paragraph">
897
- <p>The language exposed by Brine is flat but the data returned by the server is likely
898
- to include deeper data structures such as objects and collections. To allow selection within
899
- such structures a <code>traversal</code> language is embedded within some steps which will be indicated
900
- by the use of the <code>TRAVERSAL</code> placeholder.</p>
921
+ <p>The language exposed by Brine is flat but the data returned by the server is
922
+ likely to include deeper data structures such as objects and collections. To
923
+ allow selection within such structures a <code>traversal</code> language is embedded within
924
+ some steps which will be indicated by the use of the <code>TRAVERSAL</code> placeholder.</p>
901
925
  </div>
902
926
  <div class="paragraph">
903
- <p>The traversal language consists of a selected subset of <a href="http://goessner.net/articles/JsonPath/">JsonPath</a>.</p>
927
+ <p>The traversal language consists of a selected subset of
928
+ <a href="http://goessner.net/articles/JsonPath/">JsonPath</a>.</p>
904
929
  </div>
905
930
  <div class="admonitionblock note">
906
931
  <table>
@@ -909,12 +934,14 @@ by the use of the <code>TRAVERSAL</code> placeholder.</p>
909
934
  <i class="fa icon-note" title="The Selected Subset"></i>
910
935
  </td>
911
936
  <td class="content">
912
- The subset of JsonPath functionality has been chosen that is believed to support all needed
913
- test cases without requiring deep familiarity with JsonPath. This may lead to more numerous simple steps
914
- in place of fewer steps that use unsupported expressions. Additionally Brine is intended to be
915
- ported to a range of platforms and so only those steps outlined here will be supported across those platforms.
916
- JsonPath expressions <em>not</em> listed below will not be explicitly disallowed but are not officially supported
917
- (will not be tested and will not be ported to another platform if needed).
937
+ The subset of JsonPath functionality has been chosen that is believed to support
938
+ all needed test cases without requiring deep familiarity with JsonPath. This may
939
+ lead to more numerous simple steps in place of fewer steps that use unsupported
940
+ expressions. Additionally Brine is intended to be ported to a range of platforms
941
+ and so only those steps outlined here will be supported across those platforms.
942
+ JsonPath expressions <em>not</em> listed below will not be explicitly disallowed but
943
+ are not officially supported (will not be tested and will not be ported to
944
+ another platform if needed).
918
945
  </td>
919
946
  </tr>
920
947
  </table>
@@ -922,12 +949,15 @@ JsonPath expressions <em>not</em> listed below will not be explicitly disallowed
922
949
  <div class="sect2">
923
950
  <h3 id="_cardinality">Cardinality</h3>
924
951
  <div class="paragraph">
925
- <p>Each traversal expression will select <em>all</em> matching nodes which is therefore represented as a collection.
926
- Often, however, only a single node is expected or desired. Therefore the traversal expression will also
927
- be accompanied by a phrase which defines the expected cardinality, normally <code>child</code> vs. <code>children</code>. <code>children</code> will
928
- <em>always</em> return an array while <code>child</code> will return what would be the first element in that array. <code>child</code> should be
929
- used when accessing a specific node within the tree, while <code>children</code> should be used for what amounts to a query
930
- across multiple nodes (such as testing the value of a field for every element in a collection).</p>
952
+ <p>Each traversal expression will select <em>all</em> matching nodes which is therefore
953
+ represented as a collection. Often, however, only a single node is expected or
954
+ desired. Therefore the traversal expression will also be accompanied by a phrase
955
+ which defines the expected cardinality, normally <code>child</code> vs. <code>children</code>.
956
+ <code>children</code> will <em>always</em> return an array while <code>child</code> will return what would be
957
+ the first element in that array. <code>child</code> should be used when accessing a
958
+ specific node within the tree, while <code>children</code> should be used for what amounts
959
+ to a query across multiple nodes (such as testing the value of a field for every
960
+ element in a collection).</p>
931
961
  </div>
932
962
  </div>
933
963
  <div class="sect2">
@@ -936,9 +966,18 @@ across multiple nodes (such as testing the value of a field for every element in
936
966
  <dl>
937
967
  <dt class="hdlist1"><code>.$KEY</code></dt>
938
968
  <dd>
939
- <p> Access the <code>KEY</code> named child of the starting node. The leading <code>.</code> can be
969
+ <p>Access the <code>KEY</code> named child of the starting node. The leading <code>.</code> can be
940
970
  omitted if at the start of an expression.</p>
941
971
  </dd>
972
+ <dt class="hdlist1"><code>.[$INDEX]</code></dt>
973
+ <dd>
974
+ <p>Access the element of the array at index <code>INDEX</code></p>
975
+ </dd>
976
+ <dt class="hdlist1"><code>.[$FROM:$TO]</code></dt>
977
+ <dd>
978
+ <p>Access a slice of the array containing the elements at index <code>FROM</code> through
979
+ <code>TO</code> (including both limits).</p>
980
+ </dd>
942
981
  </dl>
943
982
  </div>
944
983
  </div>
@@ -948,26 +987,32 @@ omitted if at the start of an expression.</p>
948
987
  <h2 id="_resource_cleanup">Resource Cleanup</h2>
949
988
  <div class="sectionbody">
950
989
  <div class="paragraph">
951
- <p>All test suites should clean up after themselves as a matter of hygiene and to help enforce test independence
952
- and reproducibility. This is particularly important for this library given that it is likely the systems under test
953
- are likely to remain running; accumulated uncleaned resources are at best a nuisance to have to weed through and
954
- at worst raise some costs or other due to heightened consumption of assorted resources (as opposed to more
955
- ephemeral test environments).</p>
990
+ <p>All test suites should clean up after themselves as a matter of hygiene and to
991
+ help enforce test independence and reproducibility. This is particularly
992
+ important for this library given that it is likely the systems under test
993
+ are likely to remain running; accumulated uncleaned resources are at best a
994
+ nuisance to have to weed through and at worst raise some costs or other due to
995
+ heightened consumption of assorted resources (as opposed to more ephemeral test
996
+ environments).</p>
956
997
  </div>
957
998
  <div class="paragraph">
958
- <p>Brine therefore provides mechanisms to assist in cleaning up those resources which are created as part of a test run.
959
- A conceptual hurdle for this type of functionality is that it is very unlikely to be part of the feature that is being
960
- specified, and therefore should ideally not be part of the specification. Depending on the functionality
961
- (and arguably the <a href="https://www.martinfowler.com/articles/richardsonMaturityModel.html">maturity</a>) of the
962
- API, most or all of the cleanup can be automagically done based on convention. There are tentative plans to support
963
- multiple techniques for cleaning up resources based on how much can be implicitly ascertained&#8230;&#8203;though presently there
964
- exists only one.</p>
999
+ <p>Brine therefore provides mechanisms to assist in cleaning up those resources
1000
+ which are created as part of a test run. A conceptual hurdle for this type of
1001
+ functionality is that it is very unlikely to be part of the feature that is
1002
+ being specified, and therefore should ideally not be part of the specification.
1003
+ Depending on the functionality (and arguably the
1004
+ <a href="https://www.martinfowler.com/articles/richardsonMaturityModel.html">maturity</a>)
1005
+ of the API, most or all of the cleanup can be automagically done based on
1006
+ convention. There are tentative plans to support multiple techniques for
1007
+ cleaning up resources based on how much can be implicitly
1008
+ ascertained&#8230;&#8203;though presently there exists only one.</p>
965
1009
  </div>
966
1010
  <div class="sect2">
967
1011
  <h3 id="_step_indicating_resource_to_delete">Step indicating resource to DELETE</h3>
968
1012
  <div class="paragraph">
969
- <p>If the API supports DELETE requests to remove created resources but it is either desirable or necessary to specify
970
- what those resource PATHS are, a step can be used to indicate which resources should be DELETEd upon test completion.</p>
1013
+ <p>If the API supports DELETE requests to remove created resources but it is either
1014
+ desirable or necessary to specify what those resource PATHS are, a step can be
1015
+ used to indicate which resources should be DELETEd upon test completion.</p>
971
1016
  </div>
972
1017
  <div class="paragraph">
973
1018
  <p><em>see <a href="#_cleanup">Cleanup Step Definitions</a></em></p>
@@ -991,27 +1036,34 @@ a <a href="https://en.wikipedia.org/wiki/Builder_pattern">Builder</a>.</p>
991
1036
  <dl>
992
1037
  <dt class="hdlist1"><code>When a $METHOD is sent to `$PATH`</code></dt>
993
1038
  <dd>
994
- <p> As every request to a REST API is likely to have a significant
995
- HTTP <code>METHOD</code> and <code>PATH</code>, this step is considered required and is therefore used
996
- to send the built request. This should therefore be the <strong>last</strong> step for any
997
- given request that is being built.</p>
1039
+ <p>As every request to a REST API is likely to have a significant
1040
+ HTTP <code>METHOD</code> and <code>PATH</code>, this step is considered required and is therefore
1041
+ used to send the built request. This should therefore be the <strong>last</strong> step for
1042
+ any given request that is being built.</p>
998
1043
  </dd>
999
1044
  <dt class="hdlist1"><code>When the request body is assigned:</code></dt>
1000
1045
  <dd>
1001
- <p> The multiline content provided will be assigned to the body of the request.
1046
+ <p>The multiline content provided will be assigned to the body of the request.
1002
1047
  This will normally likely be the JSON representation of data.</p>
1003
1048
  </dd>
1004
- <dt class="hdlist1"><code>When the request query parameter `$PARAMETER` is assigned `$VALUE`</code></dt>
1005
- <dd>
1006
- <p> Assign <code>VALUE</code> to the request query <code>PARAMETER</code>.
1007
- The value will be URL encoded and the key/value pair appended to the URL using
1008
- the appropriate <code>?</code> or <code>&amp;</code> delimiter.
1009
- The order of the parameters in the resulting URL should be considered undefined.</p>
1010
- </dd>
1049
+ </dl>
1050
+ </div>
1051
+ <div class="paragraph">
1052
+ <p><code>When the request query parameter `$PARAMETER` is assigned
1053
+ `$VALUE`</code>::
1054
+ Assign <code>VALUE</code> to the request query <code>PARAMETER</code>.
1055
+ The value will be URL encoded and the key/value pair appended to the URL using
1056
+ the appropriate <code>?</code> or <code>&amp;</code> delimiter.
1057
+ The order of the parameters in the resulting URL should be considered
1058
+ undefined.</p>
1059
+ </div>
1060
+ <div class="dlist">
1061
+ <dl>
1011
1062
  <dt class="hdlist1"><code>When the request header `$HEADER` is assigned `$VALUE`</code></dt>
1012
1063
  <dd>
1013
- <p> Assign <code>VALUE</code> to the request header <code>HEADER</code>.
1014
- Will overwrite any earlier value for the specified header, including earlier steps or defaults.</p>
1064
+ <p>Assign <code>VALUE</code> to the request header <code>HEADER</code>.
1065
+ Will overwrite any earlier value for the specified header, including earlier
1066
+ steps or defaults.</p>
1015
1067
  </dd>
1016
1068
  </dl>
1017
1069
  </div>
@@ -1022,13 +1074,17 @@ Will overwrite any earlier value for the specified header, including earlier ste
1022
1074
  <dl>
1023
1075
  <dt class="hdlist1"><code>When a resouce is created at `$PATH`</code></dt>
1024
1076
  <dd>
1025
- <p>Mark <code>PATH</code> as a resource to DELETE after the test is run. See <a href="#_resource_cleanup">Resource Cleanup</a></p>
1077
+ <p>Mark <code>PATH</code> as a resource to DELETE after the test is run.
1078
+ See <a href="#_resource_cleanup">Resource Cleanup</a></p>
1026
1079
  </dd>
1027
1080
  </dl>
1028
1081
  </div>
1029
1082
  </div>
1030
1083
  <div class="sect2">
1031
1084
  <h3 id="_assignment">Assignment</h3>
1085
+ <div class="paragraph">
1086
+ <p><a href="specs.html#_assignment"><span class="icon"><i class="fa fa-cogs"></i></span> Specification</a></p>
1087
+ </div>
1032
1088
  <div class="dlist">
1033
1089
  <dl>
1034
1090
  <dt class="hdlist1"><code>When `$IDENTIFIER` is assigned `$VALUE`</code></dt>
@@ -1037,14 +1093,19 @@ Will overwrite any earlier value for the specified header, including earlier ste
1037
1093
  </dd>
1038
1094
  <dt class="hdlist1"><code>When `$IDENTIFIER` is assigned a random string</code></dt>
1039
1095
  <dd>
1040
- <p> Assigns a random string (UUID) to <code>IDENTIFIER</code>.
1096
+ <p>Assigns a random string (UUID) to <code>IDENTIFIER</code>.
1041
1097
  This is particularly useful to assist with test isolation.</p>
1042
1098
  </dd>
1043
1099
  <dt class="hdlist1"><code>When `$IDENTIFIER` is assigned a timestamp</code></dt>
1044
1100
  <dd>
1045
- <p> Assigns to <code>IDENTIFIER</code> a timestamp value representing the instant at
1101
+ <p>Assigns to <code>IDENTIFIER</code> a timestamp value representing the instant at
1046
1102
  which the step was evaluated.</p>
1047
1103
  </dd>
1104
+ <dt class="hdlist1"><code>When `$IDENTIFIER` is assigned the response (body|status|headers) [$TRAVERSAL]</code></dt>
1105
+ <dd>
1106
+ <p>Assigns to <code>IDENTIFIER</code> the value extracted from the specified response
1107
+ attribtute (at the optional traversal path).</p>
1108
+ </dd>
1048
1109
  </dl>
1049
1110
  </div>
1050
1111
  </div>
@@ -1056,11 +1117,14 @@ which the step was evaluated.</p>
1056
1117
  <div class="paragraph">
1057
1118
  <p><em>see <a href="#_selection_and_assertion">Selection and Assertion</a></em></p>
1058
1119
  </div>
1120
+ <div class="paragraph">
1121
+ <p><em>TODO: Replace all the explicit attributes.</em></p>
1122
+ </div>
1059
1123
  <div class="dlist">
1060
1124
  <dl>
1061
- <dt class="hdlist1"><code>Then the value of the response status is</code></dt>
1125
+ <dt class="hdlist1"><code>Then the value of the response (body|status|headers) is</code></dt>
1062
1126
  <dd>
1063
- <p>Select the status code of the current HTTP response.</p>
1127
+ <p>Select the sepecified attribute of the current HTTP response.</p>
1064
1128
  </dd>
1065
1129
  <dt class="hdlist1"><code>Then the value of the response body [$TRAVERSAL] is [not]</code></dt>
1066
1130
  <dd>
@@ -1101,13 +1165,15 @@ which the step was evaluated.</p>
1101
1165
  </dd>
1102
1166
  <dt class="hdlist1"><code>Then it is empty</code></dt>
1103
1167
  <dd>
1104
- <p> Assert that value is empty or null. Any type which is not testable for emptiness
1105
- (such as booleans or numbers) will always return false. Null is treated as an empty
1106
- value so that it can be treated as such for endpoints that return null in place of empty collections, and non-null empty values can easily be tested for using conjunction.</p>
1168
+ <p>Assert that value is empty or null. Any type which is not testable for
1169
+ emptiness (such as booleans or numbers) will always return false. Null is
1170
+ treated as an empty value so that it can be treated as such for endpoints that
1171
+ return null in place of empty collections, and non-null empty values can
1172
+ easily be tested for using conjunction.</p>
1107
1173
  </dd>
1108
1174
  <dt class="hdlist1"><code>Then it is of length `$VALUE`</code></dt>
1109
1175
  <dd>
1110
- <p> Assert that the value exposes a length attribute and the value of that
1176
+ <p>Assert that the value exposes a length attribute and the value of that
1111
1177
  attribute is <code>VALUE</code>.</p>
1112
1178
  </dd>
1113
1179
  <dt class="hdlist1"><code>Then it is a valid `$TYPE`</code></dt>
@@ -1147,7 +1213,7 @@ wiring and documentation. The current supported types are:</p>
1147
1213
  </div>
1148
1214
  <div id="footer">
1149
1215
  <div id="footer-text">
1150
- Last updated 2018-05-30 12:55:31 EDT
1216
+ Last updated 2018-06-17 22:38:06 EDT
1151
1217
  </div>
1152
1218
  </div>
1153
1219
  </body>
data/docs/index.html CHANGED
@@ -426,7 +426,8 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
426
426
  <div id="toc" class="toc2">
427
427
  <div id="toctitle">Table of Contents</div>
428
428
  <ul class="sectlevel1">
429
- <li><a href="#_documentation">Documentation</a></li>
429
+ <li><a href="#_overview">Overview</a></li>
430
+ <li><a href="#_documents">Documents</a></li>
430
431
  </ul>
431
432
  </div>
432
433
  </div>
@@ -439,11 +440,21 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
439
440
  </div>
440
441
  </div>
441
442
  <div class="sect1">
442
- <h2 id="_documentation">Documentation</h2>
443
+ <h2 id="_overview">Overview</h2>
443
444
  <div class="sectionbody">
444
445
  <div class="paragraph">
445
- <p>The following are the documentation resources presently available.</p>
446
+ <p>The documentation should provide the background information to
447
+ get started using Brine and a framework for figuring out specific details.
448
+ The focus of guides will be on concepts and high level information while
449
+ more comprehensive and finer grained information will be provided by
450
+ specifications and source. Recipes will be provided for problems which
451
+ are common, interesting, or anything anyone wants to contribute :).</p>
446
452
  </div>
453
+ </div>
454
+ </div>
455
+ <div class="sect1">
456
+ <h2 id="_documents">Documents</h2>
457
+ <div class="sectionbody">
447
458
  <div class="dlist">
448
459
  <dl>
449
460
  <dt class="hdlist1"><a href="guide.html"><span class="icon"><i class="fa fa-book"></i></span> User Guide</a></dt>
@@ -460,12 +471,15 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
460
471
  </dd>
461
472
  </dl>
462
473
  </div>
474
+ <div class="paragraph">
475
+ <p><em>TODO: The current Cookbook name should be qualified to match its scope</em></p>
476
+ </div>
463
477
  </div>
464
478
  </div>
465
479
  </div>
466
480
  <div id="footer">
467
481
  <div id="footer-text">
468
- Last updated 2018-05-30 12:01:52 EDT
482
+ Last updated 2018-06-17 15:55:45 EDT
469
483
  </div>
470
484
  </div>
471
485
  </body>