123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- <?php
- /**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
- class ApiModelTest extends BaseTest
- {
- private $calendarData = '{
- "kind": "calendar#event",
- "etag": "\"-kteSF26GsdKQ5bfmcd4H3_-u3g/MTE0NTUyNTAxOTk0MjAwMA\"",
- "id": "1234566",
- "status": "confirmed",
- "htmlLink": "https://www.google.com/calendar/event?eid=N",
- "created": "2006-04-13T14:22:08.000Z",
- "updated": "2006-04-20T09:23:39.942Z",
- "summary": "Evening Jolt Q3 CTFL",
- "description": "6.30 - Adminning\n9.30 - Game",
- "creator": {
- "email": "ian@example.com",
- "displayName": "Ian Test",
- "self": true
- },
- "organizer": {
- "email": "ian@example.com",
- "displayName": "Ian Test",
- "self": true
- },
- "start": {
- "date": "2006-04-23"
- },
- "end": {
- "date": "2006-04-24"
- },
- "iCalUID": "5gi2ac493nnrfdfd7jhesafget8@google.com",
- "sequence": 0,
- "reminders": {
- "useDefault": false
- }
- }';
- public function testIntentionalNulls()
- {
- $data = json_decode($this->calendarData, true);
- $event = new Google_Service_Calendar_Event($data);
- $obj = json_decode(json_encode($event->toSimpleObject()), true);
- $this->assertArrayHasKey('date', $obj['start']);
- $this->assertArrayNotHasKey('dateTime', $obj['start']);
- $date = new Google_Service_Calendar_EventDateTime();
- $date->setDate(Google_Model::NULL_VALUE);
- $event->setStart($date);
- $obj = json_decode(json_encode($event->toSimpleObject()), true);
- $this->assertNull($obj['start']['date']);
- $this->assertArrayHasKey('date', $obj['start']);
- $this->assertArrayNotHasKey('dateTime', $obj['start']);
- }
- public function testModelMutation()
- {
- $data = json_decode($this->calendarData, true);
- $event = new Google_Service_Calendar_Event($data);
- $date = new Google_Service_Calendar_EventDateTime();
- date_default_timezone_set('UTC');
- $dateString = Date("c");
- $summary = "hello";
- $date->setDate($dateString);
- $event->setStart($date);
- $event->setEnd($date);
- $event->setSummary($summary);
- $simpleEvent = $event->toSimpleObject();
- $this->assertEquals($dateString, $simpleEvent->start->date);
- $this->assertEquals($dateString, $simpleEvent->end->date);
- $this->assertEquals($summary, $simpleEvent->summary);
- $event2 = new Google_Service_Calendar_Event();
- $this->assertNull($event2->getStart());
- }
- public function testVariantTypes()
- {
- $feature = new Google_Service_MapsEngine_Feature();
- $geometry = new Google_Service_MapsEngine_GeoJsonPoint();
- $geometry->setCoordinates(array(1, 0));
- $feature->setGeometry($geometry);
- $data = json_decode(json_encode($feature->toSimpleObject()), true);
- $this->assertEquals('Point', $data['geometry']['type']);
- $this->assertEquals(1, $data['geometry']['coordinates'][0]);
- }
- public function testOddMappingNames()
- {
- $creative = new Google_Service_AdExchangeBuyer_Creative();
- $creative->setAccountId('12345');
- $creative->setBuyerCreativeId('12345');
- $creative->setAdvertiserName('Hi');
- $creative->setHTMLSnippet("<p>Foo!</p>");
- $creative->setClickThroughUrl(array('http://somedomain.com'));
- $creative->setWidth(100);
- $creative->setHeight(100);
- $data = json_decode(json_encode($creative->toSimpleObject()), true);
- $this->assertEquals($data['HTMLSnippet'], "<p>Foo!</p>");
- $this->assertEquals($data['width'], 100);
- $this->assertEquals($data['height'], 100);
- $this->assertEquals($data['accountId'], "12345");
- }
- public function testJsonStructure()
- {
- $model = new Google_Model();
- $model->publicA = "This is a string";
- $model2 = new Google_Model();
- $model2->publicC = 12345;
- $model2->publicD = null;
- $model->publicB = $model2;
- $model3 = new Google_Model();
- $model3->publicE = 54321;
- $model3->publicF = null;
- $model->publicG = array($model3, "hello", false);
- $model->publicH = false;
- $model->publicI = 0;
- $string = json_encode($model->toSimpleObject());
- $data = json_decode($string, true);
- $this->assertEquals(12345, $data['publicB']['publicC']);
- $this->assertEquals("This is a string", $data['publicA']);
- $this->assertArrayNotHasKey("publicD", $data['publicB']);
- $this->assertArrayHasKey("publicE", $data['publicG'][0]);
- $this->assertArrayNotHasKey("publicF", $data['publicG'][0]);
- $this->assertEquals("hello", $data['publicG'][1]);
- $this->assertEquals(false, $data['publicG'][2]);
- $this->assertArrayNotHasKey("data", $data);
- $this->assertEquals(false, $data['publicH']);
- $this->assertEquals(0, $data['publicI']);
- }
- public function testIssetPropertyOnModel()
- {
- $model = new Google_Model();
- $model['foo'] = 'bar';
- $this->assertTrue(isset($model->foo));
- }
- public function testUnsetPropertyOnModel()
- {
- $model = new Google_Model();
- $model['foo'] = 'bar';
- unset($model->foo);
- $this->assertFalse(isset($model->foo));
- }
- public function testCollection()
- {
- $data = json_decode(
- '{
- "kind": "calendar#events",
- "id": "1234566",
- "etag": "abcdef",
- "totalItems": 4,
- "items": [
- {"id": 1},
- {"id": 2},
- {"id": 3},
- {"id": 4}
- ]
- }',
- true
- );
- $collection = new Google_Service_Calendar_Events($data);
- $this->assertEquals(4, count($collection));
- $count = 0;
- foreach ($collection as $col) {
- $count++;
- }
- $this->assertEquals(4, $count);
- $this->assertEquals(1, $collection[0]->id);
- }
- }
|