コード例 #1
0
ファイル: HasManyTest.php プロジェクト: tacone/datasource
 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());
 }
コード例 #2
0
 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;
 }
コード例 #3
0
 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());
 }