public function testExistingChildren() { // --- test load $this->createModels(CustomerDetail::class, []); $this->createModels(Customer::class, [['name' => 'Frank', 'surname' => 'Sinatra']]); $details = new CustomerDetail(); $source = Datasource::make(new CustomerDetail()); $source['id'] = 1; $source['biography'] = 'A nice life!'; $source['accepts_cookies'] = 0; $source['customer_id'] = 1; $details->id = 1; $details->biography = 'A nice life!'; $details->accepts_cookies = 0; $details->customer_id = 1; $source->save(); assertTrue(isset($source['customer'])); assertInstanceOf(Customer::class, $source['customer']); assertModelArrayEqual(Customer::all()->toArray(), [$source['customer']->toArray()]); // compare with how eloquent behaves: $this->createModels(CustomerDetail::class, []); $details->save(); assertFalse(isset($details->customer)); // always false! assertInstanceOf(Customer::class, $details->customer); }
public function testCreateChildren() { $this->createModels(Customer::class, []); $this->createModels(Order::class, []); // test creation $customer = new Customer(); $source = Datasource::make($customer); $source['name'] = 'Frank'; $source['surname'] = 'Sinatra'; $source['orders.0.code'] = 'a1'; $source['orders.0.shipping'] = 'home'; $source['orders.1.code'] = 'b1'; $source['orders.1.shipping'] = 'office'; $source->save(); assertModelArrayEqual([['name' => 'Frank', 'surname' => 'Sinatra']], Customer::all()->toArray()); assertModelArrayEqual([['code' => 'a1', 'shipping' => 'home', 'customer_id' => 1], ['code' => 'b1', 'shipping' => 'office', 'customer_id' => 1]], Order::all()->toArray()); }
public function testCreateChildren() { $this->createModels(Order::class, []); $this->createModels(Book::class, []); // test creation $order = new Order(); $source = Datasource::make($order); $source['code'] = 'a1'; $source['shipping'] = 'home'; $source['customer_id'] = '1'; $source['books.0.title'] = 'Happiness'; $source['books.1.title'] = 'Delight'; $source->save(); assertModelArrayEqual([['code' => 'a1', 'shipping' => 'home', 'customer_id' => 1]], Order::all()->toArray()); assertModelArrayEqual([['title' => 'Happiness'], ['title' => 'Delight']], Book::all()->toArray()); // repeat $source->save(); assertModelArrayEqual([['code' => 'a1', 'shipping' => 'home', 'customer_id' => 1]], Order::all()->toArray()); assertModelArrayEqual([['title' => 'Happiness'], ['title' => 'Delight']], Book::all()->toArray()); }