/** * test #14. * Overriding automatic attributes using a future date. Because * a future date is used, the record can no longer be changed after * it was saved. * @depends testSaveEmptyObject * @depends testSetAttributes * @depends testUpdate * @depends testOverrideAutomaticAttributesNewRecord */ public function testOverrideAutomaticAttributesFutureDate() { global $testTripId1, $testJournalId1, $testUserId1; global $testUserId2; // Create the object, which automatically gets the current date $object = new Journal($testTripId1, $testJournalId1); $object->setUserId($testUserId1); $object->setJournalDate('2015-09-30'); $object->setJournalTitle('Journal Title'); $object->setJournalText('journal text'); $object->setDeleted('Y'); $this->assertTrue($object->save()); $this->assertEquals(1, $this->countTestRows()); $originalCreated = $object->getCreated(); $originalUpdated = $object->getUpdated(); $originalHash = $object->getHash(); // Change the object with different values, using a guaranteed // future date for the Created and Updated fields. Note that // the mySQL timestamp values allow for dates up to January 19, // 2038. Select as the future date for this test January 18, 2038 // values after first save are unchanged $object->setCreated('2038-01-18 10:10:10.000000'); $object->setUpdated('2038-01-18 10:10:11.000000'); $object->setUserId($testUserId2); $object->setJournalDate('2015-10-01'); $object->setJournalTitle('Journal Title 2'); $object->setJournalText('journal text 2'); $object->setDeleted('N'); $object->setHash('future date hash'); // Check the values before saving $this->assertEquals($testTripId1, $object->getTripId()); $this->assertEquals($testJournalId1, $object->getJournalId()); $this->assertEquals('2038-01-18 10:10:10.000000', $object->getCreated()); $this->assertEquals('2038-01-18 10:10:11.000000', $object->getUpdated()); $this->assertEquals($testUserId2, $object->getUserId()); $this->assertEquals('2015-10-01', $object->getJournalDate()); $this->assertEquals('Journal Title 2', $object->getJournalTitle()); $this->assertEquals('journal text 2', $object->getJournalText()); $this->assertEquals('N', $object->getDeleted()); $this->assertEquals('future date hash', $object->getHash()); // update the record, this adds a row in the database $this->assertTrue($object->save()); $this->assertEquals(2, $this->countTestRows()); // after the update, the information has been saved $this->assertEquals($testTripId1, $object->getTripId()); $this->assertEquals($testJournalId1, $object->getJournalId()); $this->assertEquals('2038-01-18 10:10:10.000000', $object->getCreated()); $this->assertEquals('2038-01-18 10:10:11.000000', $object->getUpdated()); $this->assertEquals($testUserId2, $object->getUserId()); $this->assertEquals('2015-10-01', $object->getJournalDate()); $this->assertEquals('Journal Title 2', $object->getJournalTitle()); $this->assertEquals('journal text 2', $object->getJournalText()); $this->assertEquals('N', $object->getDeleted()); $this->assertEquals('future date hash', $object->getHash()); // Try to update the record. This will add a row in the database $object->setJournalDate('2015-10-02'); $object->setUserId($testUserId1); $object->setJournalTitle('Journal Title 3'); $object->setJournalText('journal text 3'); $object->setDeleted('Y'); $this->assertTrue($object->save()); $this->assertEquals(3, $this->countTestRows()); // but the new information is not saved. The previously saved // information cannot be overwritten without manually setting the // updated field. $this->assertEquals($testTripId1, $object->getTripId()); $this->assertEquals($testJournalId1, $object->getJournalId()); $this->assertEquals('2038-01-18 10:10:10.000000', $object->getCreated()); $this->assertEquals('2038-01-18 10:10:11.000000', $object->getUpdated()); $this->assertEquals($testUserId2, $object->getUserId()); $this->assertEquals('2015-10-01', $object->getJournalDate()); $this->assertEquals('Journal Title 2', $object->getJournalTitle()); $this->assertEquals('journal text 2', $object->getJournalText()); $this->assertEquals('N', $object->getDeleted()); // Note: this will FAIL in the current implementation! //$this->assertEquals('future date hash', $object->getHash()); }
/** * Test #9. PUT request update existing object. * @depends testPutCreate */ public function testUpdateJournal() { global $testTripId1; global $testJournalId1; $object = new Journal($testTripId1, $testJournalId1); $object->setUserId("user"); $object->setJournalDate("2015-09-30"); $object->setJournalTitle("Journal Title"); $object->setJournalText("Journal Text"); $object->setDeleted('N'); $object->save(); $this->assertEquals(1, $this->countTestRows()); $data = array('tripId' => $testTripId1, 'journalId' => $testJournalId1, 'created' => '2015-10-01', 'updated' => '2015-10-02', 'userId' => 'user-2', 'journalDate' => '2015-10-01', 'journalTitle' => 'Journal Title 2', 'journalText' => 'Journal Text 2', 'deleted' => 'Y', 'hash' => 'forced hash'); $result = putApi('putJournal.php', $data); $this->assertEquals(RESPONSE_SUCCESS, $result['resultCode']); $this->assertEquals(2, $this->countTestRows()); $object = new Journal($testTripId1, $testJournalId1); $this->assertEquals($testTripId1, $object->getTripId()); $this->assertEquals($testJournalId1, $object->getJournalId()); $this->assertEquals('user-2', $object->getUserId()); $this->assertEquals('2015-10-01', $object->getJournalDate()); $this->assertEquals('Journal Title 2', $object->getJournalTitle()); $this->assertEquals('Journal Text 2', $object->getJournalText()); $this->assertEquals('Y', $object->getDeleted()); }
if (isset($_GET['tripId'])) { $tripId = $_GET['tripId']; } $journalId = ''; if (isset($_GET['journalId'])) { $journalId = $_GET['journalId']; } if ($tripId === '' || $journalId === '') { $response = errorResponse(RESPONSE_BAD_REQUEST); } else { $object = new Journal($tripId, $journalId); if ($object->getCreated() === null) { $response = errorResponse(RESPONSE_NOT_FOUND); } else { $response = successResponse(); $response['tripId'] = $object->getTripId(); $response['journalId'] = $object->getJournalId(); $response['created'] = $object->getCreated(); $response['updated'] = $object->getUpdated(); $response['userId'] = $object->getUserId(); $response['journalDate'] = $object->getJournalDate(); $response['journalTitle'] = $object->getJournalTitle(); $response['journalText'] = $object->getJournalText(); $response['deleted'] = $object->getDeleted(); if ($temp = $object->getPreviousJournal()) { $response['prevId'] = $temp->getJournalId(); } if ($temp = $object->getNextJournal()) { $response['nextId'] = $temp->getJournalId(); } }