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 testUnset() { $this->createModels(Order::class, $array = [['code' => 'a1', 'shipping' => 'home', 'customer_id' => 1], ['code' => 'b1', 'shipping' => 'office', 'customer_id' => 1]]); $collection = Order::all(); $source = DataSource::make($collection); assertInstanceOf(Order::class, $source[0]); assertInstanceOf(Order::class, $source[1]); assertInstanceOf(Order::class, $collection[0]); assertInstanceOf(Order::class, $collection[1]); unset($source[0]); assertNull($source[0]); assertInstanceOf(Order::class, $source[1]); assertTrue(!isset($collection[0])); assertInstanceOf(Order::class, $collection[1]); unset($source[1]); assertNull($source[1]); assertTrue(!isset($collection[1])); }
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()); }