/** * @depends testCreateAndGetAutoresponderItemActivityById */ public function testRequiredAttributes() { $autoresponderItemActivity = new AutoresponderItemActivity(); $this->assertFalse($autoresponderItemActivity->save()); $errors = $autoresponderItemActivity->getErrors(); $this->assertNotEmpty($errors); $this->assertCount(2, $errors); $this->assertArrayHasKey('type', $errors); $this->assertEquals('Type cannot be blank.', $errors['type'][0]); $this->assertArrayHasKey('quantity', $errors); $this->assertEquals('Quantity cannot be blank.', $errors['quantity'][0]); $autoresponderItemActivity->type = AutoresponderItemActivity::TYPE_CLICK; $autoresponderItemActivity->quantity = 5; $emailMessageUrl = new EmailMessageUrl(); $emailMessageUrl->url = 'http://www.example.com'; $autoresponderItemActivity->emailMessageUrl = $emailMessageUrl; $autoresponderItemActivity->latestSourceIP = '12.13.14.15'; $this->assertTrue($autoresponderItemActivity->save()); $id = $autoresponderItemActivity->id; unset($autoresponderItemActivity); $autoresponderItemActivity = AutoresponderItemActivity::getById($id); $this->assertEquals(AutoresponderItemActivity::TYPE_CLICK, $autoresponderItemActivity->type); $this->assertEquals(5, $autoresponderItemActivity->quantity); $this->assertEquals('12.13.14.15', $autoresponderItemActivity->latestSourceIP); $this->assertEquals('http://www.example.com', $autoresponderItemActivity->emailMessageUrl->url); }
/** * @depends testCreateAndGetAutoresponderById */ public function testDeleteAutoresponder() { $autoresponders = Autoresponder::getAll(); $this->assertCount(7, $autoresponders); $autoresponderId = $autoresponders[0]->id; $processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $contact = ContactTestHelper::createContactByNameForOwner('autoresponderContact', Yii::app()->user->userModel); $saved = AutoresponderItem::addNewItem(0, $processDateTime, $contact, $autoresponders[0]); $this->assertTrue($saved); $autoresponderItems = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponderId); //print_r($autoresponderItems[0]->id); $this->assertNotEmpty($autoresponderItems); $this->assertCount(1, $autoresponderItems); $autoresponderItemActivity = new AutoresponderItemActivity(); $autoresponderItemActivity->type = AutoresponderItemActivity::TYPE_OPEN; $autoresponderItemActivity->quantity = 10; $autoresponderItemActivity->latestSourceIP = '10.11.12.13'; $autoresponderItemActivity->autoresponderItem = $autoresponderItems[0]; $this->assertTrue($autoresponderItemActivity->save()); //print_r($autoresponderItemActivity->id); $autoresponderItemActivities = AutoresponderItemActivity::getAll(); $this->assertCount(1, $autoresponderItemActivities); $autoresponders[0]->delete(); $autoresponders = Autoresponder::getAll(); $this->assertEquals(6, count($autoresponders)); $autoresponderitems = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponderId); $this->assertEquals(0, count($autoresponderitems)); $autoresponderItemActivities = AutoresponderItemActivity::getAll(); $this->assertCount(0, $autoresponderItemActivities); }
/** * @depends testResolveQueryStringFromUrlAndCreateOrUpdateActivityThrowsExceptionForInvalidPersonIdForUrlClickTracking * @expectedException NotSupportedException */ public function testResolveQueryStringFromUrlAndCreateOrUpdateActivityThrowsExceptionForDuplicateActivityForUrlClickTracking() { // setup pre-req data $autoresponderItemActivities = AutoresponderItemActivity::getByType(AutoresponderItemActivity::TYPE_CLICK); $this->assertNotEmpty($autoresponderItemActivities); $autoresponderActivity = new AutoresponderItemActivity(); $autoresponderActivity->quantity = $autoresponderItemActivities[0]->quantity; $autoresponderActivity->type = $autoresponderItemActivities[0]->type; $autoresponderActivity->autoresponderItem = $autoresponderItemActivities[0]->autoresponderItem; $autoresponderActivity->person = $autoresponderItemActivities[0]->person; $autoresponderActivity->emailMessageUrl = $autoresponderItemActivities[0]->emailMessageUrl; $this->assertTrue($autoresponderActivity->save()); $modelId = $autoresponderItemActivities[0]->autoresponderItem->id; $modelType = get_class($autoresponderItemActivities[0]->autoresponderItem); $personId = $autoresponderItemActivities[0]->person->id; // get the modelClassName to use for activity object tests $className = 'AutoresponderItemActivityUtil'; $resolveModelClassNameByModelTypeFunction = static::getProtectedMethod($className, 'resolveModelClassNameByModelType'); $modelClassName = $resolveModelClassNameByModelTypeFunction->invokeArgs(null, array($modelType)); $type = $modelClassName::TYPE_CLICK; $existingActivities = $modelClassName::getByType($type); $this->assertCount(2, $existingActivities); // get base query string $resolveBaseQueryStringArrayFunction = static::getProtectedMethod('ContentTrackingUtil', 'resolveBaseQueryStringArray'); $queryStringArray = $resolveBaseQueryStringArrayFunction->invokeArgs(null, array($modelId, $modelType, $personId)); $this->assertNotEmpty($queryStringArray); $this->assertCount(3, $queryStringArray); $this->assertArrayHasKey('modelId', $queryStringArray); $this->assertArrayHasKey('modelType', $queryStringArray); $this->assertArrayHasKey('personId', $queryStringArray); $queryStringArray['url'] = 'http://www.zurmo.com'; // get hash for query string and ensure its what we expect it to be. $queryStringArrayHash = StringUtil::resolveHashForQueryStringArray($queryStringArray); $queryStringArrayDecoded = $className::resolveQueryStringArrayForHash($queryStringArrayHash); $this->assertNotEmpty($queryStringArrayDecoded); $this->assertCount(5, $queryStringArrayDecoded); $this->assertArrayHasKey('modelId', $queryStringArrayDecoded); $this->assertArrayHasKey('modelType', $queryStringArrayDecoded); $this->assertArrayHasKey('personId', $queryStringArrayDecoded); $this->assertArrayHasKey('url', $queryStringArrayDecoded); $this->assertArrayHasKey('type', $queryStringArrayDecoded); $this->assertEquals($queryStringArray['modelId'], $queryStringArrayDecoded['modelId']); $this->assertEquals($queryStringArray['modelType'], $queryStringArrayDecoded['modelType']); $this->assertEquals($queryStringArray['personId'], $queryStringArrayDecoded['personId']); $this->assertEquals($queryStringArray['url'], $queryStringArrayDecoded['url']); $this->assertNull($queryStringArrayDecoded['type']); // do the magic, confirm magic worked by checking return value. $_GET['id'] = $queryStringArrayHash; $result = $className::resolveQueryStringFromUrlAndCreateOrUpdateActivity(); }
/** * @depends testCreateAndGetAutoresponderItemById */ public function testDeleteAutoresponderItem() { $autoresponderItems = AutoresponderItem::getAll(); $this->assertCount(37, $autoresponderItems); $autoresponderItemActivity = new AutoresponderItemActivity(); $autoresponderItemActivity->type = AutoresponderItemActivity::TYPE_OPEN; $autoresponderItemActivity->quantity = 10; $autoresponderItemActivity->latestSourceIP = '10.11.12.13'; $autoresponderItemActivity->autoresponderItem = $autoresponderItems[0]; $this->assertTrue($autoresponderItemActivity->save()); $autoresponderItemActivities = AutoresponderItemActivity::getAll(); $this->assertCount(1, $autoresponderItemActivities); $autoresponderItems[0]->delete(); $autoresponderItems = AutoresponderItem::getAll(); $this->assertEquals(36, count($autoresponderItems)); $autoresponderItemActivities = AutoresponderItemActivity::getAll(); $this->assertCount(0, $autoresponderItemActivities); }