Skip to content

Commit

Permalink
configurable parent resolve (#21)
Browse files Browse the repository at this point in the history
* 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]>
  • Loading branch information
Tom Schlick and tomschlick committed Dec 17, 2020
1 parent 2a5db1c commit 3b7107d
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 2 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ docs
vendor
coverage
.idea
.phpunit.result.cache
2 changes: 1 addition & 1 deletion .php_cs.cache
Original file line number Diff line number Diff line change
@@ -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}}
{"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}}
2 changes: 2 additions & 0 deletions config/process-stamps.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,6 @@
'enabled' => env('PROCESS_STAMP_CACHE_ENABLED', true),
'store' => env('PROCESS_STAMP_CACHE_DRIVER', 'redis'),
],

'resolve_recursive' => env('PROCESS_STAMP_RESOLVE_RECURSIVE', true),
];
2 changes: 1 addition & 1 deletion src/ProcessStamp.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public static function firstOrCreateByProcess(array $process, ?string $hash = nu

$parent = null;

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

Expand Down
16 changes: 16 additions & 0 deletions tests/ParentTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,22 @@ public function saved_model_includes_parent()
$this->assertCount(3, ProcessStamp::all());
}

/** @test */
public function saved_model_with_resolve_recursive_disabled_does_not_generate_parent()
{
config()->set('process-stamps.resolve_recursive', false);

$this->assertCount(0, ProcessStamp::all());

// Set the url so process stamps can detect it
$_SERVER['REQUEST_URI'] = '/test/hello?test=1234&another=true';
$model = $this->createPost();

$this->assertEquals('/test/hello?test=1234&another=true', $model->processCreated->name);
$this->assertNull($model->processCreated->parent);
$this->assertCount(1, ProcessStamp::all());
}

/** @test */
public function artisan_simple()
{
Expand Down

0 comments on commit 3b7107d

Please sign in to comment.