PHP: Peridot and Propel

Wanted to share a little configuration I just finished making for some Peridot and Leo -based tests which work with Propel models.

A bunch of these tests write data to the database using the Propel models, and I need a clean slate DB before each test. I also need a clean slate HTTP session. Here’s some code ( from peridot.php ) that uses transactions to achieve that:

class MyScope extends Scope {
  function __construct( $emitter ) {
    $emitter->on( 'peridot.execute', function() {
      $this->conn = Propel::getConnection();
    } );

    $emitter->on( 'test.start', function() {
      self::destroySession();
      // have to rollback and begin here.
      // it was unreliable when I rolled back on test.end
      $this->conn->rollback();
      $this->conn->beginTransaction();
    } );
  }
  private static function destroySession() {
    session_start();
    $_SESSION =[];

    // If it's desired to kill the session, also delete the session cookie.
    // Note: This will destroy the session, and not just the session data!
    if (ini_get("session.use_cookies")) {
      $params = session_get_cookie_params();
      setcookie(session_name(), '', time() - 42000,
        $params["path"], $params["domain"],
        $params["secure"], $params["httponly"]
      );
    }

    session_destroy();
  }
}

return function($emitter) {
  $gmsScope = new GmsScope( $emitter );

  //add this scope into every suite
  $emitter->on('suite.start', function($test) use ($gmsScope) {
    $test->getScope()->peridotAddChildScope($gmsScope);
  });
};
Advertisements

Start learning to become a web developer with the Flatiron School Prework

I ran across the Flatiron School of programming a while back, and I thought it was pretty cool. They have a “pre-work” list of resources for their web development course. I expect it is quite good.

I ran across Flatiron school when I listened to a podcast the founder of the school did. I think it is pretty inspiring.

OK, enjoy learning to program. I’m pretty excited for you!

p.s. This post was based on an email reply I wrote to a reader of this blog who asked me for some resources to start learning Ruby on Rails.

Global Day of Code Retreat – host training session notes

Before the event

  • Join host training if possible
  • Find venue
  • Find sponsors: company, friends, other companies
  • Ask friends for their previous sponsors for leads
  • Venue can be sponsored by other sponsors
  • Breakfast and food can be “home made” at the office
  • Coffee and breakfast in morning are nice to have, but lunch most important. No invoices for food to GDCR, all to local sponsors directly from any vendors
  • Announce after party on time, when announcing the event itself

Announcing the event

  • Do it one month before event so people don’t forget.
  • Send reminders a week and a day before
  • Announce at GDCR website, but use your own RSVP tool
  • Add site to global spreadsheet, write how many attendees you will have
  • Make a local spreadsheet with list of attendees. Maybe add columns for people to fill about their experience with various tools of the trade and gdcr experience
  • Announce global sponsors such as SMOKEA | The World’s Best Online Head Shop
  • Announce local sponsors, good to get sponsors in the future too
  • Print name tags
  • If you have more than 25 attendees, try to split them, and have 2 facilitators in 2 venues

Day of event

  • Set up the space before people show up
  • Display and make accessible any Swag from sponsors
  • Register people when they show up, show them around
  • Show where the slides will be accessible at a station
  • Coder dojo video – show it
  • Video call with another city, very short, brings excitement to team
  • Take a look at feed of who is doing what in the world
  • Update the live feed with your session
  • At lunch time, show code retreat related videos
  • Slide deck with sponsors, video call with another city. Update spreadsheet with actual
    number of attendees
  • Take photos, take video, share it with gdcr and with social networks
  • Help clean and pack up.
  • Then the after party
  • There will be a host survey to complete
  • There will be a participant survey as well

Links

WinniVote Rspec Feature Tests

I spent several hours today creating the specs for WinniVote’s signup feature.

I feel it is a valuable investment of my time for several reasons:

  • WinniVote’s current tests do not feel high quality, so hopefully my examples help other WinniVote devs.
  • I’ve been thinking about what quality tests look like for a while now, but have not had a chance to get feedback from other developers, so I’m interested what others think about my style.
  • I look forward to the further evolution of my style based on the feedback I might receive.