예제 #1
0
 public function testIfWillPopulateDocumentInstance()
 {
     $data = ['_class' => DocumentBaseAttributes::class, '_id' => new MongoId(), 'string' => 'Some new string value', 'int' => 15100900, 'float' => 455.34];
     $encoded = json_encode($data);
     $decoded = json_decode($encoded);
     $model = JsonArray::toModel($decoded);
     $this->assertInstanceOf(DocumentBaseAttributes::class, $model);
     unset($data['_class']);
     foreach ($data as $field => $value) {
         if ($field == '_id') {
             $this->assertSame((string) $value, (string) $model->_id);
             continue;
         }
         $this->assertSame($value, $model->{$field});
     }
 }
 /**
  * This is use case, where model is initialized from external JSON
  * And order of elements are changed in json.
  */
 public function testIfWillProperlyStoreI18NFieldsWhenChangedOrderFromExternalSource()
 {
     $langs = ['en', 'pl'];
     $model = new WithEmbeddedArrayI18NModel();
     // Attach single
     $one = new ModelWithI18N();
     $one->setLanguages($langs);
     $one->layout = 'new';
     $one->title = 'New York';
     $one->setLang('pl');
     $one->title = 'Nowy Jork';
     $one->setLang('en');
     $model->page = $one;
     // Attach first
     $m = new ModelWithI18N();
     $m->setLanguages($langs);
     $m->layout = 'new';
     $m->title = 'New York';
     $m->setLang('pl');
     $m->title = 'Nowy Jork';
     $m->setLang('en');
     $model->pages[] = $m;
     // Attach second
     $m = new ModelWithI18NSecond();
     $m->setLanguages($langs);
     $m->layout = 'new';
     $m->title = 'Prague';
     $m->setLang('pl');
     $m->title = 'Praga';
     $m->setLang('en');
     $model->pages[] = $m;
     // This are expected values
     $expectedData = RawArray::fromModel($model);
     $expectedData['pages'] = array_reverse($expectedData['pages']);
     // Now assume that external json data arrived
     $externalData = JsonArray::fromModel($model);
     $externalData['pages'] = array_reverse($externalData['pages']);
     $expectedModel = JsonArray::toModel($externalData, $model, $model);
     $comparator = new ModelComparator($this);
     $comparator->compare($expectedData, $expectedModel);
     $raw = RawArray::fromModel($expectedModel);
 }