diff options
author | Dries Buytaert <dries@buytaert.net> | 2009-07-02 20:19:48 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2009-07-02 20:19:48 +0000 |
commit | cf59ebec770a3f10f8fc44a95844167392762095 (patch) | |
tree | 3107dbbffc2adbe238a6281dec703e94b357260f | |
parent | 8f66b459bff921ad2f79a7858d8eb5294087b58c (diff) | |
download | brdo-cf59ebec770a3f10f8fc44a95844167392762095.tar.gz brdo-cf59ebec770a3f10f8fc44a95844167392762095.tar.bz2 |
- Patch #489438 by bjaspan, crotown: hook_field_create_field() is missing.
-rw-r--r-- | modules/field/field.crud.inc | 3 | ||||
-rw-r--r-- | modules/field/field.test | 4 | ||||
-rw-r--r-- | modules/simpletest/tests/field_test.module | 62 |
3 files changed, 68 insertions, 1 deletions
diff --git a/modules/field/field.crud.inc b/modules/field/field.crud.inc index 9dc190d50..696a4b831 100644 --- a/modules/field/field.crud.inc +++ b/modules/field/field.crud.inc @@ -273,6 +273,9 @@ function field_create_field($field) { // Clear caches field_cache_clear(TRUE); + // Invoke external hooks after the cache is cleared for API consistency. + module_invoke_all('field_create_field', $field); + return $field; } diff --git a/modules/field/field.test b/modules/field/field.test index ee816c0aa..57357b920 100644 --- a/modules/field/field.test +++ b/modules/field/field.test @@ -1320,8 +1320,10 @@ class FieldCrudTestCase extends DrupalWebTestCase { 'field_name' => 'field_2', 'type' => 'test_field', ); + field_test_memorize(); $field_definition = field_create_field($field_definition); - + $mem = field_test_memorize(); + $this->assertIdentical($mem['field_test_field_create_field'][0][0], $field_definition, 'hook_field_create_field() called with correct arguments.'); $field = field_read_field($field_definition['field_name']); // Ensure that basic properties are preserved. diff --git a/modules/simpletest/tests/field_test.module b/modules/simpletest/tests/field_test.module index 8999cdaa3..abf6aaf06 100644 --- a/modules/simpletest/tests/field_test.module +++ b/modules/simpletest/tests/field_test.module @@ -366,6 +366,68 @@ function field_test_field_schema($field) { } /** + * Store and retrieve keyed data for later verification by unit tests. + * + * This function is a simple in-memory key-value store with the + * distinction that it stores all values for a given key instead of + * just the most recently set value. field_test module hooks call + * this function to record their arguments, keyed by hook name. The + * unit tests later call this function to verify that the correct + * hooks were called and were passed the correct arguments. + * + * This function ignores all calls until the first time it is called + * with $key of NULL. Each time it is called with $key of NULL, it + * erases all previously stored data from its internal cache, but also + * returns the previously stored data to the caller. A typical usage + * scenario is: + * + * @code + * // calls to field_test_memorize() here are ignored + * + * // turn on memorization + * field_test_memorize(); + * + * // call some Field API functions that invoke field_test hooks + * $field = field_create_field(...); + * + * // retrieve and reset the memorized hook call data + * $mem = field_test_memorize(); + * + * // make sure hook_field_create_field() is invoked correctly + * assertEqual(count($mem['field_test_field_create_field']), 1); + * assertEqual($mem['field_test_field_create_field'][0], array($field)); + * @endcode + * + * @param $key + * The key under which to store to $value, or NULL as described above. + * @param $value + * A value to store for $key. + * @return + * An array mapping each $key to an array of each $value passed in + * for that key. + */ +function field_test_memorize($key = NULL, $value = NULL) { + $memorize =& drupal_static(__FUNCTION__, NULL); + + if (is_null($key)) { + $ret = $memorize; + $memorize = array(); + return $ret; + } + if (is_array($memorize)) { + $memorize[$key][] = $value; + } +} + +/** + * Memorize calls to hook_field_create_field(). + */ +function field_test_field_create_field($field) { + $args = func_get_args(); + field_test_memorize(__FUNCTION__, $args); +} + +/** * Implement hook_field_validate(). * * Possible error codes: |