<?xml version="1.0" encoding="UTF-8"?>
<commits type="array">
  <commit>
    <parents type="array">
      <parent>
        <id>a5b77ad24b670904e3c1b6ad7f3e1ff532dd138c</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/972ddd4a00387d59cf417be5dea42f73a0069d1d</url>
    <id>972ddd4a00387d59cf417be5dea42f73a0069d1d</id>
    <committed-date>2009-01-01T14:25:17-08:00</committed-date>
    <authored-date>2009-01-01T14:25:17-08:00</authored-date>
    <message>Added a logging out scenario</message>
    <tree>523a8e5fd960f4f38c7aa64921119eb2cb474f35</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>3b91b1b734c256333382e74cf308c4a5a9edf018</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/a5b77ad24b670904e3c1b6ad7f3e1ff532dd138c</url>
    <id>a5b77ad24b670904e3c1b6ad7f3e1ff532dd138c</id>
    <committed-date>2008-12-31T09:57:58-08:00</committed-date>
    <authored-date>2008-12-31T09:57:58-08:00</authored-date>
    <message>Add a &quot;saving a draft&quot; scenario</message>
    <tree>6457ff375f4d9a75f0473c063a84de01f41acb71</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>9dfc439bc0394cfc99f6f28e3a456efa0605c19f</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/3b91b1b734c256333382e74cf308c4a5a9edf018</url>
    <id>3b91b1b734c256333382e74cf308c4a5a9edf018</id>
    <committed-date>2008-12-30T06:48:00-08:00</committed-date>
    <authored-date>2008-12-30T06:48:00-08:00</authored-date>
    <message>Add a new_article.feature scenario

What I really want to do is test the JavaScript in the GUI, but I'll to
create some assets before I can do that.</message>
    <tree>d5aab6829fee2a40b3e323ba40d3e59e07599714</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>f15b34b327f66c1ca9087c0c5d6dfcc9ec56a974</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/9dfc439bc0394cfc99f6f28e3a456efa0605c19f</url>
    <id>9dfc439bc0394cfc99f6f28e3a456efa0605c19f</id>
    <committed-date>2008-12-29T04:42:43-08:00</committed-date>
    <authored-date>2008-12-29T04:42:43-08:00</authored-date>
    <message>Add primitive support for Webrat::Selenium

If you can get selenium-client working on your machine, you can edit
env.rb to turn on some primitive support for running feature stories
using Webrat::Selenium.  Some of the stories will fail, either
because they require access to ActionMailer, or for more mysterious
reasons.</message>
    <tree>7afcc5e43e54680b724c17db436bb90fb2587cfe</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>b76f989b688efc63c1ce3dce1878be5b95792ca2</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/f15b34b327f66c1ca9087c0c5d6dfcc9ec56a974</url>
    <id>f15b34b327f66c1ca9087c0c5d6dfcc9ec56a974</id>
    <committed-date>2008-12-28T13:26:58-08:00</committed-date>
    <authored-date>2008-12-28T13:26:58-08:00</authored-date>
    <message>Replace helper methods with step invocations

Thanks to brynary on #webrat for pointing me towards this feature!
There's no need to create helper functions to share code between steps--
instead, we can call out to other steps from within steps.

With a few more tweaks, I could write about 80% of my steps directly in
the *.features language, and reserve Ruby for those cases when I need to
poke around in the e-mail delivery queue, or something similarly exotic.

The only remaining drawback with this code is the handling of nested
quote characters.  I can probably clean this up, perhaps using a helper
method and some single quotes here and there.</message>
    <tree>9eadf10aadcb0d3d3de706d6012b64e42e488d42</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>2b3f3b7ae694b68599a9a819a394def4ffcf5491</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/b76f989b688efc63c1ce3dce1878be5b95792ca2</url>
    <id>b76f989b688efc63c1ce3dce1878be5b95792ca2</id>
    <committed-date>2008-12-28T08:26:30-08:00</committed-date>
    <authored-date>2008-12-28T08:26:30-08:00</authored-date>
    <message>Add a standard prologue to login.feature</message>
    <tree>5363c17d001f86a733446274906d8164991acf70</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>7ecb3412aa28a740074dc64fef772b3acf4847f6</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/2b3f3b7ae694b68599a9a819a394def4ffcf5491</url>
    <id>2b3f3b7ae694b68599a9a819a394def4ffcf5491</id>
    <committed-date>2008-12-28T07:54:11-08:00</committed-date>
    <authored-date>2008-12-28T07:16:29-08:00</authored-date>
    <message>Add a &quot;reset password&quot; scenario

What I like:

  * The autogenerated &quot;When&quot;, &quot;Given&quot;, etc., stubs are a nice touch.

What I don't like:

  * The use of &quot;^&quot; and &quot;$&quot; in regular expressions matching steps is not
    a good idea.  Cucumber should make sure that Given, etc., forms
    match an entire line, and not leave this resonsibility up to the
    user.  Why?

      - It's easy to leave them out.
      - Typing them over and over is not really DRY.
      - It's _extremely_ dangerous to get in the habit of typing &quot;^&quot; and
        &quot;$&quot; in Ruby, because you almost always mean &quot;\A&quot; and &quot;\z&quot;
        instead.  Accidentally using &quot;^&quot; and &quot;$&quot; in model validations is
        a common and nasty security hole in most Rails apps; see the
        Rails security guide for details.  Encourage good habits!

  * I wish I could break a step across multiple lines.  This would make
    object initialization much easier, and even make it possible
    automatically parse everything after 'with' and feed it directory to
    machinist.

      Given a global administrator named &quot;sarah&quot; with password &quot;password&quot;
        and email &quot;sarah@example.com&quot;

      User.make(:admin =&gt; true, :login =&gt; &quot;sarah&quot;,
                # This part we handle by matching 'with ... and ...'.
                :password =&gt; &quot;password&quot;, :email =&gt; &quot;sarah@example.com&quot;)

  * There's a temptation to let the code in *_steps.rb files get crufty,
    because it's hidden off in a directory away from the main features,
    and it feels like a &quot;second class&quot; part of the stories.  I'm not sure
    that it's possible to do anything about this, other than pay very
    careful attention to keeping step definitions beautiful and DRY, and
    submitting feature requests where this proves difficult.

  * Refactoring *.features and *_steps.rb files is very, very messy.
    First, when moving code from *.features to *_steps.rb, you need to
    look up the Ruby code for each step and inline it manually.  It would
    be nicer if I could write something like:

Then 'I should be able to log in as &quot;&lt;login&gt;&quot; with password &quot;&lt;pass&gt;&quot;', &lt;&lt;EOD
  When I try to access the overview page
  And I log in as &quot;&lt;login&gt;&quot; with password &quot;&lt;pass&gt;&quot;
  Then I should see the overview page
EOD

    This would have a number of advantages: (1) Users who understood
    *.features files could move up to the next level of abstraction without
    needing to relearn everything from scratch.  (2) Developers would be
    able to reuse step code without adding helper methods to
    Cucumber::Rails::World, which is non-obvious and a bit of a pain.  (3)
    I could refactor by simply copying and pasting code, which is generally
    a win.</message>
    <tree>b353bf06ef1ef3ea32778b81efedfb7b391a2ad4</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>834bd37383d39d7d821346457648f440bb870d72</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/7ecb3412aa28a740074dc64fef772b3acf4847f6</url>
    <id>7ecb3412aa28a740074dc64fef772b3acf4847f6</id>
    <committed-date>2008-12-28T05:45:51-08:00</committed-date>
    <authored-date>2008-12-28T05:45:51-08:00</authored-date>
    <message>Add invalid login scenarios

What I like:

  * Organizing the available steps by domain concept, not by feature.
    This makes it easy to look for, say, all the available &quot;Given a
    site with property foo&quot; forms and pick one.  This is a real insight
    into how helper functions should be organized.

What I don't like:

  * There's a constant tension between (a) keeping things DRY and
    (b) keeping important, concrete information where the user can see
    it.

    When specifying the login, for example, I like to use specific user
    names and passwords, because this keeps concepts like &quot;invalid
    password&quot; extremely concrete.  There's no need for users to
    interpret phrases like &quot;invalid credentials&quot;; they can just look and
    see that the user's password is &quot;password&quot;, but the login form
    contains the password &quot;invalid&quot;, and the two obviously don't match.

    This means that I don't want to use fixtures, because fixtures hide
    critical story information in *.yml files.  Ideally, I want to set
    up the necessary user accounts right in the *.features file, where
    the user can see what names and passwords we're using.

    But because the *.features format isn't really a programming
    language, I can't use any abstractions within the *.features file
    itself.  If three stories all share a common prolog, I can't extract
    a 'before' or a 'context' block.  I really want to write something
    like this:

      http://gist.github.com/40388  or  http://gist.github.com/40389

    But I can't do that, so I'm forced to either (a) allow repitition
    between steps, or (b) move important information off into Ruby code.
    Neither option is acceptable.

  * Refactoring steps from *.features files into Ruby files requires
    looking up how the individual steps were implemented, and then
    merging the corresponding Ruby code.</message>
    <tree>981c302097ad0d592d83f9b82a49cf44f76c6327</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>566fc6e83d14770645905ae8233b65de5ce0534b</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/834bd37383d39d7d821346457648f440bb870d72</url>
    <id>834bd37383d39d7d821346457648f440bb870d72</id>
    <committed-date>2008-12-27T19:46:55-08:00</committed-date>
    <authored-date>2008-12-27T19:46:55-08:00</authored-date>
    <message>Add a single login scenario

More experimentation with Cucumber.  First, some good points:

  1. The overall Given/When/Then structure is a pleasant and clear
     way to organize integration tests.
  2. The textual DSL gently encourages people to make their tests
     readable.  But see drawback (4) below.

Next, the drawbacks:

  1. Cucumber has no equivalent of 'before' or 'setup' blocks, a feature
     which is extremely useful when working with machinist.  Machinist,
     of course, is useful because it makes each test (or test suite)
     self-contained.  But this is less pratical when you can't share
     setup blocks across several different scenarios.  Using Cucumber,
     I'm going to wind up with four identical &quot;Given/And/...&quot;  clauses
     at the top of each scenario, just setting up the test database.

  2. The &quot;plain text tests&quot; is a clever idea, and it might be somewhat
     useful when communicating with non-technical users.  But when you
     come right down to it, the plain text format is really just a
     special-purpose DSL, and a &quot;natural language&quot; one at that.  As
     such, it suffers from a host of issues:
       - To refactor away repeated steps, you need to translate code
         from the textual format to Ruby.
       - The text-based language has extremely weak abstractions
         (scenario outlines are basically crippled functions), and it
         re-invents a very small number of Ruby features, poorly.
     Basically, &quot;business readable DSLs&quot; tend to be less powerful and
     a lot less DRY.  This price might be worth paying if you actually
     use Cucumber to communicate with a client, but I'm not sure it's
     an appropriate tradeoff when working with technical users.

  3. There is substantial duplication between step definitions and the
     scenarios in which they appear.

  4. Much of the Cucumber code I see online makes _no_ attempt to read
     as gramatical, reasonable English, and instead looks like ugly Ruby
     code, hastily transliterated.  If you're not going to make it look
     pretty, why not just skip the *.features format and use a regular
     programming language?</message>
    <tree>d3d19f9a5a46fb8e6cf3b5a8565366a549a5d43c</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>ec67cdcf11399edd442749b9799c4dbe2059c39a</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/566fc6e83d14770645905ae8233b65de5ce0534b</url>
    <id>566fc6e83d14770645905ae8233b65de5ce0534b</id>
    <committed-date>2008-12-27T14:20:03-08:00</committed-date>
    <authored-date>2008-12-27T14:20:03-08:00</authored-date>
    <message>Add config.gem and auto-generated files for Cucumber

This is a highly experimental branch.  We're currently evaluating
Cucumber to see if it's a good fit for Mephisto.</message>
    <tree>24cc6b40a7f4b270f5aed16e4c11d7eff67e6bbd</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>dfa982214629d3b6b9e43c1ff8e3ed3256d3899c</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/ec67cdcf11399edd442749b9799c4dbe2059c39a</url>
    <id>ec67cdcf11399edd442749b9799c4dbe2059c39a</id>
    <committed-date>2008-12-27T14:13:10-08:00</committed-date>
    <authored-date>2008-12-27T14:13:10-08:00</authored-date>
    <message>Allow newer versions of these gems

There's no reason to lock these to specific versions.</message>
    <tree>7a8989520188383f918a41f6bc068789b5aae496</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>f5807723f7959362b25748df52261f08e9692c69</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/dfa982214629d3b6b9e43c1ff8e3ed3256d3899c</url>
    <id>dfa982214629d3b6b9e43c1ff8e3ed3256d3899c</id>
    <committed-date>2008-12-27T14:01:08-08:00</committed-date>
    <authored-date>2008-12-27T14:01:08-08:00</authored-date>
    <message>Add version numbers to config.gem statements

Let's just go ahead and require the minimum version of each gem that we
actually know works.  We also split out the test-specific gems into
their own section.</message>
    <tree>8113f11e690097f8a814930e1cab900a021b7e9e</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>cd63c144a6d63b008b4eb8995cc93f97721196d0</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/f5807723f7959362b25748df52261f08e9692c69</url>
    <id>f5807723f7959362b25748df52261f08e9692c69</id>
    <committed-date>2008-12-27T09:50:07-08:00</committed-date>
    <authored-date>2008-12-27T09:50:07-08:00</authored-date>
    <message>Upgrade to interim release of Webrat from github

This should let us experiment with Webrat::Selenium support.</message>
    <tree>401c8205e70ebf3a223b896c618d3470be8c61f9</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>d40725ed3da1b17ea5db51197d9f520bbde62bbb</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/cd63c144a6d63b008b4eb8995cc93f97721196d0</url>
    <id>cd63c144a6d63b008b4eb8995cc93f97721196d0</id>
    <committed-date>2008-12-27T08:21:55-08:00</committed-date>
    <authored-date>2008-12-27T08:15:05-08:00</authored-date>
    <message>Add integration test for &quot;reset password&quot;

Note that we actually extract the activation URL from the e-mail and
pass it directly to 'visit'.</message>
    <tree>b3a7a121caa5bca6661020bdf0a0028e94535d92</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>959f82884ee0e40641ca6ae83cc1d6cd6f0edfdb</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/d40725ed3da1b17ea5db51197d9f520bbde62bbb</url>
    <id>d40725ed3da1b17ea5db51197d9f520bbde62bbb</id>
    <committed-date>2008-12-27T06:08:38-08:00</committed-date>
    <authored-date>2008-12-27T06:08:19-08:00</authored-date>
    <message>Write login integration tests using Webrat

Why do we need integration tests? We've been suffering a lot of
regressions in the Mephisto UI, because our functional tests don't reach
high enough up towards the browser, and whole classes of bugs manage to
slip through.

What is Webrat? Webrat is a &quot;browser simulator&quot; written in Ruby.  It
generates a DOM and allows us to fill in forms as though an actual user
were interacting with the site.

Why Webrat, and not Selenium, Watir, etc?  Webrat is recommended by the
Cucumber project as the default way to write user stories; it's very
fast; and it has a reasonable API.  Plus, Webrat actively maintained,
and very recent versions of Webrat can be used as a front-end to
Selenium.

Why Rails integration tests, and not Cucumber stories?  Since the people
contributing to Mephisto will largely be programmers, I decided to write
integration tests using a Ruby-based DSL.  Cucumber stories look really
interesting, but with no actual clients in the loop, the text-based format
is slightly less useful and has a steeper learning curve for programmers.

Since we're switching to a new integration testing tool, I moved a bunch of
code out of test_helper.rb and put it into our only existing integration
test, caching_test.rb.  I also switched blueprints.rb to set up user
passwords using 'password' and 'password_confirm' (instead of crypted and
salted values) to make it easier for tests to override</message>
    <tree>fcb88ae106f916a1f4f1b871ae22885e44519b33</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>5f488ccb504cd103258f7a8af7ad87c219254b6c</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/959f82884ee0e40641ca6ae83cc1d6cd6f0edfdb</url>
    <id>959f82884ee0e40641ca6ae83cc1d6cd6f0edfdb</id>
    <committed-date>2008-12-26T09:37:17-08:00</committed-date>
    <authored-date>2008-12-26T09:37:17-08:00</authored-date>
    <message>Remove RSpec StoryRunner files

RSpec's StoryRunner has apparently been deprecated by the RSpec project
in favor of Cucumber.  And we're not using it anyway.</message>
    <tree>9f8f4ea63cf16cbef44a19357385db2f12ec3300</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>1ea714e42637e08faa76d7c988cf85125207c23f</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/5f488ccb504cd103258f7a8af7ad87c219254b6c</url>
    <id>5f488ccb504cd103258f7a8af7ad87c219254b6c</id>
    <committed-date>2008-12-26T08:26:27-08:00</committed-date>
    <authored-date>2008-12-26T08:26:27-08:00</authored-date>
    <message>JavaScript: Rename admin/assets/*.js -&gt; *.js.rjs</message>
    <tree>d0cf09ffb2ff0014888219770df4ba4ed2ebc375</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>de8bff52155d3c2815607bcf390c3a20085ab0d1</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/1ea714e42637e08faa76d7c988cf85125207c23f</url>
    <id>1ea714e42637e08faa76d7c988cf85125207c23f</id>
    <committed-date>2008-12-26T07:01:05-08:00</committed-date>
    <authored-date>2008-12-26T07:01:05-08:00</authored-date>
    <message>JavaScript: Fix authenticity_token problems

One of these should be a GET; the other needed a token.</message>
    <tree>ce57609efa3b8ebfab8b30af92affb9e7f9638a3</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>47c3293e95a9a507648de9cc436a8401c312a438</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/de8bff52155d3c2815607bcf390c3a20085ab0d1</url>
    <id>de8bff52155d3c2815607bcf390c3a20085ab0d1</id>
    <committed-date>2008-12-26T05:44:22-08:00</committed-date>
    <authored-date>2008-12-26T05:44:22-08:00</authored-date>
    <message>JavaScript: Fix asset search

We desperately need some kind of unit testing framework for our
JavaScript code, preferably with full support for integration testing
against our application.

I removed a 'page' parameter here that didn't seem to be doing anything.</message>
    <tree>43d34b90f0c85a3779f26336b3e38c369ba2c565</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>33d313000f7dd250a72910c4c148eeb849dec0f3</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/47c3293e95a9a507648de9cc436a8401c312a438</url>
    <id>47c3293e95a9a507648de9cc436a8401c312a438</id>
    <committed-date>2008-12-25T05:26:37-08:00</committed-date>
    <authored-date>2008-12-25T05:26:37-08:00</authored-date>
    <message>Begin updating to latest Prototype

Our version of Prototype is really old, and no longer compatible with
current versions of RJS.  This breaks quite a bit of our admin interace
in subtle ways.

The patch upgrades our bundled version of Prototype to the version
included with Rails 2.2.2.  We also remove some obsolete bits of
application.js and make a few minor fixes so that it loads without
errors.

I've only tested the JavaScript support on the articles page and the
assets page.  Quite a bit of formerly broken stuff now seems to work,
including updates to the list of attached files and updates to the
contents of the bucket.  But there's still more to test and fix.</message>
    <tree>01e98c50edb0f61413b4cf3d983f5c18c550319f</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>975d51bcf58d92922fd18cef9d2837fd6bc72907</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/33d313000f7dd250a72910c4c148eeb849dec0f3</url>
    <id>33d313000f7dd250a72910c4c148eeb849dec0f3</id>
    <committed-date>2008-12-24T13:05:08-08:00</committed-date>
    <authored-date>2008-12-24T13:05:08-08:00</authored-date>
    <message>Added some notes about fixing JavaScript

Our copy of Prototype is so old that it won't work correctly with the
code generated by *.rjs.  But some of the stuff in application.js is
incompatible with newer versions of Prototype.

Fixing this is going to require testing all the JavaScript-enabled
controllers by hand.</message>
    <tree>97af7848be0a97c85dd3b48b29b38691e00cbaae</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>be52beb86d2228cc2f5b0b95a5669e4ce58904f4</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/975d51bcf58d92922fd18cef9d2837fd6bc72907</url>
    <id>975d51bcf58d92922fd18cef9d2837fd6bc72907</id>
    <committed-date>2008-12-23T21:06:59-08:00</committed-date>
    <authored-date>2008-12-23T21:06:59-08:00</authored-date>
    <message>Modernize rjs: admin/articles

I'm going to try to rename all the *.rjs files to *.js.rjs.  This is
trickier than the other renamings, because our unit test coverage isn't
perfect, and I'm trying to test everything by hand when possible.  So
I'm going to do this one directory at a time.

Other changes:
  - The live_preview and _preview stuff wasn't being used.
  - We didn't have a test case for the 'label' action.</message>
    <tree>14448796ede7ff813e4e7f758139087822190ff9</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>19d3422c313410e7f64ba51a991a1ea1491cc663</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/be52beb86d2228cc2f5b0b95a5669e4ce58904f4</url>
    <id>be52beb86d2228cc2f5b0b95a5669e4ce58904f4</id>
    <committed-date>2008-12-23T18:06:15-08:00</committed-date>
    <authored-date>2008-12-23T18:06:15-08:00</authored-date>
    <message>Rename *.rxml files to *.xml.builder

This also requires adding respond_to blocks to some of our actions.</message>
    <tree>92c1271652cedf439437f7bd3edc39189e4aa419</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>b24d0b198cde9fbcbe87f802b12ee61743a6d380</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/19d3422c313410e7f64ba51a991a1ea1491cc663</url>
    <id>19d3422c313410e7f64ba51a991a1ea1491cc663</id>
    <committed-date>2008-12-23T17:49:20-08:00</committed-date>
    <authored-date>2008-12-23T17:49:20-08:00</authored-date>
    <message>Rename *.rhtml files to *.html.erb

Let's go for the new-school approach here.</message>
    <tree>7d7a2f9566d2d09b448fc2398610017d9a87e2b4</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>54f131eb274f1731cba3a3f850d2e010bd552c56</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/b24d0b198cde9fbcbe87f802b12ee61743a6d380</url>
    <id>b24d0b198cde9fbcbe87f802b12ee61743a6d380</id>
    <committed-date>2008-12-23T14:18:25-08:00</committed-date>
    <authored-date>2008-12-23T14:18:25-08:00</authored-date>
    <message>Change default user article filter to Textile

A poll on #mephisto got several votes for Textile as the default, and no
votes for Markdown.  Done.</message>
    <tree>a2bd0881c04bb3d62166f14579cd25d5f21f3956</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>8f3656b21398306fed78ccd13097eca8ebb55238</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/54f131eb274f1731cba3a3f850d2e010bd552c56</url>
    <id>54f131eb274f1731cba3a3f850d2e010bd552c56</id>
    <committed-date>2008-12-23T06:44:41-08:00</committed-date>
    <authored-date>2008-12-23T06:41:27-08:00</authored-date>
    <message>Change default comment filter to Textile

&quot;Plain HTML&quot; is not a very reasonable comment format for end-users, who
probably want simple paragraph breaks to do the right thing.  So I'm
defaulting this to Textile for new sites.

I also considered defaulting comments to Markdown, but I didn't like the
way that Markdown handled underscores_in_identifiers or * versus _.  For
very simple stuff, Textile seems very slightly more intuitive than
Markdown, though neither is perfect.</message>
    <tree>b0c8b9acbb8003fb7afa19b5816ef3bb77b86d69</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>6677a2c0f490a7cdaa1671482db3f714d45cf8d3</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/8f3656b21398306fed78ccd13097eca8ebb55238</url>
    <id>8f3656b21398306fed78ccd13097eca8ebb55238</id>
    <committed-date>2008-12-22T05:57:08-08:00</committed-date>
    <authored-date>2008-12-22T05:28:15-08:00</authored-date>
    <message>Fix theme controller bugs

J.C. Zhu reported an InvalidAuthenticityToken error when trying to
change themes.  This was one of several bugs in the theme switching
code left over from the Rails 2.2 porting process and the security
audit.

We needed to convince Ajax.Request to use a GET request when displaying
the theme tools, and we needed to properly escape some text in the
_tools template.

I've also added a test case to make sure we actually render the _tools
view successfully.</message>
    <tree>638431d73fd1a8a299cca19e90f23d133d958930</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>4f4e5a77b043d9626507548acd65ac6fe1839aa4</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/6677a2c0f490a7cdaa1671482db3f714d45cf8d3</url>
    <id>6677a2c0f490a7cdaa1671482db3f714d45cf8d3</id>
    <committed-date>2008-12-22T05:01:14-08:00</committed-date>
    <authored-date>2008-12-22T05:01:14-08:00</authored-date>
    <message>Unbundle tzinfo gem

Sadly, unpacking tzinfo into vendor gems breaks Rails' time zone
support and gives the following error when trying to access
admin/settings:

  uninitialized constant TZInfo::Timezone::TimezoneProxy

So we're going to instruct the user to install this gem using 'sudo
rake gems:install' for now.</message>
    <tree>e283f43297e2a849f574d19ba584186cec14a43e</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>42ccdc10fe910e6ecb942f9d2d32e7c9afe785aa</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/4f4e5a77b043d9626507548acd65ac6fe1839aa4</url>
    <id>4f4e5a77b043d9626507548acd65ac6fe1839aa4</id>
    <committed-date>2008-12-20T14:38:04-08:00</committed-date>
    <authored-date>2008-12-20T14:38:04-08:00</authored-date>
    <message>Update to emk-safe_erb 0.1.2

This fixes script/generate and the standard Rails error page.</message>
    <tree>819f2850803d25c1f42673f94cec1fe7aede2073</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>e229865d6e63a6b6c0e6cb7aac21992ca303f94a</id>
      </parent>
    </parents>
    <author>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </author>
    <url>http://github.com/emk/mephisto/commit/42ccdc10fe910e6ecb942f9d2d32e7c9afe785aa</url>
    <id>42ccdc10fe910e6ecb942f9d2d32e7c9afe785aa</id>
    <committed-date>2008-12-20T12:50:29-08:00</committed-date>
    <authored-date>2008-12-20T12:50:29-08:00</authored-date>
    <message>Test for safe_erb in ActionView::Template, not in ERB

We've been installing safe_erb in all ERB templates, which breaks
script/generate and lots of other important stuff.  But before we can
fix this bug in our custom-hacked safe_erb, we need to narrow our
Mephisto unit tests down so that they only test ActionView::Template.

A safe_erb update will be along shortly.</message>
    <tree>d39ab5f9f1b48265116949835924fcfaecbf2403</tree>
    <committer>
      <name>Eric Kidd</name>
      <email>git@randomhacks.net</email>
    </committer>
  </commit>
</commits>
