public function testInsertAndFindAll()
 {
     $id1 = (int) \Faker\Provider\Base::randomNumber(5);
     $faker = \Faker\Factory::create();
     $objectToInsert1 = new \test\data\Customer();
     $objectToInsert1->id = $id1;
     $objectToInsert1->name = $faker->name;
     $objectToInsert1->contacts = ['telephone1' => 123456, 'telephone2' => 345678, 'telephone3' => 345678];
     $objectToInsert1->prices = [1000000, 1000000, 1000000, 1000000];
     $objectToInsert1->kids = ['Alice', 'Billy', 'Charlie'];
     $this->assertTrue($objectToInsert1->save(false));
     $objectsFromFind = \test\data\Customer::findAll(['id' => [$id1]]);
     /* @var $objectFromFind data\Customer */
     $this->assertEquals(1, count($objectsFromFind));
     $id2 = (int) \Faker\Provider\Base::randomNumber(5);
     $objectToInsert2 = new \test\data\Customer();
     $objectToInsert2->id = $id2;
     $objectToInsert2->name = $faker->name;
     $objectToInsert2->contacts = ['telephone2' => 223456, 'telephone2' => 345678, 'telephone3' => 345678];
     $objectToInsert2->prices = [2000000, 2000000, 2000000, 2000000];
     $objectToInsert2->kids = ['Alice', 'Billy', 'Charlie'];
     $this->assertTrue($objectToInsert2->save(false));
     $objectsFromFind2 = \test\data\Customer::findAll(['id' => [$id1, $id2]]);
     /* @var $objectFromFind data\Customer */
     $this->assertEquals(2, count($objectsFromFind2));
     $this->assertTrue($objectsFromFind2[0]->id = $id1 || ($objectsFromFind2[0]->id = $id2));
 }
 public function testPagination()
 {
     $faker = \Faker\Factory::create();
     foreach (range(1, 50) as $id) {
         $model = new test\data\Customer(['id' => $id, 'name' => $faker->firstNameMale, 'age' => $id]);
         $model->save(false);
     }
     // Pagination using filter non key attribute would return less than
     // desired limit.
     $dataProvider1 = new ActiveDataProvider(['query' => test\data\Customer::find(), 'pagination' => ['pageSize' => 5]]);
     $this->assertCount(5, $dataProvider1->getModels());
     $pagination1 = $dataProvider1->getPagination();
     $this->assertNotNull($pagination1->getNextLastKey());
     // Pagination using filter non key attribute would return less than
     // desired limit.
     $dataProvider2 = new ActiveDataProvider(['query' => test\data\Customer::find(), 'pagination' => ['lastKey' => $pagination1->getNextLastKey(), 'pageSize' => 5]]);
     $this->assertCount(5, $dataProvider2->getModels());
 }