public function testUpdateChildren() { $this->createModels(Customer::class, [['name' => 'Frankx', 'surname' => 'Sinatrax']]); $this->createModels(CustomerDetail::class, [['biography' => 'A nice life!x', 'accepts_cookies' => 1, 'customer_id' => 1]]); $source = DataSource::make(Customer::find(1)); $source['id'] = 1; $source['name'] = 'Frank'; $source['surname'] = 'Sinatra'; $source['details.biography'] = 'A nice life!'; $source['details.accepts_cookies'] = 0; $source->save(); assertModelArrayEqual([['name' => 'Frank', 'surname' => 'Sinatra', 'details' => ['id' => '1', 'customer_id' => '1', 'biography' => 'A nice life!', 'accepts_cookies' => '0']]], Customer::with('details')->get()->toArray()); assertModelArrayEqual([['name' => 'Frank', 'surname' => 'Sinatra']], Customer::all()->toArray()); // repeat $source->save(); assertModelArrayEqual([['name' => 'Frank', 'surname' => 'Sinatra', 'details' => ['id' => '1', 'customer_id' => '1', 'biography' => 'A nice life!', 'accepts_cookies' => '0']]], Customer::with('details')->get()->toArray()); assertModelArrayEqual([['biography' => 'A nice life!', 'accepts_cookies' => 0, 'customer_id' => 1]], CustomerDetail::all()->toArray()); }
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 testGetSet() { $customer = new Customer(); $customer->name = 'Frank'; $customer->surname = 'Sinatra'; $source = DataSource::make($customer); assertSame('Frank', $customer->name); assertSame('Frank Sinatra', $customer->full_name); assertSame('Frank', $source['name']); assertSame('Frank Sinatra', $source['full_name']); $customer = new Customer(); $source = DataSource::make($customer); $source['name'] = 'Frank'; $source['surname'] = 'Sinatra'; assertSame('Frank', $customer->name); assertSame('Frank Sinatra', $customer->full_name); assertSame('Frank', $source['name']); assertSame('Frank Sinatra', $source['full_name']); $source->save(); assertSame(1, Customer::all()->count()); // now let's check if the update works $source['name'] = 'Jake'; assertSame('Jake', $source['name']); $source->save(); assertSame(1, Customer::all()->count()); assertSame('Jake', Customer::find($source['id'])->name); // again, and to test cache collisions $customer = new Customer(); $source = DataSource::make($customer); $source['name'] = 'Brandon'; $source['surname'] = 'Lee'; assertSame('Brandon', $customer->name); assertSame('Brandon Lee', $customer->full_name); assertSame('Brandon', $source['name']); assertSame('Brandon Lee', $source['full_name']); $source->save(); assertSame(2, Customer::all()->count()); }