Skip to content

Commit 3b7107d

Browse files
Tom Schlicktomschlick
Tom Schlick
andauthored
configurable parent resolve (#21)
* add config option "resolve_recursive" * config gate the parent logic * update test * Update .gitignore * Automatic application of php-cs-fixer changes Co-authored-by: tomschlick <[email protected]>
1 parent 2a5db1c commit 3b7107d

File tree

5 files changed

+21
-2
lines changed

5 files changed

+21
-2
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ docs
44
vendor
55
coverage
66
.idea
7+
.phpunit.result.cache

.php_cs.cache

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"php":"7.4.10","version":"2.16.4","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"align_multiline_comment":{"comment_type":"phpdocs_only"},"binary_operator_spaces":{"align_double_arrow":true,"align_equals":false},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["case","continue","declare","default","die","do","exit","for","foreach","goto","if","return","switch","throw","try","while","yield"]},"braces":true,"cast_spaces":true,"class_definition":true,"concat_space":{"spacing":"one"},"declare_equal_normalize":true,"elseif":true,"encoding":true,"full_opening_tag":true,"function_declaration":true,"function_typehint_space":true,"hash_to_slash_comment":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"line_ending":true,"lowercase_cast":true,"lowercase_constants":true,"lowercase_keywords":true,"magic_constant_casing":true,"method_argument_space":true,"method_separation":true,"multiline_comment_opening_closing":true,"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_consecutive_blank_lines":true,"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_multiline_whitespace_before_semicolons":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":true,"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":true,"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_imports":true,"phpdoc_align":true,"phpdoc_indent":true,"phpdoc_inline_tag":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_separation":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr4":true,"self_accessor":true,"short_scalar_cast":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":true,"single_import_per_statement":true,"single_line_after_imports":true,"list_syntax":{"syntax":"short"},"space_after_semicolon":true,"standardize_not_equals":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline_array":true,"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method"]},"whitespace_after_comma_in_array":true},"hashes":{"migrations\/2018_09_04_161008_add_process_stamps_table.php":4208886956,"migrations\/2018_09_04_161009_add_parent_id_to_table.php":2757033262,"tests\/Fakes\/migrations\/2019_04_03_101010_add_posts_table.php":1444756042,"tests\/Fakes\/Post.php":1394648711,"tests\/ParentTest.php":3726048177,"tests\/ProcessStampModelTest.php":1869178438,"tests\/TestCase.php":684513188,"src\/ProcessStamp.php":2881617738,"src\/ProcessStampsServiceProvider.php":2897661884,"src\/ProcessStampable.php":230333551,"config\/process-stamps.php":4154295908}}
1+
{"php":"7.4.13","version":"2.16.8","indent":" ","lineEnding":"\n","rules":{"array_syntax":{"syntax":"short"},"align_multiline_comment":{"comment_type":"phpdocs_only"},"binary_operator_spaces":{"align_double_arrow":true,"align_equals":false},"blank_line_after_namespace":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["case","continue","declare","default","die","do","exit","for","foreach","goto","if","return","switch","throw","try","while","yield"]},"braces":true,"cast_spaces":true,"class_definition":true,"concat_space":{"spacing":"one"},"declare_equal_normalize":true,"elseif":true,"encoding":true,"full_opening_tag":true,"function_declaration":true,"function_typehint_space":true,"hash_to_slash_comment":true,"heredoc_to_nowdoc":true,"include":true,"increment_style":{"style":"post"},"indentation_type":true,"line_ending":true,"lowercase_cast":true,"lowercase_constants":true,"lowercase_keywords":true,"magic_constant_casing":true,"method_argument_space":true,"method_separation":true,"multiline_comment_opening_closing":true,"native_function_casing":true,"new_with_braces":true,"no_alias_functions":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_closing_tag":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_consecutive_blank_lines":true,"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":{"use":"echo"},"no_multiline_whitespace_around_double_arrow":true,"no_multiline_whitespace_before_semicolons":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_after_function_name":true,"no_spaces_around_offset":true,"no_spaces_inside_parenthesis":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"no_unneeded_control_parentheses":true,"no_unreachable_default_argument_value":true,"no_unused_imports":true,"no_useless_return":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"not_operator_with_successor_space":true,"object_operator_without_whitespace":true,"ordered_imports":true,"phpdoc_align":true,"phpdoc_indent":true,"phpdoc_inline_tag":true,"phpdoc_no_access":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":true,"phpdoc_scalar":true,"phpdoc_separation":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_trim":true,"phpdoc_types":true,"phpdoc_var_without_name":true,"psr4":true,"self_accessor":true,"short_scalar_cast":true,"single_blank_line_at_eof":true,"single_blank_line_before_namespace":true,"single_class_element_per_statement":true,"single_import_per_statement":true,"single_line_after_imports":true,"list_syntax":{"syntax":"short"},"space_after_semicolon":true,"standardize_not_equals":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline_array":true,"trim_array_spaces":true,"unary_operator_spaces":true,"visibility_required":{"elements":["property","method"]},"whitespace_after_comma_in_array":true},"hashes":{"config\/process-stamps.php":281267029,"tests\/ParentTest.php":2532164714,"tests\/TestCase.php":684513188,"tests\/ProcessStampModelTest.php":1869178438,"tests\/Fakes\/migrations\/2019_04_03_101010_add_posts_table.php":1444756042,"tests\/Fakes\/Post.php":1394648711,"migrations\/2018_09_04_161009_add_parent_id_to_table.php":2757033262,"migrations\/2018_09_04_161008_add_process_stamps_table.php":4208886956,"src\/ProcessStampable.php":230333551,"src\/ProcessStamp.php":640165568,"src\/ProcessStampsServiceProvider.php":2897661884}}

config/process-stamps.php

+2
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,6 @@
1414
'enabled' => env('PROCESS_STAMP_CACHE_ENABLED', true),
1515
'store' => env('PROCESS_STAMP_CACHE_DRIVER', 'redis'),
1616
],
17+
18+
'resolve_recursive' => env('PROCESS_STAMP_RESOLVE_RECURSIVE', true),
1719
];

src/ProcessStamp.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public static function firstOrCreateByProcess(array $process, ?string $hash = nu
5555

5656
$parent = null;
5757

58-
if (! empty($process['parent_name'])) {
58+
if (config('process-stamps.resolve_recursive') && ! empty($process['parent_name'])) {
5959
$parent = static::firstOrCreateByProcess(static::getProcessName($process['type'], $process['parent_name']));
6060
}
6161

tests/ParentTest.php

+16
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,22 @@ public function saved_model_includes_parent()
5858
$this->assertCount(3, ProcessStamp::all());
5959
}
6060

61+
/** @test */
62+
public function saved_model_with_resolve_recursive_disabled_does_not_generate_parent()
63+
{
64+
config()->set('process-stamps.resolve_recursive', false);
65+
66+
$this->assertCount(0, ProcessStamp::all());
67+
68+
// Set the url so process stamps can detect it
69+
$_SERVER['REQUEST_URI'] = '/test/hello?test=1234&another=true';
70+
$model = $this->createPost();
71+
72+
$this->assertEquals('/test/hello?test=1234&another=true', $model->processCreated->name);
73+
$this->assertNull($model->processCreated->parent);
74+
$this->assertCount(1, ProcessStamp::all());
75+
}
76+
6177
/** @test */
6278
public function artisan_simple()
6379
{

0 commit comments

Comments
 (0)