Author: Thierry Francois @colymba thierry@colymba.com
Inheritance: extends DataObject
 public function generateDBEntries()
 {
     $peter = ApiTest_Author::create(array('Name' => 'Peter', 'IsMan' => true));
     $marie = ApiTest_Author::create(array('Name' => 'Marie', 'IsMan' => false));
     $bible = ApiTest_Book::create(array('Title' => 'The Bible', 'Pages' => 2000));
     $kamasutra = ApiTest_Book::create(array('Title' => 'Kama Sutra', 'Pages' => 1000));
     $helsinki = ApiTest_Library::create(array('Name' => 'Helsinki'));
     $paris = ApiTest_Library::create(array('Name' => 'Paris'));
     // write to DB
     $peter->write();
     $marie->write();
     $bible->write();
     $kamasutra->write();
     $helsinki->write();
     $paris->write();
     // relations
     $peter->Books()->add($bible);
     $marie->Books()->add($kamasutra);
     $helsinki->Books()->add($bible);
     $helsinki->Books()->add($kamasutra);
     $paris->Books()->add($kamasutra);
     // since it doesn't seem to be called automatically
     $ext = new RESTfulAPI_GroupExtension();
     $ext->requireDefaultRecords();
 }
 /**
  * Checks sideloading records config
  */
 public function testSideloadedRecords()
 {
     Config::inst()->update('RESTfulAPI_EmberDataSerializer', 'sideloaded_records', array('ApiTest_Library' => array('Books')));
     Config::inst()->update('ApiTest_Book', 'api_access', true);
     $serializer = $this->getSerializer();
     $dataObject = ApiTest_Library::get()->filter(array('Name' => 'Helsinki'))->first();
     $jsonString = $serializer->serialize($dataObject);
     $jsonObject = json_decode($jsonString);
     $booksRoot = $serializer->formatName('ApiTest_Book');
     $booksRoot = Inflector::pluralize($booksRoot);
     $this->assertFalse(is_null($jsonObject->{$booksRoot}), "EmberData Serialize should sideload records in an object in JSON root");
     $this->assertTrue(is_array($jsonObject->{$booksRoot}), "EmberData Serialize should sideload records as array");
 }
 /**
  * Checks embedded records config
  */
 public function testEmbeddedRecords()
 {
     Config::inst()->update('RESTfulAPI', 'access_control_policy', 'ACL_CHECK_CONFIG_ONLY');
     Config::inst()->update('ApiTest_Library', 'api_access', true);
     Config::inst()->update('RESTfulAPI', 'embedded_records', array('ApiTest_Library' => array('Books')));
     $serializer = $this->getSerializer();
     $dataObject = ApiTest_Library::get()->filter(array('Name' => 'Helsinki'))->first();
     // api access disabled
     Config::inst()->update('ApiTest_Book', 'api_access', false);
     $result = $serializer->serialize($dataObject);
     $result = json_decode($result);
     $this->assertEmpty($result->Books, 'Basic Serialize should return empty array for DataObject without permission');
     // api access enabled
     Config::inst()->update('ApiTest_Book', 'api_access', true);
     $result = $serializer->serialize($dataObject);
     $result = json_decode($result);
     $this->assertTrue(is_numeric($result->Books[0]->ID), "Basic Serialize should return a full record for embedded records");
 }