public function testUpdateChildren() { // --- test load $this->createModels(Customer::class, [['name' => 'Frankx', 'surname' => 'Sinatrax']]); $this->createModels(Order::class, [['code' => 'a1x', 'shipping' => 'homex', 'customer_id' => 1], ['code' => 'b1x', 'shipping' => 'officex', 'customer_id' => 1]]); $source = DataSource::make(Customer::find(1)); $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(); assertEquals(1, $source['orders.0.customer_id']); assertEquals(1, $source['orders.1.customer_id']); 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 testHasOne() { $customer = new Customer(); $source = DataSource::make($customer); $source['name'] = 'Frank'; $source['surname'] = 'Sinatra'; $source['details.biography'] = 'A nice life!'; $source['details.accepts_cookies'] = 0; $source['details.accepts_cookies'] = 0; // test cache assertSame('Frank', $source['name']); assertSame('A nice life!', $source['details.biography']); assertSame(0, $source['details.accepts_cookies']); $source->save(); assertSame(1, Customer::all()->count()); assertSame(1, CustomerDetail::all()->count()); // test everything's saved $result = Customer::all()->first(); assertSame('A nice life!', $result->details->biography); assertEquals(0, $result->details->accepts_cookies); // test we don't create duplicates $source['surname'] = 'Sinatrax'; $source['details.biography'] = 'prefers not say'; $source['details.accepts_cookies'] = 1; assertSame(1, Customer::all()->count()); assertSame(1, CustomerDetail::all()->count()); return; }
public function testCreateChildren() { $this->createModels(CustomerDetail::class, []); $this->createModels(Customer::class, []); $source = DataSource::make(new CustomerDetail()); $source['id'] = 1; $source['biography'] = 'A nice life!'; $source['accepts_cookies'] = 0; $source['customer.name'] = 'Frank'; $source['customer.surname'] = 'Sinatra'; $source->save(); assertModelArrayEqual([['customer_id' => '1', 'biography' => 'A nice life!', 'accepts_cookies' => '0', 'customer' => ['id' => '1', 'name' => 'Frank', 'surname' => 'Sinatra']]], CustomerDetail::with('customer')->get()->toArray()); assertModelArrayEqual([['name' => 'Frank', 'surname' => 'Sinatra']], Customer::all()->toArray()); // repeat $source->save(); assertModelArrayEqual([['customer_id' => '1', 'biography' => 'A nice life!', 'accepts_cookies' => '0', 'customer' => ['id' => '1', 'name' => 'Frank', 'surname' => 'Sinatra']]], CustomerDetail::with('customer')->get()->toArray()); assertModelArrayEqual([['name' => 'Frank', 'surname' => 'Sinatra']], Customer::all()->toArray()); }