<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div style="" class="markdown-here-wrapper" data-md-url="null">
      <p style="margin: 1.2em 0px ! important;">Hi everyone,</p>
      <p style="margin: 1.2em 0px ! important;">Just a quick note to let
        you know that I added a couple of utility functions to the
        Workbench test helpers. I hope this will lower the barriers to
        writing more unit and functional tests for Workbench in the
        future.</p>
      <ul style="margin: 1.2em 0px;padding-left: 2em;">
        <li style="margin: 0.5em 0px;"><code style="font-size: 0.85em;
            font-family: Consolas,Inconsolata,Courier,monospace;margin:
            0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;
            border: 1px solid rgb(234, 234, 234); background-color:
            rgb(248, 248, 248); border-radius: 3px 3px 3px 3px; display:
            inline;">api_fixture</code> now takes an optional list of
          keys to follow from the object before returning it. Now
          instead of saying <code style="font-size: 0.85em;
            font-family: Consolas,Inconsolata,Courier,monospace;margin:
            0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;
            border: 1px solid rgb(234, 234, 234); background-color:
            rgb(248, 248, 248); border-radius: 3px 3px 3px 3px; display:
            inline;">api_fixture("collections")["foo_file"]["name"]</code>,
          you can just say <code style="font-size: 0.85em; font-family:
            Consolas,Inconsolata,Courier,monospace;margin: 0px 0.15em;
            padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid
            rgb(234, 234, 234); background-color: rgb(248, 248, 248);
            border-radius: 3px 3px 3px 3px; display: inline;">api_fixture("collections",
            "foo_file", "name")</code>. Not a huge difference, but it
          makes for nicer whitespace and less typing.</li>
        <li style="margin: 0.5em 0px;">There’s a new method <code
            style="font-size: 0.85em; font-family:
            Consolas,Inconsolata,Courier,monospace;margin: 0px 0.15em;
            padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid
            rgb(234, 234, 234); background-color: rgb(248, 248, 248);
            border-radius: 3px 3px 3px 3px; display: inline;">find_fixture</code>.
          Call it with a class and fixture name, like <code
            style="font-size: 0.85em; font-family:
            Consolas,Inconsolata,Courier,monospace;margin: 0px 0.15em;
            padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid
            rgb(234, 234, 234); background-color: rgb(248, 248, 248);
            border-radius: 3px 3px 3px 3px; display: inline;">find_fixture(User,
            "active")</code>. That will return the result of calling <code
            style="font-size: 0.85em; font-family:
            Consolas,Inconsolata,Courier,monospace;margin: 0px 0.15em;
            padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid
            rgb(234, 234, 234); background-color: rgb(248, 248, 248);
            border-radius: 3px 3px 3px 3px; display: inline;">User.find</code>
          with the active user fixture’s UUID.</li>
      </ul>
      <p style="margin: 1.2em 0px ! important;">Hope this helps,</p>
      <div
title="MDH:SGkgZXZlcnlvbmUsPGJyPjxicj5KdXN0IGEgcXVpY2sgbm90ZSB0byBsZXQgeW91IGtub3cgdGhhdCBJIGFkZGVkIGEgY291cGxlIG9mIHV0aWxpdHkgZnVuY3Rpb25zIHRvIHRoZSBXb3JrYmVuY2gg
dGVzdCBoZWxwZXJzLsKgIEkgaG9wZSB0aGlzIHdpbGwgbG93ZXIgdGhlIGJhcnJpZXJzIHRvIHdy
aXRpbmcgbW9yZSB1bml0IGFuZCBmdW5jdGlvbmFsIHRlc3RzIGZvciBXb3JrYmVuY2ggaW4gdGhl
IGZ1dHVyZS48YnI+PGJyPiogYGFwaV9maXh0dXJlYCBub3cgdGFrZXMgYW4gb3B0aW9uYWwgbGlz
dCBvZiBrZXlzIHRvIGZvbGxvdyBmcm9tIHRoZSBvYmplY3QgYmVmb3JlIHJldHVybmluZyBpdC7C
oCBOb3cgaW5zdGVhZCBvZiBzYXlpbmcgYGFwaV9maXh0dXJlKCJjb2xsZWN0aW9ucyIpWyJmb29f
ZmlsZSJdWyJuYW1lIl1gLCB5b3UgY2FuIGp1c3Qgc2F5IGBhcGlfZml4dHVyZSgiY29sbGVjdGlv
bnMiLCAiZm9vX2ZpbGUiLCAibmFtZSIpYC7CoCBOb3QgYSBodWdlIGRpZmZlcmVuY2UsIGJ1dCBp
dCBtYWtlcyBmb3IgbmljZXIgd2hpdGVzcGFjZSBhbmQgbGVzcyB0eXBpbmcuPGJyPiogVGhlcmUn
cyBhIG5ldyBtZXRob2QgYGZpbmRfZml4dHVyZWAuwqAgQ2FsbCBpdCB3aXRoIGEgY2xhc3MgYW5k
IGZpeHR1cmUgbmFtZSwgbGlrZSBgZmluZF9maXh0dXJlKFVzZXIsICJhY3RpdmUiKWAuwqAgVGhh
dCB3aWxsIHJldHVybiB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgYFVzZXIuZmluZGAgd2l0aCB0aGUg
YWN0aXZlIHVzZXIgZml4dHVyZSdzIFVVSUQuPGJyPjxicj5Ib3BlIHRoaXMgaGVscHMsPGJyPg=="
        style="height:0;font-size:0em;padding:0;margin:0;">​</div>
    </div>
    <div class="moz-signature markdown-here-signature">-- <br>
      Brett Smith</div>
  </body>
</html>