Esempio n. 1
0
 /**
  * Imports a payload.
  *
  * @param WordPress_GitHub_Sync_Payload $payload GitHub payload object.
  *
  * @return string|WP_Error
  */
 public function payload(WordPress_GitHub_Sync_Payload $payload)
 {
     /**
      * Whether there's an error during import.
      *
      * @var false|WP_Error $error
      */
     $error = false;
     $result = $this->commit($this->app->api()->fetch()->commit($payload->get_commit_id()));
     if (is_wp_error($result)) {
         $error = $result;
     }
     $removed = array();
     foreach ($payload->get_commits() as $commit) {
         $removed = array_merge($removed, $commit->removed);
     }
     foreach (array_unique($removed) as $path) {
         $result = $this->app->database()->delete_post_by_path($path);
         if (is_wp_error($result)) {
             if ($error) {
                 $error->add($result->get_error_code(), $result->get_error_message());
             } else {
                 $error = $result;
             }
         }
     }
     if ($error) {
         return $error;
     }
     return __('Payload processed', 'wordpress-github-sync');
 }
 public function test_should_be_valid_payload()
 {
     $payload = new WordPress_GitHub_Sync_Payload($this->app, file_get_contents($this->data_dir . 'payload-valid.json'));
     $this->assertTrue($payload->should_import());
     $this->assertEquals('ad4e0a9e2597de40106d5f52e2041d8ebaeb0087', $payload->get_commit_id());
     $this->assertEquals('*****@*****.**', $payload->get_author_email());
     $this->assertCount(1, $commits = $payload->get_commits());
     $this->assertEquals('ad4e0a9e2597de40106d5f52e2041d8ebaeb0087', $commits[0]->id);
 }