Пример #1
0
 public function testGetSet()
 {
     $this->createModels(Order::class, $array = []);
     $source = DataSource::make(Order::all());
     assertSame(null, $source[0]);
     assertSame(null, $source['0.code']);
     assertSame(null, $source['0.shipping']);
     $this->createModels(Order::class, $array = [['code' => 'a1', 'shipping' => 'home', 'customer_id' => 1], ['code' => 'b1', 'shipping' => 'office', 'customer_id' => 1]]);
     $this->createModels(Order::class, []);
     $source = DataSource::make(Order::all());
     $source->bindToModel(new Order());
     assertSame(null, $source[0]);
     $source['0.code'] = 'a1';
     $source['0.shipping'] = 'home';
     $source['0.customer_id'] = 1;
     assertInstanceOf(Model::class, $source[0]);
     assertSame('home', $source['0.shipping']);
     assertSame('a1', $source['0.code']);
     $source['1.code'] = 'b1';
     $source['1.shipping'] = 'office';
     $source['1.customer_id'] = 2;
     assertInstanceOf(Model::class, $source[1]);
     assertSame('b1', $source['1.code']);
     assertSame('office', $source['1.shipping']);
     $source->save();
     assertModelArrayEqual($source->toArray(), Order::all()->toArray());
     // will the update work?
     $source['0.code'] = 'a1x';
     $source['1.code'] = 'b1x';
     assertSame('a1x', $source['0.code']);
     assertSame('b1x', $source['1.code']);
     $source->save();
     assertModelArrayEqual($source->toArray(), Order::all()->toArray());
 }
Пример #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());
 }
Пример #3
0
 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());
 }
Пример #4
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());
 }