Code Duplication    Length = 111-111 lines in 2 locations

eZ/Publish/API/Repository/Tests/SearchServiceLocationTest.php 2 locations

@@ 829-939 (lines=111) @@
826
     * @see \eZ\Publish\API\Repository\SearchService::findLocations()
827
     * @group maplocation
828
     */
829
    public function testMapLocationDistanceSortAscending()
830
    {
831
        $contentType = $this->createTestPlaceContentType();
832
833
        // Create a draft to account for behaviour with ContentType in different states
834
        $repository = $this->getRepository();
835
        $contentTypeService = $repository->getContentTypeService();
836
        $contentService = $repository->getContentService();
837
        $contentTypeService->createContentTypeDraft($contentType);
838
        $locationCreateStruct = $repository->getLocationService()->newLocationCreateStruct(2);
839
840
        $createStruct = $contentService->newContentCreateStruct($contentType, 'eng-GB');
841
        $createStruct->alwaysAvailable = false;
842
        $createStruct->mainLanguageCode = 'eng-GB';
843
        $createStruct->setField(
844
            'maplocation',
845
            [
846
                'latitude' => 45.894877,
847
                'longitude' => 15.972699,
848
                'address' => 'Here be wild boars',
849
            ],
850
            'eng-GB'
851
        );
852
853
        $draft = $contentService->createContent($createStruct, [$locationCreateStruct]);
854
        $wildBoars = $contentService->publishVersion($draft->getVersionInfo());
855
856
        $createStruct = $contentService->newContentCreateStruct($contentType, 'eng-GB');
857
        $createStruct->alwaysAvailable = false;
858
        $createStruct->mainLanguageCode = 'eng-GB';
859
        $createStruct->setField(
860
            'maplocation',
861
            [
862
                'latitude' => 45.927334,
863
                'longitude' => 15.934847,
864
                'address' => 'A lone tree',
865
            ],
866
            'eng-GB'
867
        );
868
869
        $draft = $contentService->createContent($createStruct, [$locationCreateStruct]);
870
        $tree = $contentService->publishVersion($draft->getVersionInfo());
871
872
        $createStruct = $contentService->newContentCreateStruct($contentType, 'eng-GB');
873
        $createStruct->alwaysAvailable = false;
874
        $createStruct->mainLanguageCode = 'eng-GB';
875
        $createStruct->setField(
876
            'maplocation',
877
            [
878
                'latitude' => 45.903777,
879
                'longitude' => 15.958788,
880
                'address' => 'Meadow with mushrooms',
881
            ],
882
            'eng-GB'
883
        );
884
885
        $draft = $contentService->createContent($createStruct, [$locationCreateStruct]);
886
        $mushrooms = $contentService->publishVersion($draft->getVersionInfo());
887
888
        $this->refreshSearch($repository);
889
890
        $wellInVodice = [
891
            'latitude' => 43.756825,
892
            'longitude' => 15.775074,
893
        ];
894
895
        $query = new LocationQuery(
896
            [
897
                'filter' => new Criterion\LogicalAnd(
898
                    [
899
                        new Criterion\ContentTypeId($contentType->id),
900
                        new Criterion\MapLocationDistance(
901
                            'maplocation',
902
                            Criterion\Operator::GTE,
903
                            235,
904
                            $wellInVodice['latitude'],
905
                            $wellInVodice['longitude']
906
                        ),
907
                    ]
908
                ),
909
                'offset' => 0,
910
                'limit' => 10,
911
                'sortClauses' => [
912
                    new SortClause\MapLocationDistance(
913
                        'testtype',
914
                        'maplocation',
915
                        $wellInVodice['latitude'],
916
                        $wellInVodice['longitude'],
917
                        LocationQuery::SORT_ASC
918
                    ),
919
                ],
920
            ]
921
        );
922
923
        $searchService = $repository->getSearchService();
924
        $result = $searchService->findLocations($query);
925
926
        $this->assertEquals(3, $result->totalCount);
927
        $this->assertEquals(
928
            $wildBoars->contentInfo->mainLocationId,
929
            $result->searchHits[0]->valueObject->id
930
        );
931
        $this->assertEquals(
932
            $mushrooms->contentInfo->mainLocationId,
933
            $result->searchHits[1]->valueObject->id
934
        );
935
        $this->assertEquals(
936
            $tree->contentInfo->mainLocationId,
937
            $result->searchHits[2]->valueObject->id
938
        );
939
    }
940
941
    /**
942
     * Test for the findLocations() method.
@@ 947-1057 (lines=111) @@
944
     * @see \eZ\Publish\API\Repository\SearchService::findLocations()
945
     * @group maplocation
946
     */
947
    public function testMapLocationDistanceSortDescending()
948
    {
949
        $contentType = $this->createTestPlaceContentType();
950
951
        // Create a draft to account for behaviour with ContentType in different states
952
        $repository = $this->getRepository();
953
        $contentTypeService = $repository->getContentTypeService();
954
        $contentService = $repository->getContentService();
955
        $contentTypeService->createContentTypeDraft($contentType);
956
        $locationCreateStruct = $repository->getLocationService()->newLocationCreateStruct(2);
957
958
        $createStruct = $contentService->newContentCreateStruct($contentType, 'eng-GB');
959
        $createStruct->alwaysAvailable = false;
960
        $createStruct->mainLanguageCode = 'eng-GB';
961
        $createStruct->setField(
962
            'maplocation',
963
            [
964
                'latitude' => 45.894877,
965
                'longitude' => 15.972699,
966
                'address' => 'Here be wild boars',
967
            ],
968
            'eng-GB'
969
        );
970
971
        $draft = $contentService->createContent($createStruct, [$locationCreateStruct]);
972
        $wildBoars = $contentService->publishVersion($draft->getVersionInfo());
973
974
        $createStruct = $contentService->newContentCreateStruct($contentType, 'eng-GB');
975
        $createStruct->alwaysAvailable = false;
976
        $createStruct->mainLanguageCode = 'eng-GB';
977
        $createStruct->setField(
978
            'maplocation',
979
            [
980
                'latitude' => 45.927334,
981
                'longitude' => 15.934847,
982
                'address' => 'A lone tree',
983
            ],
984
            'eng-GB'
985
        );
986
987
        $draft = $contentService->createContent($createStruct, [$locationCreateStruct]);
988
        $tree = $contentService->publishVersion($draft->getVersionInfo());
989
990
        $createStruct = $contentService->newContentCreateStruct($contentType, 'eng-GB');
991
        $createStruct->alwaysAvailable = false;
992
        $createStruct->mainLanguageCode = 'eng-GB';
993
        $createStruct->setField(
994
            'maplocation',
995
            [
996
                'latitude' => 45.903777,
997
                'longitude' => 15.958788,
998
                'address' => 'Meadow with mushrooms',
999
            ],
1000
            'eng-GB'
1001
        );
1002
1003
        $draft = $contentService->createContent($createStruct, [$locationCreateStruct]);
1004
        $mushrooms = $contentService->publishVersion($draft->getVersionInfo());
1005
1006
        $this->refreshSearch($repository);
1007
1008
        $well = [
1009
            'latitude' => 43.756825,
1010
            'longitude' => 15.775074,
1011
        ];
1012
1013
        $query = new LocationQuery(
1014
            [
1015
                'filter' => new Criterion\LogicalAnd(
1016
                    [
1017
                        new Criterion\ContentTypeId($contentType->id),
1018
                        new Criterion\MapLocationDistance(
1019
                            'maplocation',
1020
                            Criterion\Operator::GTE,
1021
                            235,
1022
                            $well['latitude'],
1023
                            $well['longitude']
1024
                        ),
1025
                    ]
1026
                ),
1027
                'offset' => 0,
1028
                'limit' => 10,
1029
                'sortClauses' => [
1030
                    new SortClause\MapLocationDistance(
1031
                        'testtype',
1032
                        'maplocation',
1033
                        $well['latitude'],
1034
                        $well['longitude'],
1035
                        LocationQuery::SORT_DESC
1036
                    ),
1037
                ],
1038
            ]
1039
        );
1040
1041
        $searchService = $repository->getSearchService();
1042
        $result = $searchService->findLocations($query);
1043
1044
        $this->assertEquals(3, $result->totalCount);
1045
        $this->assertEquals(
1046
            $wildBoars->contentInfo->mainLocationId,
1047
            $result->searchHits[2]->valueObject->id
1048
        );
1049
        $this->assertEquals(
1050
            $mushrooms->contentInfo->mainLocationId,
1051
            $result->searchHits[1]->valueObject->id
1052
        );
1053
        $this->assertEquals(
1054
            $tree->contentInfo->mainLocationId,
1055
            $result->searchHits[0]->valueObject->id
1056
        );
1057
    }
1058
1059
    /**
1060
     * Test for the findLocations() method.