From 413566dc5c13feeba321abe77a753e879ab02928 Mon Sep 17 00:00:00 2001 From: Marc Morera Date: Wed, 26 Feb 2020 14:08:38 +0100 Subject: [PATCH] Fixed delete (#13) --- .php_cs.cache | 2 +- src/Connection.php | 31 +++++++++++++--------------- tests/ConnectionTest.php | 38 +++++++++++++++++++++++++++++++++-- tests/MysqlConnectionTest.php | 2 -- 4 files changed, 51 insertions(+), 22 deletions(-) diff --git a/.php_cs.cache b/.php_cs.cache index 3c06f15..c5d3382 100644 --- a/.php_cs.cache +++ b/.php_cs.cache @@ -1 +1 @@ -{"php":"7.4.2","version":"2.16.1","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":{"allow_single_line_closure":true},"class_definition":{"single_line":true},"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":true,"no_break_comment":true,"no_closing_tag":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":true,"single_import_per_statement":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":true,"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"binary_operator_spaces":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["return"]},"cast_spaces":true,"class_attributes_separation":{"elements":["method"]},"concat_space":true,"declare_equal_normalize":true,"function_typehint_space":true,"include":true,"increment_style":true,"lowercase_cast":true,"lowercase_static_reference":true,"magic_constant_casing":true,"magic_method_casing":true,"native_function_casing":true,"native_function_type_declaration_casing":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_empty_comment":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["curly_brace_block","extra","parenthesis_brace_block","square_brace_block","throw","use"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":true,"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_around_offset":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_unneeded_control_parentheses":true,"no_unneeded_curly_braces":true,"no_unneeded_final_method":true,"no_unused_imports":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"object_operator_without_whitespace":true,"ordered_imports":true,"php_unit_fqcn_annotation":true,"phpdoc_align":{"tags":["method","param","property","return","throws","type","var"]},"phpdoc_annotation_without_dot":true,"phpdoc_indent":true,"phpdoc_inline_tag":true,"phpdoc_no_access":true,"phpdoc_no_alias_tag":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_return_self_reference":true,"phpdoc_scalar":true,"phpdoc_separation":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":true,"phpdoc_trim":true,"phpdoc_trim_consecutive_blank_line_separation":true,"phpdoc_types":true,"phpdoc_types_order":{"null_adjustment":"always_last","sort_algorithm":"none"},"phpdoc_var_without_name":true,"return_type_declaration":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_line_comment_style":{"comment_types":["hash"]},"single_line_throw":true,"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":{"remove_in_empty_for_expressions":true},"standardize_increment":true,"standardize_not_equals":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline_array":true,"trim_array_spaces":true,"unary_operator_spaces":true,"whitespace_after_comma_in_array":true,"yoda_style":true},"hashes":{"src\/Driver\/Mysql\/MysqlDriver.php":1496639553,"src\/Driver\/Mysql\/EmptyDoctrineMysqlDriver.php":3752159343,"src\/Driver\/PlainDriverException.php":1220843308,"src\/Driver\/SQLite\/SQLiteDriver.php":1552696176,"src\/Driver\/SQLite\/EmptyDoctrineSQLiteDriver.php":117021226,"src\/Driver\/Driver.php":2379534927,"src\/Driver\/PostgreSQL\/EmptyDoctrinePostgreSQLDriver.php":2852569520,"src\/Driver\/PostgreSQL\/PostgreSQLDriver.php":2231856679,"src\/Credentials.php":1470751445,"src\/Result.php":1940786624,"src\/Connection.php":297218298,"src\/Mock\/MockedDBALConnection.php":2847858253,"src\/Mock\/MockedDriver.php":1506357739,"tests\/ConnectionTest.php":4000367914,"tests\/SQLiteConnectionTest.php":624031957,"tests\/PostgreSQLConnectionTest.php":2591829216,"tests\/MysqlConnectionTest.php":3860731532}} \ No newline at end of file +{"php":"7.4.2","version":"2.16.1","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":{"allow_single_line_closure":true},"class_definition":{"single_line":true},"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":true,"no_break_comment":true,"no_closing_tag":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":true,"single_import_per_statement":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":true,"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"binary_operator_spaces":true,"blank_line_after_opening_tag":true,"blank_line_before_statement":{"statements":["return"]},"cast_spaces":true,"class_attributes_separation":{"elements":["method"]},"concat_space":true,"declare_equal_normalize":true,"function_typehint_space":true,"include":true,"increment_style":true,"lowercase_cast":true,"lowercase_static_reference":true,"magic_constant_casing":true,"magic_method_casing":true,"native_function_casing":true,"native_function_type_declaration_casing":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_blank_lines_after_phpdoc":true,"no_empty_comment":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["curly_brace_block","extra","parenthesis_brace_block","square_brace_block","throw","use"]},"no_leading_import_slash":true,"no_leading_namespace_whitespace":true,"no_mixed_echo_print":true,"no_multiline_whitespace_around_double_arrow":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_around_offset":true,"no_trailing_comma_in_list_call":true,"no_trailing_comma_in_singleline_array":true,"no_unneeded_control_parentheses":true,"no_unneeded_curly_braces":true,"no_unneeded_final_method":true,"no_unused_imports":true,"no_whitespace_before_comma_in_array":true,"no_whitespace_in_blank_line":true,"normalize_index_brace":true,"object_operator_without_whitespace":true,"ordered_imports":true,"php_unit_fqcn_annotation":true,"phpdoc_align":{"tags":["method","param","property","return","throws","type","var"]},"phpdoc_annotation_without_dot":true,"phpdoc_indent":true,"phpdoc_inline_tag":true,"phpdoc_no_access":true,"phpdoc_no_alias_tag":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_return_self_reference":true,"phpdoc_scalar":true,"phpdoc_separation":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_to_comment":true,"phpdoc_trim":true,"phpdoc_trim_consecutive_blank_line_separation":true,"phpdoc_types":true,"phpdoc_types_order":{"null_adjustment":"always_last","sort_algorithm":"none"},"phpdoc_var_without_name":true,"return_type_declaration":true,"semicolon_after_instruction":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_line_comment_style":{"comment_types":["hash"]},"single_line_throw":true,"single_quote":true,"single_trait_insert_per_statement":true,"space_after_semicolon":{"remove_in_empty_for_expressions":true},"standardize_increment":true,"standardize_not_equals":true,"ternary_operator_spaces":true,"trailing_comma_in_multiline_array":true,"trim_array_spaces":true,"unary_operator_spaces":true,"whitespace_after_comma_in_array":true,"yoda_style":true},"hashes":{"src\/Driver\/Mysql\/MysqlDriver.php":1496639553,"src\/Driver\/Mysql\/EmptyDoctrineMysqlDriver.php":3752159343,"src\/Driver\/PlainDriverException.php":1220843308,"src\/Driver\/SQLite\/SQLiteDriver.php":1552696176,"src\/Driver\/SQLite\/EmptyDoctrineSQLiteDriver.php":117021226,"src\/Driver\/Driver.php":4188879766,"src\/Driver\/PostgreSQL\/EmptyDoctrinePostgreSQLDriver.php":2852569520,"src\/Driver\/PostgreSQL\/PostgreSQLDriver.php":2231856679,"src\/Credentials.php":1470751445,"src\/Result.php":1940786624,"src\/Connection.php":3154126645,"src\/Mock\/MockedDBALConnection.php":2847858253,"src\/Mock\/MockedDriver.php":1506357739,"tests\/ConnectionTest.php":1321659771,"tests\/SQLiteConnectionTest.php":715561380,"tests\/PostgreSQLConnectionTest.php":1654116774,"tests\/MysqlConnectionTest.php":1643302408}} \ No newline at end of file diff --git a/src/Connection.php b/src/Connection.php index fb64774..66ce3d6 100644 --- a/src/Connection.php +++ b/src/Connection.php @@ -25,8 +25,8 @@ use Drift\DBAL\Driver\Driver; use Drift\DBAL\Mock\MockedDBALConnection; use Drift\DBAL\Mock\MockedDriver; -use React\Promise\PromiseInterface; use function React\Promise\map; +use React\Promise\PromiseInterface; /** * Class Connection. @@ -159,7 +159,7 @@ public function queryBySQL(string $sql, array $parameters = []): PromiseInterfac } /** - * Execute, sequentially, an array of sqls + * Execute, sequentially, an array of sqls. * * @param string[] $sqls * @@ -168,16 +168,16 @@ public function queryBySQL(string $sql, array $parameters = []): PromiseInterfac public function executeSQLs(array $sqls): PromiseInterface { return - map($sqls, function(string $sql) { + map($sqls, function (string $sql) { return $this->queryBySQL($sql); }) - ->then(function() { + ->then(function () { return $this; }); } /** - * Execute an schema + * Execute an schema. * * @param Schema $schema * @@ -187,7 +187,7 @@ public function executeSchema(Schema $schema): PromiseInterface { return $this ->executeSQLs($schema->toSql($this->platform)) - ->then(function() { + ->then(function () { return $this; }); } @@ -262,7 +262,6 @@ public function insert( /** * @param string $table - * @param array $id * @param array $values * * @return PromiseInterface @@ -271,10 +270,9 @@ public function insert( */ public function delete( string $table, - array $id, array $values ): PromiseInterface { - if (empty($id)) { + if (empty($values)) { throw InvalidArgumentException::fromEmptyCriteria(); } @@ -348,7 +346,7 @@ public function upsert( } /** - * Table related shortcuts + * Table related shortcuts. */ /** @@ -359,7 +357,7 @@ public function upsert( * First field is considered as primary key. * * @param string $name - * @param array $fields + * @param array $fields * * @return PromiseInterface * @@ -369,8 +367,7 @@ public function upsert( public function createTable( string $name, array $fields - ) : PromiseInterface - { + ): PromiseInterface { if (empty($fields)) { throw InvalidArgumentException::fromEmptyFieldsArray(); } @@ -398,11 +395,11 @@ public function createTable( * * @throws TableNotFoundException */ - public function dropTable(string $name) : PromiseInterface + public function dropTable(string $name): PromiseInterface { return $this ->queryBySQL("DROP TABLE $name") - ->then(function() { + ->then(function () { return $this; }); } @@ -414,7 +411,7 @@ public function dropTable(string $name) : PromiseInterface * * @throws TableNotFoundException */ - public function truncateTable(string $name) : PromiseInterface + public function truncateTable(string $name): PromiseInterface { $truncateTableQuery = $this ->platform @@ -422,7 +419,7 @@ public function truncateTable(string $name) : PromiseInterface return $this ->queryBySQL($truncateTableQuery) - ->then(function() { + ->then(function () { return $this; }); } diff --git a/tests/ConnectionTest.php b/tests/ConnectionTest.php index e5c28d0..b86c1cb 100644 --- a/tests/ConnectionTest.php +++ b/tests/ConnectionTest.php @@ -57,9 +57,9 @@ protected function createInfrastructure(Connection $connection): PromiseInterfac ->createTable('test', [ 'id' => 'string', 'field1' => 'string', - 'field2' => 'string' + 'field2' => 'string', ]) - ->otherwise(function(TableExistsException $_) use ($connection) { + ->otherwise(function (TableExistsException $_) use ($connection) { // Silent pass return $connection; @@ -412,4 +412,38 @@ public function testUpsert() await($promise, $loop, self::MAX_TIMEOUT); } + + /** + * Test delete. + */ + public function testDelete() + { + $loop = $this->createLoop(); + $connection = $this->getConnection($loop); + $promise = $this + ->resetInfrastructure($connection) + ->then(function (Connection $connection) { + return $connection->insert('test', [ + 'id' => '1', + 'field1' => 'val1', + 'field2' => 'val2', + ]); + }) + ->then(function () use ($connection) { + return $connection->delete( + 'test', + ['id' => '1'] + ); + }) + ->then(function () use ($connection) { + return $connection->findOneBy('test', [ + 'id' => '1', + ]); + }) + ->then(function ($result) { + $this->assertNull($result); + }); + + await($promise, $loop, self::MAX_TIMEOUT); + } } diff --git a/tests/MysqlConnectionTest.php b/tests/MysqlConnectionTest.php index 5b08cc9..0b962f4 100644 --- a/tests/MysqlConnectionTest.php +++ b/tests/MysqlConnectionTest.php @@ -15,13 +15,11 @@ namespace Drift\DBAL\Tests; -use Doctrine\DBAL\Exception\TableNotFoundException; use Doctrine\DBAL\Platforms\MySqlPlatform; use Drift\DBAL\Connection; use Drift\DBAL\Credentials; use Drift\DBAL\Driver\Mysql\MysqlDriver; use React\EventLoop\LoopInterface; -use React\Promise\PromiseInterface; /** * Class MysqlConnectionTest.