diff options
Diffstat (limited to 'www/wiki/tests/phpunit/includes/externalstore/ExternalStoreForTesting.php')
-rw-r--r-- | www/wiki/tests/phpunit/includes/externalstore/ExternalStoreForTesting.php | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/www/wiki/tests/phpunit/includes/externalstore/ExternalStoreForTesting.php b/www/wiki/tests/phpunit/includes/externalstore/ExternalStoreForTesting.php new file mode 100644 index 00000000..50f1e523 --- /dev/null +++ b/www/wiki/tests/phpunit/includes/externalstore/ExternalStoreForTesting.php @@ -0,0 +1,46 @@ +<?php + +class ExternalStoreForTesting { + + protected $data = [ + 'cluster1' => [ + '200' => 'Hello', + '300' => [ + 'Hello', 'World', + ], + // gzip string below generated with gzdeflate( 'AAAABBAAA' ) + '12345' => "sttttr\002\022\000", + ], + ]; + + /** + * Fetch data from given URL + * @param string $url An url of the form FOO://cluster/id or FOO://cluster/id/itemid. + * @return mixed + */ + public function fetchFromURL( $url ) { + // Based on ExternalStoreDB + $path = explode( '/', $url ); + $cluster = $path[2]; + $id = $path[3]; + if ( isset( $path[4] ) ) { + $itemID = $path[4]; + } else { + $itemID = false; + } + + if ( !isset( $this->data[$cluster][$id] ) ) { + return null; + } + + if ( $itemID !== false + && is_array( $this->data[$cluster][$id] ) + && isset( $this->data[$cluster][$id][$itemID] ) + ) { + return $this->data[$cluster][$id][$itemID]; + } + + return $this->data[$cluster][$id]; + } + +} |