/**
  * @depends testCreateAndGetAutoresponderById
  */
 public function testGetAutoresponderByName()
 {
     $autoresponder = Autoresponder::getByName('Test Autoresponder subject 01');
     $this->assertEquals(1, count($autoresponder));
     $this->assertEquals('Test Autoresponder subject 01', $autoresponder[0]->subject);
 }
 /**
  * @depends testSuperUserCreateActionWithParameters
  */
 public function testSuperUserEditAction()
 {
     $autoresponderId = self::getModelIdByModelNameAndName('Autoresponder', 'Subject 04');
     $redirectUrl = 'http://www.zurmo.com/';
     $this->setGetArray(array('id' => $autoresponderId, 'redirectUrl' => $redirectUrl));
     $content = $this->runControllerWithNoExceptionsAndGetContent('autoresponders/default/edit');
     $this->assertContains('<div class="breadcrumbs">', $content);
     $this->assertContains('marketing/default/index">Marketing</a> &#47; <a href=', $content);
     $this->assertContains('marketingLists/default/list">Lists</a> &#47; <a href=', $content);
     $this->assertContains('marketingLists/default/details?id=' . static::$marketingListId . '">MarketingListName</a> &#47; <span>Subject 04</span></div>', $content);
     $this->assertContains('Subject 04', $content);
     $this->assertEquals(3, substr_count($content, 'Subject 04'));
     $this->assertContains('<span class="ellipsis-content">Subject 04</span>', $content);
     $this->assertContains('<label for="Autoresponder_operationType_value" class="required">' . 'Triggered By <span class="required">*</span></label>', $content);
     $this->assertContains('<label for="Autoresponder_fromOperationDurationInterval" class="required">' . 'Send After <span class="required">*</span></label>', $content);
     $this->assertContains('<label for="Autoresponder_subject" class="required">Subject ' . '<span class="required">*</span></label>', $content);
     $this->assertContains('<input id="ytAutoresponder_enableTracking" type="hidden" ' . 'value="0" name="Autoresponder[enableTracking]"', $content);
     $this->assertContains('<select name="Autoresponder[operationType]" ' . 'id="Autoresponder_operationType_value">', $content);
     $this->assertContains('<option value="1">Subscription to list</option>', $content);
     $this->assertContains('<option value="2" selected="selected">Unsubscribed from list</option>', $content);
     $this->assertContains('<input id="Autoresponder_subject" name="Autoresponder[subject]" ' . 'type="text" maxlength="255" value="Subject 04"', $content);
     $this->assertContains('<tr><th><label for="Autoresponder_contactEmailTemplateNames_name">Select a template</label></th>', $content);
     $this->assertContains('<td colspan="1"><div class="has-model-select"><input name=""' . ' id="Autoresponder_contactEmailTemplateNames_id"' . ' value="" type="hidden" />', $content);
     $this->assertContains('<div class="has-model-select">', $content);
     $this->assertContains('<input onblur="clearIdFromAutoCompleteField($(this).val(), &#039;' . 'Autoresponder_contactEmailTemplateNames_id&#039;);" id="Autoresponder_contact' . 'EmailTemplateNames_name" type="text" value="" ' . 'name="" />', $content);
     $this->assertContains('<a id="Autoresponder_contactEmailTemplateNames_SelectLink" href="#">' . '<span class="model-select-icon"></span><span class="z-spinner">' . '</span></a></div></td></tr>', $content);
     $this->assertContains('<a href="#tab1">Text Content</a>', $content);
     $this->assertContains('<a class="active-tab" href="#tab2">Html Content</a>', $content);
     $this->assertContains('class="simple-link" ' . 'href="#">MergeTag Guide</a>', $content);
     $this->assertContains('<textarea id="Autoresponder_textContent" ' . 'name="Autoresponder[textContent]" rows="6" cols="50"', $content);
     $this->assertContains('<textarea id="Autoresponder_htmlContent" ' . 'name="Autoresponder[htmlContent]"', $content);
     $this->assertContains('<label>Attachments</label>', $content);
     $this->assertContains('<strong class="add-label">Add Files</strong>', $content);
     $this->assertContains('<input id="Autoresponder_files" multiple="multiple" type="file" ' . 'name="Autoresponder_files"', $content);
     $this->assertContains('<span class="z-label">Cancel</span>', $content);
     $this->assertContains('<span class="z-label">Save</span>', $content);
     $this->assertContains('<span class="z-label">Delete</span>', $content);
     // modify everything:
     $this->setPostArray(array('Autoresponder' => array('operationType' => 1, 'fromOperationDurationInterval' => 60 * 60 * 24, 'fromOperationDurationType' => TimeDurationUtil::DURATION_TYPE_DAY, 'subject' => 'Subject 040', 'enableTracking' => 1, 'contactEmailTemplateNames' => '', 'textContent' => 'Text Content 040', 'htmlContent' => 'Html Content 040')));
     $resolvedRedirectUrl = $this->runControllerWithRedirectExceptionAndGetUrl('autoresponders/default/edit');
     $autoresponders = Autoresponder::getByName('Subject 040');
     $this->assertEquals(1, count($autoresponders));
     $this->assertTrue($autoresponders[0]->id > 0);
     $this->assertEquals(1, $autoresponders[0]->operationType);
     $this->assertEquals(60 * 60 * 24, $autoresponders[0]->fromOperationDurationInterval);
     $this->assertEquals(TimeDurationUtil::DURATION_TYPE_DAY, $autoresponders[0]->fromOperationDurationType);
     $this->assertEquals('Subject 040', $autoresponders[0]->subject);
     $this->assertEquals(1, $autoresponders[0]->enableTracking);
     $this->assertEquals('Text Content 040', $autoresponders[0]->textContent);
     $this->assertEquals('Html Content 040', $autoresponders[0]->htmlContent);
     $this->assertEquals($redirectUrl, $resolvedRedirectUrl);
     $autoresponders = Autoresponder::getAll();
     $this->assertEquals(3, count($autoresponders));
     // Now test same with file attachment
     $fileNames = array('testImage.png', 'testZip.zip', 'testPDF.pdf');
     $files = array();
     $filesIds = array();
     foreach ($fileNames as $index => $fileName) {
         $file = ZurmoTestHelper::createFileModel($fileName);
         $files[$index]['name'] = $fileName;
         $files[$index]['type'] = $file->type;
         $files[$index]['size'] = $file->size;
         $files[$index]['contents'] = $file->fileContent->content;
         $filesIds[] = $file->id;
     }
     $this->setPostArray(array('Autoresponder' => array('operationType' => 1, 'fromOperationDurationInterval' => 60 * 60 * 24, 'fromOperationDurationType' => TimeDurationUtil::DURATION_TYPE_DAY, 'subject' => 'Subject 040', 'enableTracking' => 1, 'contactEmailTemplateNames' => '', 'textContent' => 'Text Content 040', 'htmlContent' => 'Html Content 040'), 'filesIds' => $filesIds));
     $resolvedRedirectUrl = $this->runControllerWithRedirectExceptionAndGetUrl('autoresponders/default/edit');
     $autoresponders = Autoresponder::getByName('Subject 040');
     $this->assertEquals(1, count($autoresponders));
     $this->assertTrue($autoresponders[0]->id > 0);
     $this->assertEquals(1, $autoresponders[0]->operationType);
     $this->assertEquals(60 * 60 * 24, $autoresponders[0]->fromOperationDurationInterval);
     $this->assertEquals(TimeDurationUtil::DURATION_TYPE_DAY, $autoresponders[0]->fromOperationDurationType);
     $this->assertEquals('Subject 040', $autoresponders[0]->subject);
     $this->assertEquals(1, $autoresponders[0]->enableTracking);
     $this->assertEquals('Text Content 040', $autoresponders[0]->textContent);
     $this->assertEquals('Html Content 040', $autoresponders[0]->htmlContent);
     $this->assertEquals($redirectUrl, $resolvedRedirectUrl);
     $this->assertNotEmpty($autoresponders[0]->files);
     $this->assertCount(count($files), $autoresponders[0]->files);
     foreach ($files as $index => $file) {
         $this->assertEquals($files[$index]['name'], $autoresponders[0]->files[$index]->name);
         $this->assertEquals($files[$index]['type'], $autoresponders[0]->files[$index]->type);
         $this->assertEquals($files[$index]['size'], $autoresponders[0]->files[$index]->size);
         $this->assertEquals($files[$index]['contents'], $autoresponders[0]->files[$index]->fileContent->content);
     }
     $autoresponders = Autoresponder::getAll();
     $this->assertEquals(3, count($autoresponders));
 }
 /**
  * @depends testSuperUserCreateActionWithParameters
  */
 public function testSuperUserEditAction()
 {
     $autoresponderId = self::getModelIdByModelNameAndName('Autoresponder', 'Subject 04');
     $redirectUrl = 'http://www.zurmo.com/';
     $this->setGetArray(array('id' => $autoresponderId, 'redirectUrl' => $redirectUrl));
     $content = $this->runControllerWithNoExceptionsAndGetContent('autoresponders/default/edit');
     $this->assertTrue(strpos($content, '<div class="breadcrumbs">') !== false);
     $this->assertTrue(strpos($content, 'marketing/default/index">Marketing</a> &#47; <a href=') !== false);
     $this->assertTrue(strpos($content, 'marketingLists/default/list">Lists</a> &#47; <a href=') !== false);
     $this->assertTrue(strpos($content, 'marketingLists/default/details?id=' . static::$marketingListId . '">MarketingListName</a> &#47; <span>Subject 04</span></div>') !== false);
     $this->assertTrue(strpos($content, 'Subject 04') !== false);
     $this->assertEquals(3, substr_count($content, 'Subject 04'));
     $this->assertTrue(strpos($content, '<span class="ellipsis-content">Subject 04</span>') !== false);
     $this->assertTrue(strpos($content, '<label for="Autoresponder_operationType_value" class="required">' . 'Triggered By <span class="required">*</span></label>') !== false);
     $this->assertTrue(strpos($content, '<label for="Autoresponder_secondsFromOperation_value" class="required">' . 'Send After <span class="required">*</span></label>') !== false);
     $this->assertTrue(strpos($content, '<label for="Autoresponder_subject" class="required">Subject ' . '<span class="required">*</span></label>') !== false);
     $this->assertTrue(strpos($content, '<input id="ytAutoresponder_enableTracking" type="hidden" ' . 'value="0" name="Autoresponder[enableTracking]"') !== false);
     $this->assertTrue(strpos($content, '<select name="Autoresponder[operationType]" ' . 'id="Autoresponder_operationType_value">') !== false);
     $this->assertTrue(strpos($content, '<option value="1">Subscription to list</option>') !== false);
     $this->assertTrue(strpos($content, '<option value="2" selected="selected">Unsubscribed from list</option>') !== false);
     $this->assertTrue(strpos($content, '<select name="Autoresponder[secondsFromOperation]" ' . 'id="Autoresponder_secondsFromOperation_value">') !== false);
     $this->assertTrue(strpos($content, '<option value="3600">1 Hour</option>') !== false);
     $this->assertTrue(strpos($content, '<option value="14400" selected="selected">4 Hours</option>') !== false);
     $this->assertTrue(strpos($content, '<option value="28800">8 Hours</option>') !== false);
     $this->assertTrue(strpos($content, '<option value="43200">12 Hours</option>') !== false);
     $this->assertTrue(strpos($content, '<option value="86400">1 day</option>') !== false);
     $this->assertTrue(strpos($content, '<option value="259200">3 days</option>') !== false);
     $this->assertTrue(strpos($content, '<option value="345600">4 days</option>') !== false);
     $this->assertTrue(strpos($content, '<option value="432000">5 days</option>') !== false);
     $this->assertTrue(strpos($content, '<option value="864000">10 days</option>') !== false);
     $this->assertTrue(strpos($content, '<option value="604800">1 week</option>') !== false);
     $this->assertTrue(strpos($content, '<option value="1209600">2 weeks</option>') !== false);
     $this->assertTrue(strpos($content, '<option value="1814400">3 weeks</option>') !== false);
     $this->assertTrue(strpos($content, '<option value="2592000">1 month</option>') !== false);
     $this->assertTrue(strpos($content, '<option value="5184000">2 months</option>') !== false);
     $this->assertTrue(strpos($content, '<option value="7776000">3 months</option>') !== false);
     $this->assertTrue(strpos($content, '<option value="10368000">4 months</option>') !== false);
     $this->assertTrue(strpos($content, '<option value="12960000">5 months</option>') !== false);
     $this->assertTrue(strpos($content, '<option value="15552000">6 months</option>') !== false);
     $this->assertTrue(strpos($content, '<option value="31104000">1 year</option>') !== false);
     $this->assertTrue(strpos($content, '<input id="Autoresponder_subject" name="Autoresponder[subject]" ' . 'type="text" maxlength="64" value="Subject 04"') !== false);
     $this->assertTrue(strpos($content, '<select name="Autoresponder[contactEmailTemplateNames]" ' . 'id="Autoresponder_contactEmailTemplateNames_value">') !== false);
     $this->assertTrue(strpos($content, '<option value="">Select a template</option>') !== false);
     $this->assertTrue(strpos($content, '>EmailTemplate 01</option>') !== false);
     $this->assertTrue(strpos($content, '>EmailTemplate 02</option>') !== false);
     $this->assertTrue(strpos($content, '>EmailTemplate 03</option>') !== false);
     $this->assertTrue(strpos($content, '>EmailTemplate 04</option>') !== false);
     $this->assertTrue(strpos($content, '<a class="active-tab" href="#tab1">Text Content</a>') !== false);
     $this->assertTrue(strpos($content, '<a href="#tab2">Html Content</a>') !== false);
     $this->assertTrue(strpos($content, '<a id="mergetag-guide" class="simple-link" ' . 'href="#">MergeTag Guide</a>') !== false);
     $this->assertTrue(strpos($content, '<textarea id="Autoresponder_textContent" ' . 'name="Autoresponder[textContent]" rows="6" cols="50"') !== false);
     $this->assertTrue(strpos($content, "<textarea id='Autoresponder_htmlContent' " . "name='Autoresponder[htmlContent]'") !== false);
     $this->assertTrue(strpos($content, '<label>Attachments</label>') !== false);
     $this->assertTrue(strpos($content, '<strong class="add-label">Add Files</strong>') !== false);
     $this->assertTrue(strpos($content, '<input id="Autoresponder_files" type="file" ' . 'name="Autoresponder_files"') !== false);
     $this->assertTrue(strpos($content, '<span class="z-label">Cancel</span>') !== false);
     $this->assertTrue(strpos($content, '<span class="z-label">Save</span>') !== false);
     $this->assertTrue(strpos($content, '<span class="z-label">Delete</span>') !== false);
     // modify everything:
     $this->setPostArray(array('Autoresponder' => array('operationType' => 1, 'secondsFromOperation' => 60 * 60 * 24, 'subject' => 'Subject 040', 'enableTracking' => 1, 'contactEmailTemplateNames' => '', 'textContent' => 'Text Content 040', 'htmlContent' => 'Html Content 040')));
     $resolvedRedirectUrl = $this->runControllerWithRedirectExceptionAndGetUrl('autoresponders/default/edit');
     $autoresponders = Autoresponder::getByName('Subject 040');
     $this->assertEquals(1, count($autoresponders));
     $this->assertTrue($autoresponders[0]->id > 0);
     $this->assertEquals(1, $autoresponders[0]->operationType);
     $this->assertEquals(60 * 60 * 24, $autoresponders[0]->secondsFromOperation);
     $this->assertEquals('Subject 040', $autoresponders[0]->subject);
     $this->assertEquals(1, $autoresponders[0]->enableTracking);
     $this->assertEquals('Text Content 040', $autoresponders[0]->textContent);
     $this->assertEquals('Html Content 040', $autoresponders[0]->htmlContent);
     $this->assertEquals($redirectUrl, $resolvedRedirectUrl);
     $autoresponders = Autoresponder::getAll();
     $this->assertEquals(3, count($autoresponders));
     // Now test same with file attachment
     $fileNames = array('testImage.png', 'testZip.zip', 'testPDF.pdf');
     $files = array();
     $filesIds = array();
     foreach ($fileNames as $index => $fileName) {
         $file = ZurmoTestHelper::createFileModel($fileName);
         $files[$index]['name'] = $fileName;
         $files[$index]['type'] = $file->type;
         $files[$index]['size'] = $file->size;
         $files[$index]['contents'] = $file->fileContent->content;
         $filesIds[] = $file->id;
     }
     $this->setPostArray(array('Autoresponder' => array('operationType' => 1, 'secondsFromOperation' => 60 * 60 * 24, 'subject' => 'Subject 040', 'enableTracking' => 1, 'contactEmailTemplateNames' => '', 'textContent' => 'Text Content 040', 'htmlContent' => 'Html Content 040'), 'filesIds' => $filesIds));
     $resolvedRedirectUrl = $this->runControllerWithRedirectExceptionAndGetUrl('autoresponders/default/edit');
     $autoresponders = Autoresponder::getByName('Subject 040');
     $this->assertEquals(1, count($autoresponders));
     $this->assertTrue($autoresponders[0]->id > 0);
     $this->assertEquals(1, $autoresponders[0]->operationType);
     $this->assertEquals(60 * 60 * 24, $autoresponders[0]->secondsFromOperation);
     $this->assertEquals('Subject 040', $autoresponders[0]->subject);
     $this->assertEquals(1, $autoresponders[0]->enableTracking);
     $this->assertEquals('Text Content 040', $autoresponders[0]->textContent);
     $this->assertEquals('Html Content 040', $autoresponders[0]->htmlContent);
     $this->assertEquals($redirectUrl, $resolvedRedirectUrl);
     $this->assertNotEmpty($autoresponders[0]->files);
     $this->assertCount(count($files), $autoresponders[0]->files);
     foreach ($files as $index => $file) {
         $this->assertEquals($files[$index]['name'], $autoresponders[0]->files[$index]->name);
         $this->assertEquals($files[$index]['type'], $autoresponders[0]->files[$index]->type);
         $this->assertEquals($files[$index]['size'], $autoresponders[0]->files[$index]->size);
         $this->assertEquals($files[$index]['contents'], $autoresponders[0]->files[$index]->fileContent->content);
     }
     $autoresponders = Autoresponder::getAll();
     $this->assertEquals(3, count($autoresponders));
 }