Home > sfPhpunitHelperPlugin

sfPhpunitHelperPlugin

SfPhpunitHelperPlugin is a project mainly written in PHP, based on the MIT license.

The plugin adds helpers for selenium functional tests. It makes easy to test mails sent to gmail, admin generated pages

The plugin will provide a functionallity like shown bellow:

Helpers allow write test much as domain logic nor selenium commands.

Example 1:

class PublicationFunctionTestCase extends BaseSeleniumTestCase
  implements sfPhpunitFixturePropelAggregator
{
  public function testNewItem()
  {
    $this->backofficeHelper()
      ->loginAsSuperadmin()
      ->goPublications();

    $this->gridHelper()
      ->assertTotalRows(5)
      ->clickAtNewItem();

    $this->assertTextPresent('New Publication');

    $this->formHelper()
      ->type('publication', 'title', 'title_new')
      ->select('publication', 'published_from_month', 'July')
      ->select('publication', 'published_from_day', '01')
      ->select('publication', 'published_from_year', '2010')
      ->type('publication', 'author', 'test-author')
      ->type('publication', 'manager', 'test-manager')
      ->type('publication', 'publisher', 'test-publisher')
      ->type('publication', 'ISBN', '1234-4321-1234')
      ->type('publication', 'cover_file',
        $this->fixture()->getFileCommonAsRemote('publicationCover.gif'))

      ->clickAtSave()
      ->assertSavedSuccess();

    $this->assertTextPresent('Edit Publication');

    $this->formHelper()
      ->assertImageExist('publication', 'cover_file')
      ->clickAtCancel();

    $this->gridHelper()
      ->assertTotalRows(6)
      ->assertItemFieldValue(6, 'title', 'title_new')
      ->assertItemFieldValue(6, 'author', 'test-author');
  }
}

Example 2:

class AuthenticationTestCase extends FrontendBaseTestCase
{
  public function testVisitorCanRegisterAndBecomeAUser()
  {
    // selenium command to register user and asume that app send a mail to user gmail account.
    // then we can check that the mail was actually sent.

    $this->gmailHelper()
      ->open()
      ->loginNewUser()
      ->assertNewMail('admin mail', 'Please verify your account')
      ->clickAtMailWithSubject('glob:Please verify your account*');

    $this->assertTrue($this->isTextPresent("glob:Thanks for applying for an account with*To prevent abuse of the site, we require that you activate your account by clicking on the following link:"));

    $this->click('link=glob:*/confirm/'.$user->getProfile()->getValidate());

    // ... other actions
  }
}