Commit f88ddc5c authored by Vadim Galizyanov's avatar Vadim Galizyanov
Browse files

updated tests

parent 26b0e569
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@
  "require": {
    "php": ">=7.4",
    "ramsey/collection": "^1.2",
    "iqdev/search-dc": "dev-feature_query",
    "iqdev/search-dc": "1.2.*",
    "elasticsearch/elasticsearch": "^8.5",
    "vlucas/phpdotenv": "^5.4.1"
  },
+9 −2
Original line number Diff line number Diff line
@@ -7,10 +7,17 @@ use PHPUnit\Framework\TestCase;

abstract class AbstractTestCase extends TestCase
{
    /**
     * Частичное сравнение массивов
     * @param array $expected
     * @param array $actual массив который должен иметь структуру и значения $expected
     * @param string $message
     * @return void
     */
    protected function assertArray(array $expected, array $actual, string $message = '')
    {
        $expectedKeys = Arr::convertingOneDimensional($expected);
        $actualKeys = Arr::convertingOneDimensional($actual);
        $expectedKeys = Arr::dot($expected);
        $actualKeys = Arr::dot($actual);
        foreach ($expectedKeys as $key => $value) {
            $this->assertArrayHasKey($key, $actualKeys, $message);
            if (isset($actualKeys[$key])) {
+1083 −36

File changed.

Preview size limit exceeded, changes collapsed.

+15 −12
Original line number Diff line number Diff line
@@ -4,21 +4,24 @@ namespace IQDEV\ElasticSearchTests\Helpers;

class Arr
{
    public static function convertingOneDimensional(array $expected, $startKey = null): array
    /**
     * Flatten a multi-dimensional associative array with dots.
     * @param array $array
     * @param $prepend
     * @return array
     */
    public static function dot(array $array, $prepend = ''): array
    {
        $keys = [];
        foreach ($expected as $key => $item) {
            if ($startKey !== null) {
                $key = $startKey.'.'.$key;
            }
        $results = [];

            if (is_array($item)) {
                $keys = array_merge($keys, static::convertingOneDimensional($item, $key));
                continue;
        foreach ($array as $key => $value) {
            if (is_array($value) && ! empty($value)) {
                $results = array_merge($results, static::dot($value, $prepend.$key.'.'));
            } else {
                $results[$prepend.$key] = $value;
            }

            $keys[$key] = $item;
        }
        return $keys;

        return $results;
    }
}
 No newline at end of file