Beispiel #1
0
 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());
 }
Beispiel #2
0
 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());
 }