| 1 |  |  | <?php | 
            
                                                                                                            
                            
            
                                    
            
            
                | 2 |  |  | use Writing_On_GitHub_Base_Client as Base; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 3 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 4 |  |  | /** | 
            
                                                                                                            
                            
            
                                    
            
            
                | 5 |  |  |  * @group api | 
            
                                                                                                            
                                                                
            
                                    
            
            
                | 6 |  |  |  */ | 
            
                                                                        
                            
            
                                    
            
            
                | 7 |  |  | class Writing_On_GitHub_Fetch_Client_Test extends Writing_On_GitHub_Base_Client_Test { | 
            
                                                                        
                            
            
                                    
            
            
                | 8 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 9 |  |  |     public function setUp() { | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                        
                            
            
                                    
            
            
                | 10 |  |  |         parent::setUp(); | 
            
                                                                        
                            
            
                                    
            
            
                | 11 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 12 |  |  |         $this->fetch = new Writing_On_GitHub_Fetch_Client( $this->app ); | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                        
                            
            
                                    
            
            
                | 13 |  |  |     } | 
            
                                                                        
                            
            
                                    
            
            
                | 14 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 15 |  |  |     public function test_should_fail_if_missing_token() { | 
            
                                                                        
                            
            
                                    
            
            
                | 16 |  |  |         delete_option( Base::TOKEN_OPTION_KEY ); | 
            
                                                                        
                            
            
                                    
            
            
                | 17 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 18 |  |  |         $this->assertInstanceOf( 'WP_Error', $error = $this->fetch->tree_recursive() ); | 
            
                                                                        
                            
            
                                    
            
            
                | 19 |  |  |         $this->assertSame( 'missing_token', $error->get_error_code() ); | 
            
                                                                        
                            
            
                                    
            
            
                | 20 |  |  |     } | 
            
                                                                        
                            
            
                                    
            
            
                | 21 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 22 |  |  |     public function test_should_fail_if_missing_repo() { | 
            
                                                                        
                            
            
                                    
            
            
                | 23 |  |  |         delete_option( Base::REPO_OPTION_KEY ); | 
            
                                                                        
                            
            
                                    
            
            
                | 24 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 25 |  |  |         $this->assertInstanceOf( 'WP_Error', $error = $this->fetch->tree_recursive() ); | 
            
                                                                        
                            
            
                                    
            
            
                | 26 |  |  |         $this->assertSame( 'missing_repository', $error->get_error_code() ); | 
            
                                                                        
                            
            
                                    
            
            
                | 27 |  |  |     } | 
            
                                                                        
                            
            
                                    
            
            
                | 28 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 29 |  |  |     public function test_should_fail_if_malformed_repo() { | 
            
                                                                        
                            
            
                                    
            
            
                | 30 |  |  |         // If you find a particular name passing that shouldn't, | 
            
                                                                        
                            
            
                                    
            
            
                | 31 |  |  |         // add it to the list here and make it pass. | 
            
                                                                        
                            
            
                                    
            
            
                | 32 |  |  |         $this->malformed_repo( 'repositoryname' ); | 
            
                                                                        
                            
            
                                    
            
            
                | 33 |  |  |     } | 
            
                                                                        
                            
            
                                    
            
            
                | 34 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 35 |  |  |     public function test_compare() { | 
            
                                                                        
                            
            
                                    
            
            
                | 36 |  |  |         $this->set_get_trees( true, 'master' ); | 
            
                                                                        
                            
            
                                    
            
            
                | 37 |  |  |         $this->set_get_compare( true ); | 
            
                                                                        
                            
            
                                    
            
            
                | 38 |  |  |         $infos = $this->fetch->compare( '861f87e8851b8debb78db548269d29f8da4d94ac' ); | 
            
                                                                        
                            
            
                                    
            
            
                | 39 |  |  |         $this->assertCount( 1, $infos ); | 
            
                                                                        
                            
            
                                    
            
            
                | 40 |  |  |         $this->assertInstanceOf( 'Writing_On_GitHub_File_Info', $infos[0] ); | 
            
                                                                        
                            
            
                                    
            
            
                | 41 |  |  |     } | 
            
                                                                        
                            
            
                                    
            
            
                | 42 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 43 |  |  |     public function test_should_return_files_with_tree() { | 
            
                                                                        
                            
            
                                    
            
            
                | 44 |  |  |         // $this->set_get_refs_heads_master( true ); | 
            
                                                                        
                            
            
                                    
            
            
                | 45 |  |  |         // $this->set_get_commits( true ); | 
            
                                                                        
                            
            
                                    
            
            
                | 46 |  |  |         $this->set_get_trees( true, 'master' ); | 
            
                                                                        
                            
            
                                    
            
            
                | 47 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 48 |  |  |         $this->assertCount( 3, $this->fetch->tree_recursive() ); | 
            
                                                                        
                            
            
                                    
            
            
                | 49 |  |  |     } | 
            
                                                                        
                            
            
                                    
            
            
                | 50 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 51 |  |  |     public function test_should_fail_if_cant_fetch_tree() { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 52 |  |  |         $this->set_get_trees( false, 'master' ); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 53 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 54 |  |  |         $this->assertInstanceOf( 'WP_Error', $error = $this->fetch->tree_recursive() ); | 
            
                                                                                                            
                                                                
            
                                    
            
            
                | 55 |  |  |         $this->assertSame( '422_unprocessable_entity', $error->get_error_code() ); | 
            
                                                                        
                                                                
            
                                    
            
            
                | 56 |  |  |     } | 
            
                                                                        
                                                                
            
                                    
            
            
                | 57 |  |  |  | 
            
                                                                        
                                                                
            
                                    
            
            
                | 58 |  |  |     public function test_should_return_commit_with_no_blobs_if_api_fails() { | 
            
                                                                        
                                                                
            
                                    
            
            
                | 59 |  |  |         $this->set_get_trees( true, 'master' ); | 
            
                                                                        
                            
            
                                    
            
            
                | 60 |  |  |         $this->set_get_blobs( false ); | 
            
                                                                        
                            
            
                                    
            
            
                | 61 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 62 |  |  |         $this->assertCount( 3, $files = $this->fetch->tree_recursive() ); | 
            
                                                                        
                            
            
                                    
            
            
                | 63 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 64 |  |  |         foreach ( $files as $file ) { | 
            
                                                                        
                            
            
                                    
            
            
                | 65 |  |  |             $this->assertInstanceOf( 'WP_Error', $error = $this->fetch->blob( $file ) ); | 
            
                                                                        
                            
            
                                    
            
            
                | 66 |  |  |             $this->assertSame( '404_not_found', $error->get_error_code() ); | 
                            
                    |  |  |  | 
                                                                                        
                                                                                     | 
            
                                                                        
                            
            
                                    
            
            
                | 67 |  |  |         } | 
            
                                                                        
                            
            
                                    
            
            
                | 68 |  |  |     } | 
            
                                                                        
                            
            
                                    
            
            
                | 69 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 70 |  |  |     // public function test_should_return_and_validate_full_commit() { | 
            
                                                                        
                            
            
                                    
            
            
                | 71 |  |  |     //  $this->set_get_refs_heads_master( true ); | 
            
                                                                        
                            
            
                                    
            
            
                | 72 |  |  |     //  $this->set_get_commits( true ); | 
            
                                                                        
                            
            
                                    
            
            
                | 73 |  |  |     //  $this->set_get_trees( true ); | 
            
                                                                        
                            
            
                                    
            
            
                | 74 |  |  |     //  $this->set_get_blobs( true ); | 
            
                                                                        
                            
            
                                    
            
            
                | 75 |  |  |     //  $this->api_cache | 
            
                                                                        
                            
            
                                    
            
            
                | 76 |  |  |     //      ->shouldReceive( 'set_blob' ) | 
            
                                                                        
                            
            
                                    
            
            
                | 77 |  |  |     //      ->times( 3 ) | 
            
                                                                        
                            
            
                                    
            
            
                | 78 |  |  |     //      ->with( | 
            
                                                                        
                            
            
                                    
            
            
                | 79 |  |  |     //          Mockery::anyOf( | 
            
                                                                        
                            
            
                                    
            
            
                | 80 |  |  |     //              '9fa5c7537f8582b71028ff34b8c20dfd0f3b2a25', | 
            
                                                                        
                            
            
                                    
            
            
                | 81 |  |  |     //              '8d9b2e6fd93761211dc03abd71f4a9189d680fd0', | 
            
                                                                        
                            
            
                                    
            
            
                | 82 |  |  |     //              '2d73165945b0ccbe4932f1363457986b0ed49f19' | 
            
                                                                        
                            
            
                                    
            
            
                | 83 |  |  |     //          ), | 
            
                                                                        
                            
            
                                    
            
            
                | 84 |  |  |     //          Mockery::type( 'Writing_On_GitHub_Blob' ) | 
            
                                                                        
                            
            
                                    
            
            
                | 85 |  |  |     //      ) | 
            
                                                                        
                            
            
                                    
            
            
                | 86 |  |  |     //      ->andReturnUsing( function ( $sha, $blob ) { | 
            
                                                                        
                            
            
                                    
            
            
                | 87 |  |  |     //          return $blob; | 
            
                                                                        
                            
            
                                    
            
            
                | 88 |  |  |     //      } ); | 
            
                                                                        
                            
            
                                    
            
            
                | 89 |  |  |     //  $this->api_cache | 
            
                                                                        
                            
            
                                    
            
            
                | 90 |  |  |     //      ->shouldReceive( 'set_tree' ) | 
            
                                                                        
                            
            
                                    
            
            
                | 91 |  |  |     //      ->once() | 
            
                                                                        
                            
            
                                    
            
            
                | 92 |  |  |     //      ->with( '9108868e3800bec6763e51beb0d33e15036c3626', Mockery::type( 'Writing_On_GitHub_Tree' ) ) | 
            
                                                                        
                            
            
                                    
            
            
                | 93 |  |  |     //      ->andReturnUsing( function ( $sha, $tree ) { | 
            
                                                                        
                            
            
                                    
            
            
                | 94 |  |  |     //          return $tree; | 
            
                                                                        
                            
            
                                    
            
            
                | 95 |  |  |     //      } ); | 
            
                                                                        
                            
            
                                    
            
            
                | 96 |  |  |     //  $this->api_cache | 
            
                                                                        
                            
            
                                    
            
            
                | 97 |  |  |     //      ->shouldReceive( 'set_commit' ) | 
            
                                                                        
                            
            
                                    
            
            
                | 98 |  |  |     //      ->once() | 
            
                                                                        
                            
            
                                    
            
            
                | 99 |  |  |     //      ->with( 'db2510854e6aeab68ead26b48328b19f4bdf926e', Mockery::type( 'Writing_On_GitHub_Commit' ) ) | 
            
                                                                        
                            
            
                                    
            
            
                | 100 |  |  |     //      ->andReturnUsing( function ( $sha, $commit ) { | 
            
                                                                        
                            
            
                                    
            
            
                | 101 |  |  |     //          return $commit; | 
            
                                                                        
                            
            
                                    
            
            
                | 102 |  |  |     //      } ); | 
            
                                                                        
                            
            
                                    
            
            
                | 103 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 104 |  |  |     //  $this->assertInstanceOf( 'Writing_On_GitHub_Commit', $master = $this->fetch->master() ); | 
            
                                                                        
                            
            
                                    
            
            
                | 105 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 106 |  |  |     //  /** | 
            
                                                                        
                            
            
                                    
            
            
                | 107 |  |  |     //   * Validate the commit's api data mapped correctly. | 
            
                                                                        
                            
            
                                    
            
            
                | 108 |  |  |     //   */ | 
            
                                                                        
                            
            
                                    
            
            
                | 109 |  |  |     //  $this->assertSame( '7497c0574b9430ff5e5521b4572b7452ea36a056', $master->sha() ); | 
            
                                                                        
                            
            
                                    
            
            
                | 110 |  |  |     //  $this->assertSame( '[email protected]', $master->author()->email ); | 
            
                                                                        
                            
            
                                    
            
            
                | 111 |  |  |     //  $this->assertSame( '2015-11-02T00:36:54Z', $master->author()->date ); | 
            
                                                                        
                            
            
                                    
            
            
                | 112 |  |  |     //  $this->assertSame( '[email protected]', $master->committer()->email ); | 
            
                                                                        
                            
            
                                    
            
            
                | 113 |  |  |     //  $this->assertSame( '2015-11-02T00:36:54Z', $master->committer()->date ); | 
            
                                                                        
                            
            
                                    
            
            
                | 114 |  |  |     //  $this->assertSame( 'Initial full site export - wogh', $master->message() ); | 
            
                                                                        
                            
            
                                    
            
            
                | 115 |  |  |     //  $this->assertCount( 1, $parents = $master->parents() ); | 
            
                                                                        
                            
            
                                    
            
            
                | 116 |  |  |     //  $this->assertSame( 'db2510854e6aeab68ead26b48328b19f4bdf926e', $parents[0]->sha ); | 
            
                                                                        
                            
            
                                    
            
            
                | 117 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 118 |  |  |     //  $this->assertInstanceOf( 'Writing_On_GitHub_Tree', $tree = $master->tree() ); | 
            
                                                                        
                            
            
                                    
            
            
                | 119 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 120 |  |  |     //  /** | 
            
                                                                        
                            
            
                                    
            
            
                | 121 |  |  |     //   * Validate the tree's api data mapped correctly. | 
            
                                                                        
                            
            
                                    
            
            
                | 122 |  |  |     //   */ | 
            
                                                                        
                            
            
                                    
            
            
                | 123 |  |  |     //  $this->assertSame( '9108868e3800bec6763e51beb0d33e15036c3626', $tree->sha() ); | 
            
                                                                        
                            
            
                                    
            
            
                | 124 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 125 |  |  |     //  $this->assertCount( 3, $blobs = $tree->blobs() ); | 
            
                                                                        
                            
            
                                    
            
            
                | 126 |  |  |  | 
            
                                                                        
                            
            
                                    
            
            
                | 127 |  |  |     //  /** | 
            
                                                                        
                            
            
                                    
            
            
                | 128 |  |  |     //   * Validate the blobs' api data mapped correctly. | 
            
                                                                        
                            
            
                                    
            
            
                | 129 |  |  |     //   */ | 
            
                                                                        
                            
            
                                    
            
            
                | 130 |  |  |     //  $blobs = $tree->blobs(); | 
            
                                                                        
                            
            
                                    
            
            
                | 131 |  |  |     //  $this->assertCount( 3, $blobs ); | 
            
                                                                        
                            
            
                                    
            
            
                | 132 |  |  |     //  foreach ( $blobs as $blob ) { | 
            
                                                                        
                            
            
                                    
            
            
                | 133 |  |  |     //      $this->assertTrue( in_array( $blob->sha(), array( | 
            
                                                                        
                            
            
                                    
            
            
                | 134 |  |  |     //          '2d73165945b0ccbe4932f1363457986b0ed49f19', | 
            
                                                                        
                            
            
                                    
            
            
                | 135 |  |  |     //          '8d9b2e6fd93761211dc03abd71f4a9189d680fd0', | 
            
                                                                        
                            
            
                                    
            
            
                | 136 |  |  |     //          '9fa5c7537f8582b71028ff34b8c20dfd0f3b2a25', | 
            
                                                                        
                            
            
                                    
            
            
                | 137 |  |  |     //      ) ) ); | 
            
                                                                        
                            
            
                                    
            
            
                | 138 |  |  |     //      $this->assertTrue( in_array( $blob->path(), array( | 
            
                                                                        
                            
            
                                    
            
            
                | 139 |  |  |     //          '_pages/sample-page.md', | 
            
                                                                        
                            
            
                                    
            
            
                | 140 |  |  |     //          '_posts/2015-11-02-hello-world.md', | 
            
                                                                        
                            
            
                                    
            
            
                | 141 |  |  |     //          'README.md', | 
            
                                                                        
                            
            
                                    
            
            
                | 142 |  |  |     //      ) ) ); | 
            
                                                                        
                            
            
                                    
            
            
                | 143 |  |  |     //  } | 
            
                                                                        
                            
            
                                    
            
            
                | 144 |  |  |     // } | 
            
                                                                        
                            
            
                                    
            
            
                | 145 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 146 |  |  |     protected function malformed_repo( $repo ) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 147 |  |  |         update_option( Base::REPO_OPTION_KEY, $repo ); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 148 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 149 |  |  |         $this->assertInstanceOf( 'WP_Error', $error = $this->fetch->tree_recursive() ); | 
            
                                                                                                            
                                                                
            
                                    
            
            
                | 150 |  |  |         $this->assertSame( 'malformed_repository', $error->get_error_code() ); | 
            
                                                                        
                                                                
            
                                    
            
            
                | 151 |  |  |     } | 
            
                                                                        
                                                                
            
                                    
            
            
                | 152 |  |  | } | 
            
                                                                        
                                                                
            
                                    
            
            
                | 153 |  |  |  |