From a2d04589a6d98179b2fa094cdbf065a0233526aa Mon Sep 17 00:00:00 2001 From: tranfuga25s Date: Fri, 5 Dec 2014 15:23:48 -0300 Subject: [PATCH 1/7] Change to output the difference between fixture data and fields --- .../TestSuite/Fixture/CakeTestFixture.php | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/Cake/TestSuite/Fixture/CakeTestFixture.php b/lib/Cake/TestSuite/Fixture/CakeTestFixture.php index 329eef27f..fc70aa519 100644 --- a/lib/Cake/TestSuite/Fixture/CakeTestFixture.php +++ b/lib/Cake/TestSuite/Fixture/CakeTestFixture.php @@ -287,9 +287,25 @@ class CakeTestFixture { $fields = array_unique($fields); $default = array_fill_keys($fields, null); foreach ($this->records as $record) { - $merge = array_values(array_merge($default, $record)); + $merge_data = array_merge( $default, $record ); + $merge = array_values( $temporal ); if (count($fields) !== count($merge)) { - throw new CakeException('Fixture invalid: Count of fields does not match count of values in ' . get_class($this)); + + $merge_fields = array_keys( $merge_data ); + $remove = array(); + + foreach( $fields as $f ) { + if( in_array( $f, $merge_fields ) ) { + $remove[] = $f; + } + } + $merge_fields = array_diff( $merge_fields, $remove ); + $message = 'Fixture invalid: Count of fields does not match count of values in ' . get_class($this)."\n"; + foreach( $merge_fields as $field ) { + $message .= "The field '".$field."' is not in the fixture used in the schema."."\n"; + } + + throw new CakeException( $message ); } $values[] = $merge; } From fc756ac0b80bc5252659246f0ca7591bd44a23d1 Mon Sep 17 00:00:00 2001 From: tranfuga25s Date: Fri, 5 Dec 2014 15:34:53 -0300 Subject: [PATCH 2/7] fix some small typo changing variables names --- lib/Cake/TestSuite/Fixture/CakeTestFixture.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Cake/TestSuite/Fixture/CakeTestFixture.php b/lib/Cake/TestSuite/Fixture/CakeTestFixture.php index fc70aa519..4cad64c00 100644 --- a/lib/Cake/TestSuite/Fixture/CakeTestFixture.php +++ b/lib/Cake/TestSuite/Fixture/CakeTestFixture.php @@ -288,7 +288,7 @@ class CakeTestFixture { $default = array_fill_keys($fields, null); foreach ($this->records as $record) { $merge_data = array_merge( $default, $record ); - $merge = array_values( $temporal ); + $merge = array_values( $merge_data ); if (count($fields) !== count($merge)) { $merge_fields = array_keys( $merge_data ); From ec2530ba58b88db75224aeb65a5b0f40947ece31 Mon Sep 17 00:00:00 2001 From: tranfuga25s Date: Fri, 5 Dec 2014 16:01:49 -0300 Subject: [PATCH 3/7] Fix PHPCS problems and a better comparation of schema and data --- .../TestSuite/Fixture/CakeTestFixture.php | 38 ++++++++++--------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/lib/Cake/TestSuite/Fixture/CakeTestFixture.php b/lib/Cake/TestSuite/Fixture/CakeTestFixture.php index 4cad64c00..ca7363641 100644 --- a/lib/Cake/TestSuite/Fixture/CakeTestFixture.php +++ b/lib/Cake/TestSuite/Fixture/CakeTestFixture.php @@ -287,25 +287,29 @@ class CakeTestFixture { $fields = array_unique($fields); $default = array_fill_keys($fields, null); foreach ($this->records as $record) { - $merge_data = array_merge( $default, $record ); - $merge = array_values( $merge_data ); + $mergeData = array_merge( $default, $record ); + $merge = array_values( $mergeData ); if (count($fields) !== count($merge)) { - $merge_fields = array_keys( $merge_data ); - $remove = array(); - - foreach( $fields as $f ) { - if( in_array( $f, $merge_fields ) ) { - $remove[] = $f; - } - } - $merge_fields = array_diff( $merge_fields, $remove ); - $message = 'Fixture invalid: Count of fields does not match count of values in ' . get_class($this)."\n"; - foreach( $merge_fields as $field ) { - $message .= "The field '".$field."' is not in the fixture used in the schema."."\n"; - } - - throw new CakeException( $message ); + $mergeFields = array_keys( $merge_data ); + $remove = array(); + + foreach ($fields as $k => $f) { + if (in_array( $f, $mergeFields )) { + $remove[] = $f; + unset( $fields[$k] ); + } + } + $mergeFields = array_diff( $mergeFields, $remove ); + $message = 'Fixture invalid: Count of fields does not match count of values in ' . get_class($this)."\n"; + foreach ($mergeFields as $field) { + $message .= "The field '" . $field . "' is in the data fixture but not in the schema." . "\n"; + } + foreach ($fields as $field) { + $message .= "The field '" . $field . "' is in the fixture but not in the data." . "\n"; + } + + throw new CakeException( $message ); } $values[] = $merge; } From b0d0143b8218c1c56ffae2678ad4c69a8d03a34a Mon Sep 17 00:00:00 2001 From: tranfuga25s Date: Fri, 5 Dec 2014 16:14:47 -0300 Subject: [PATCH 4/7] Fix PHPCS problems --- lib/Cake/TestSuite/Fixture/CakeTestFixture.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/Cake/TestSuite/Fixture/CakeTestFixture.php b/lib/Cake/TestSuite/Fixture/CakeTestFixture.php index ca7363641..e31f38986 100644 --- a/lib/Cake/TestSuite/Fixture/CakeTestFixture.php +++ b/lib/Cake/TestSuite/Fixture/CakeTestFixture.php @@ -291,7 +291,7 @@ class CakeTestFixture { $merge = array_values( $mergeData ); if (count($fields) !== count($merge)) { - $mergeFields = array_keys( $merge_data ); + $mergeFields = array_keys( $mergeData ); $remove = array(); foreach ($fields as $k => $f) { @@ -301,7 +301,7 @@ class CakeTestFixture { } } $mergeFields = array_diff( $mergeFields, $remove ); - $message = 'Fixture invalid: Count of fields does not match count of values in ' . get_class($this)."\n"; + $message = 'Fixture invalid: Count of fields does not match count of values in ' . get_class($this) . "\n"; foreach ($mergeFields as $field) { $message .= "The field '" . $field . "' is in the data fixture but not in the schema." . "\n"; } From 9ecdaf79655db798bfd48886cc3d3bd7a6792aa8 Mon Sep 17 00:00:00 2001 From: tranfuga25s Date: Tue, 9 Dec 2014 08:56:34 -0300 Subject: [PATCH 5/7] Added PHPCS fixes and better array diff handling on fixture data count difference --- .../TestSuite/Fixture/CakeTestFixture.php | 21 +++++-------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/lib/Cake/TestSuite/Fixture/CakeTestFixture.php b/lib/Cake/TestSuite/Fixture/CakeTestFixture.php index e31f38986..c8b2a0182 100644 --- a/lib/Cake/TestSuite/Fixture/CakeTestFixture.php +++ b/lib/Cake/TestSuite/Fixture/CakeTestFixture.php @@ -287,26 +287,15 @@ class CakeTestFixture { $fields = array_unique($fields); $default = array_fill_keys($fields, null); foreach ($this->records as $record) { - $mergeData = array_merge( $default, $record ); - $merge = array_values( $mergeData ); + $mergeData = array_merge($default, $record); + $merge = array_values($mergeData); if (count($fields) !== count($merge)) { - $mergeFields = array_keys( $mergeData ); - $remove = array(); + $mergeFields = array_diff_key(array_keys($mergeData), $fields); - foreach ($fields as $k => $f) { - if (in_array( $f, $mergeFields )) { - $remove[] = $f; - unset( $fields[$k] ); - } - } - $mergeFields = array_diff( $mergeFields, $remove ); - $message = 'Fixture invalid: Count of fields does not match count of values in ' . get_class($this) . "\n"; + $message = 'Fixture invalid: Count of fields does not match count of values in ' . get_class($this)."\n"; foreach ($mergeFields as $field) { - $message .= "The field '" . $field . "' is in the data fixture but not in the schema." . "\n"; - } - foreach ($fields as $field) { - $message .= "The field '" . $field . "' is in the fixture but not in the data." . "\n"; + $message .= "The field '".$field."' is in the data fixture but not in the schema."."\n"; } throw new CakeException( $message ); From 674af51d6b875496fe2b9075476d8702c30f29a5 Mon Sep 17 00:00:00 2001 From: tranfuga25s Date: Tue, 9 Dec 2014 09:16:34 -0300 Subject: [PATCH 6/7] Added PHPCS fixes --- lib/Cake/TestSuite/Fixture/CakeTestFixture.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/Cake/TestSuite/Fixture/CakeTestFixture.php b/lib/Cake/TestSuite/Fixture/CakeTestFixture.php index c8b2a0182..6b13b995a 100644 --- a/lib/Cake/TestSuite/Fixture/CakeTestFixture.php +++ b/lib/Cake/TestSuite/Fixture/CakeTestFixture.php @@ -293,9 +293,9 @@ class CakeTestFixture { $mergeFields = array_diff_key(array_keys($mergeData), $fields); - $message = 'Fixture invalid: Count of fields does not match count of values in ' . get_class($this)."\n"; + $message = 'Fixture invalid: Count of fields does not match count of values in ' . get_class($this) . "\n"; foreach ($mergeFields as $field) { - $message .= "The field '".$field."' is in the data fixture but not in the schema."."\n"; + $message .= "The field '" . $field . "' is in the data fixture but not in the schema." . "\n"; } throw new CakeException( $message ); From 360346acd055e33fef382fc578a96646c434adf6 Mon Sep 17 00:00:00 2001 From: tranfuga25s Date: Tue, 9 Dec 2014 09:35:12 -0300 Subject: [PATCH 7/7] Added PHPCS fixes --- lib/Cake/TestSuite/Fixture/CakeTestFixture.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Cake/TestSuite/Fixture/CakeTestFixture.php b/lib/Cake/TestSuite/Fixture/CakeTestFixture.php index 6b13b995a..e37f74f41 100644 --- a/lib/Cake/TestSuite/Fixture/CakeTestFixture.php +++ b/lib/Cake/TestSuite/Fixture/CakeTestFixture.php @@ -295,7 +295,7 @@ class CakeTestFixture { $message = 'Fixture invalid: Count of fields does not match count of values in ' . get_class($this) . "\n"; foreach ($mergeFields as $field) { - $message .= "The field '" . $field . "' is in the data fixture but not in the schema." . "\n"; + $message .= "The field '" . $field . "' is in the data fixture but not in the schema." . "\n"; } throw new CakeException( $message );