/**
  * @param array $data
  *
  * @return void
  * @dataProvider getData
  */
 public function test_function(array $data)
 {
     // invoke logic
     $result = SimpleArrayLibrary::hasAllKeys($data['array'], $data['keys']);
     // test
     $this->assertEquals($data['expected'], $result);
 }
Example #2
0
 /**
  * @param array  $initialData
  * @param string $serverName
  * @param string $database
  * @param string $username
  * @param string $password
  * @param array  $dependencies
  *
  * @throws AlreadyInitializedException
  */
 public static function initMySQL(array $initialData, $serverName, $database, $username, $password, array $dependencies)
 {
     if (!static::$instance) {
         if (empty($serverName) || !is_string($serverName)) {
             throw new UnexpectedValueException('Invalid server name');
         }
         if (empty($database) || !is_string($database)) {
             throw new UnexpectedValueException('Invalid database name');
         }
         if (empty($username) || !is_string($username)) {
             throw new UnexpectedValueException('Invalid username');
         }
         if (!is_string($password)) {
             throw new UnexpectedValueException('Invalid password');
         }
         if (!SimpleArrayLibrary::isAssociative($initialData) && !empty($initialData)) {
             throw new UnexpectedValueException('Invalid table names');
         }
         static::$initialData = $initialData;
         static::initDependencyHandler($initialData, $dependencies);
         static::$instance->connection = new PDO('mysql:host=' . $serverName . ';dbname=' . $database, $username, $password);
         static::$instance->primaryKeys = [];
         foreach ($initialData as $table => $data) {
             $stmt = static::$instance->connection->prepare("SHOW KEYS FROM {$table} WHERE Key_name = 'PRIMARY'");
             $stmt->execute();
             static::$instance->primaryKeys[$table] = [];
             foreach ($stmt->fetchAll() as $row) {
                 static::$instance->primaryKeys[$table][] = $row['Column_name'];
             }
         }
         foreach (static::$instance->primaryKeys as $table => $keys) {
             foreach ($initialData[$table] as $row) {
                 if (!SimpleArrayLibrary::hasAllKeys($row, $keys)) {
                     throw new UnexpectedValueException('Missing keys in initial data for table: ' . $table);
                 }
             }
         }
         // edit $data array where needed
         static::$instance->update();
     } else {
         throw new AlreadyInitializedException('MySQL library already initialized');
     }
 }