* Initialises a test instance for unit tests.
*
* This differs from initialise_test_instance in that it doesn't rely on interacting with the config table.
- * By default however it calls initialise_test_instance to support backwards compatability.
+ * By default however it calls initialise_test_instance to support backwards compatibility.
*
* @since 2.8
* @param cache_definition $definition
* @return cache_store|false
*/
public static function initialise_unit_test_instance(cache_definition $definition) {
- return self::initialise_test_instance($definition);
+ return static::initialise_test_instance($definition);
}
}
throw new coding_exception('This mongodb instance has already been initialised.');
}
$this->database = $this->connection->selectDB($this->databasename);
- $this->definitionhash = $definition->generate_definition_hash();
+ $this->definitionhash = 'm'.$definition->generate_definition_hash();
$this->collection = $this->database->selectCollection($this->definitionhash);
$options = array('name' => 'idx_key');
$configuration = array();
$configuration['servers'] = explode("\n", TEST_CACHESTORE_MONGODB_TESTSERVER);
+ $configuration['usesafe'] = 1;
$store = new cachestore_mongodb('Test mongodb', $configuration);
$store->initialise($definition);
protected function get_class_name() {
return 'cachestore_mongodb';
}
+
+ /**
+ * A small additional test to make sure definitions that hash a hash starting with a number work OK
+ */
+ public function test_collection_name() {
+ // This generates a definition that has a hash starting with a number. MDL-46208.
+ $definition = cache_definition::load_adhoc(cache_store::MODE_APPLICATION, 'cachestore_mongodb', 'abc');
+ $instance = cachestore_mongodb::initialise_unit_test_instance($definition);
+
+ if (!$instance) {
+ $this->markTestSkipped();
+ }
+
+ $this->assertTrue($instance->set(1, 'alpha'));
+ $this->assertTrue($instance->set(2, 'beta'));
+ $this->assertEquals('alpha', $instance->get(1));
+ $this->assertEquals('beta', $instance->get(2));
+ $this->assertEquals(array(
+ 1 => 'alpha',
+ 2 => 'beta'
+ ), $instance->get_many(array(1, 2)));
+ }
}
\ No newline at end of file
$modes = $class::get_supported_modes();
if ($modes & cache_store::MODE_APPLICATION) {
$definition = cache_definition::load_adhoc(cache_store::MODE_APPLICATION, $class, 'phpunit_test');
- $instance = $class::initialise_test_instance($definition);
+ $instance = $class::initialise_unit_test_instance($definition);
if (!$instance) {
$this->markTestSkipped('Could not test '.$class.'. No test instance configured for application caches.');
} else {
}
if ($modes & cache_store::MODE_SESSION) {
$definition = cache_definition::load_adhoc(cache_store::MODE_SESSION, $class, 'phpunit_test');
- $instance = $class::initialise_test_instance($definition);
+ $instance = $class::initialise_unit_test_instance($definition);
if (!$instance) {
$this->markTestSkipped('Could not test '.$class.'. No test instance configured for session caches.');
} else {
}
if ($modes & cache_store::MODE_REQUEST) {
$definition = cache_definition::load_adhoc(cache_store::MODE_REQUEST, $class, 'phpunit_test');
- $instance = $class::initialise_test_instance($definition);
+ $instance = $class::initialise_unit_test_instance($definition);
if (!$instance) {
$this->markTestSkipped('Could not test '.$class.'. No test instance configured for request caches.');
} else {