server/src/tests/Controllers/ThemeControllerTest.php
changeset 474 245b4df137d3
parent 407 2dba812c7ef2
child 537 d2e6ee099125
--- a/server/src/tests/Controllers/ThemeControllerTest.php	Tue Dec 13 23:30:54 2016 +0100
+++ b/server/src/tests/Controllers/ThemeControllerTest.php	Fri Dec 16 17:43:07 2016 +0100
@@ -41,6 +41,11 @@
                                     "order" => [ '_count' => 'desc' ],
                                     "include" => ".*\|bnf\|.*"
                                 ]
+                            ],
+                            "subjects_count" => [
+                                "cardinality" => [
+                                    "field" => "subject.label_code"
+                                ]
                             ]
                         ]
                     ]
@@ -95,6 +100,9 @@
                                 "key" => "arbres|bnf|ark:/12148/cb11934786x",
                                 "doc_count" => 989
                             ] ]
+                        ],
+                        "subjects_count" => [
+                            "value" => 999
                         ]
                     ]
                 ]
@@ -109,7 +117,7 @@
             "http://ark.bnf.fr/ark:/12148/cb11933145f" => ['label' => 'plantes', 'count' => 995  ],
             "http://ark.bnf.fr/ark:/12148/cb11930908q" => ['label' => 'animaux sauvages', 'count' => 989 ],
             "http://ark.bnf.fr/ark:/12148/cb11934786x" => ['label' => 'arbres', 'count' => 989 ]
-        ]]);
+        ], "meta" => ['total' => 999]]);
 
     }
 
@@ -132,6 +140,11 @@
                                     "size" => config('corpusparole.theme_default_limit'),
                                     "order" => [ '_count' => 'desc' ]
                                 ]
+                            ],
+                            "subjects_count" => [
+                                "cardinality" => [
+                                    "field" => "subject.label_code"
+                                ]
                             ]
                         ]
                     ]
@@ -192,6 +205,9 @@
                                 "key" => "arbres|bnf|ark:/12148/cb11934786x",
                                 "doc_count" => 989
                             ] ]
+                        ],
+                        "subjects_count" => [
+                            "value" => 999
                         ]
                     ]
                 ]
@@ -208,7 +224,7 @@
             "http://lexvo.org/id/iso639-3/bzh" => ['label' => 'Breton', 'count' => 992 ],
             "http://ark.bnf.fr/ark:/12148/cb11930908q" => ['label' => 'animaux sauvages', 'count' => 989 ],
             "http://ark.bnf.fr/ark:/12148/cb11934786x" => ['label' => 'arbres', 'count' => 989 ]
-        ]]);
+        ], "meta" => ['total' => 999]]);
 
     }
 
@@ -232,6 +248,11 @@
                                     "order" => [ '_count' => 'desc' ],
                                     "include" => ".*\|lxv\|.*"
                                 ]
+                            ],
+                            "subjects_count" => [
+                                "cardinality" => [
+                                    "field" => "subject.label_code"
+                                ]
                             ]
                         ]
                     ]
@@ -268,6 +289,9 @@
                                 "key" => "Breton|lxv|bzh",
                                 "doc_count" => 992
                             ] ]
+                        ],
+                        "subjects_count" => [
+                            "value" => 999
                         ]
                     ]
                 ]
@@ -276,7 +300,7 @@
         $this->seeJsonEquals(["themes" => [
             "http://lexvo.org/id/iso639-3/fra" => ['label' => 'Français', 'count' => 1002 ],
             "http://lexvo.org/id/iso639-3/bzh" => ['label' => 'Breton', 'count' => 992 ]
-        ]]);
+        ], "meta" => ['total' => 999]]);
 
     }
 
@@ -299,6 +323,11 @@
                                     "order" => $order,
                                     "include" => ".*\|bnf\|.*"
                                 ]
+                            ],
+                            "subjects_count" => [
+                                "cardinality" => [
+                                    "field" => "subject.label_code"
+                                ]
                             ]
                         ]
                     ]
@@ -329,6 +358,9 @@
                         "doc_count_error_upper_bound" => 0,
                         "sum_other_doc_count" => 13678,
                         "buckets" => [  ]
+                    ],
+                    "subjects_count" => [
+                        "value" => 999
                     ]
                 ]
             ]
@@ -398,93 +430,10 @@
                                     "order" => [ '_count' => 'desc' ],
                                     "include" => ".*\|bnf\|.*"
                                 ]
-                            ]
-                        ]
-                    ]
-                ]
-            ]
-        ];
-
-        // This is not normally what should be received, but we test that the limit is respected
-        Es::shouldReceive('search')
-            ->once()
-            ->with($query)
-            ->andReturn([
-                "took" => 27,
-                "timed_out" => false,
-                "_shards" => [
-                    "total" => 1,
-                    "successful" => 1,
-                    "failed" => 0
-                ],
-                "hits" => [
-                    "total" => 3011,
-                    "max_score" => 0.0,
-                    "hits" => [ ]
-                ],
-                "aggregations" => [
-                    "subjects" => [
-                        "doc_count" => 41524,
-                        "subjects" => [
-                            "doc_count_error_upper_bound" => 0,
-                            "sum_other_doc_count" => 13678,
-                            "buckets" => [ [
-                                "key" => "professions|bnf|ark:/12148/cb13318415c",
-                                "doc_count" => 1412
-                            ], [
-                                "key" => "travail non rémunéré|bnf|ark:/12148/cb16604691s",
-                                "doc_count" => 1092
-                            ], [
-                                "key" => "famille|bnf|ark:/12148/cb119339867",
-                                "doc_count" => 1050
-                            ], [
-                                "key" => "oiseaux|bnf|ark:/12148/cb11932889r",
-                                "doc_count" => 1003
-                            ], [
-                                "key" => "météorologie|bnf|ark:/12148/cb11932496x",
-                                "doc_count" => 1001
-                            ], [
-                                "key" => "plantes|bnf|ark:/12148/cb11933145f",
-                                "doc_count" => 995
-                            ], [
-                                "key" => "animaux sauvages|bnf|ark:/12148/cb11930908q",
-                                "doc_count" => 989
-                            ], [
-                                "key" => "arbres|bnf|ark:/12148/cb11934786x",
-                                "doc_count" => 989
-                            ] ]
-                        ]
-                    ]
-                ]
-            ]);
-        $this->get('/api/v1/stats/themes/?limit=3')->assertTrue($this->response->isOk(), $this->response->content());
-        $this->seeJsonEquals(["themes" => [
-            "http://ark.bnf.fr/ark:/12148/cb13318415c" => ['label' => 'professions', 'count' => 1412 ],
-            "http://ark.bnf.fr/ark:/12148/cb16604691s" => ['label' => 'travail non rémunéré', 'count' => 1092 ],
-            "http://ark.bnf.fr/ark:/12148/cb119339867" => ['label' => 'famille', 'count' => 1050 ]
-        ]]);
-
-    }
-
-    public function testIndexIndex() {
-
-        $query = [
-            'index' => env('ELASTICSEARCH_INDEX'),
-            'body' => [
-                'size' => 0,
-                'query' =>[
-                    'match_all' => (object) null
-                ],
-                'aggs' => [
-                    "subjects" => [
-                        "nested" => [ "path" => "subject" ],
-                        "aggs" => [
-                            "subjects" => [
-                                "terms" => [
-                                    "field" => "subject.label_code",
-                                    "size" => 6,
-                                    "order" => [ '_count' => 'desc' ],
-                                    "include" => ".*\|bnf\|.*"
+                            ],
+                            "subjects_count" => [
+                                "cardinality" => [
+                                    "field" => "subject.label_code"
                                 ]
                             ]
                         ]
@@ -541,20 +490,23 @@
                                 "key" => "arbres|bnf|ark:/12148/cb11934786x",
                                 "doc_count" => 989
                             ] ]
+                        ],
+                        "subjects_count" => [
+                            "value" => 999
                         ]
                     ]
                 ]
             ]);
-        $this->get('/api/v1/stats/themes/?limit=3&index=1')->assertTrue($this->response->isOk(), $this->response->content());
+        $this->get('/api/v1/stats/themes/?limit=3')->assertTrue($this->response->isOk(), $this->response->content());
         $this->seeJsonEquals(["themes" => [
-            "http://ark.bnf.fr/ark:/12148/cb11932889r" => ['label' => 'oiseaux', 'count' => 1003 ],
-            "http://ark.bnf.fr/ark:/12148/cb11932496x" => ['label' => 'météorologie', 'count' => 1001 ],
-            "http://ark.bnf.fr/ark:/12148/cb11933145f" => ['label' => 'plantes', 'count' => 995  ]
-        ]]);
+            "http://ark.bnf.fr/ark:/12148/cb13318415c" => ['label' => 'professions', 'count' => 1412 ],
+            "http://ark.bnf.fr/ark:/12148/cb16604691s" => ['label' => 'travail non rémunéré', 'count' => 1092 ],
+            "http://ark.bnf.fr/ark:/12148/cb119339867" => ['label' => 'famille', 'count' => 1050 ]
+        ], "meta" => ['total' => 999]]);
 
     }
 
-    public function testIndexLimitIndex2() {
+    public function testIndexIndex() {
 
         $query = [
             'index' => env('ELASTICSEARCH_INDEX'),
@@ -570,10 +522,15 @@
                             "subjects" => [
                                 "terms" => [
                                     "field" => "subject.label_code",
-                                    "size" => 9,
+                                    "size" => 6,
                                     "order" => [ '_count' => 'desc' ],
                                     "include" => ".*\|bnf\|.*"
                                 ]
+                            ],
+                            "subjects_count" => [
+                                "cardinality" => [
+                                    "field" => "subject.label_code"
+                                ]
                             ]
                         ]
                     ]
@@ -629,6 +586,105 @@
                                 "key" => "arbres|bnf|ark:/12148/cb11934786x",
                                 "doc_count" => 989
                             ] ]
+                        ],
+                        "subjects_count" => [
+                            "value" => 999
+                        ]
+                    ]
+                ]
+            ]);
+        $this->get('/api/v1/stats/themes/?limit=3&index=1')->assertTrue($this->response->isOk(), $this->response->content());
+        $this->seeJsonEquals(["themes" => [
+            "http://ark.bnf.fr/ark:/12148/cb11932889r" => ['label' => 'oiseaux', 'count' => 1003 ],
+            "http://ark.bnf.fr/ark:/12148/cb11932496x" => ['label' => 'météorologie', 'count' => 1001 ],
+            "http://ark.bnf.fr/ark:/12148/cb11933145f" => ['label' => 'plantes', 'count' => 995  ]
+        ], "meta" => ['total' => 999]]);
+
+    }
+
+    public function testIndexLimitIndex2() {
+
+        $query = [
+            'index' => env('ELASTICSEARCH_INDEX'),
+            'body' => [
+                'size' => 0,
+                'query' =>[
+                    'match_all' => (object) null
+                ],
+                'aggs' => [
+                    "subjects" => [
+                        "nested" => [ "path" => "subject" ],
+                        "aggs" => [
+                            "subjects" => [
+                                "terms" => [
+                                    "field" => "subject.label_code",
+                                    "size" => 9,
+                                    "order" => [ '_count' => 'desc' ],
+                                    "include" => ".*\|bnf\|.*"
+                                ]
+                            ],
+                            "subjects_count" => [
+                                "cardinality" => [
+                                    "field" => "subject.label_code"
+                                ]
+                            ]
+                        ]
+                    ]
+                ]
+            ]
+        ];
+
+        // This is not normally what should be received, but we test that the limit is respected
+        Es::shouldReceive('search')
+            ->once()
+            ->with($query)
+            ->andReturn([
+                "took" => 27,
+                "timed_out" => false,
+                "_shards" => [
+                    "total" => 1,
+                    "successful" => 1,
+                    "failed" => 0
+                ],
+                "hits" => [
+                    "total" => 3011,
+                    "max_score" => 0.0,
+                    "hits" => [ ]
+                ],
+                "aggregations" => [
+                    "subjects" => [
+                        "doc_count" => 41524,
+                        "subjects" => [
+                            "doc_count_error_upper_bound" => 0,
+                            "sum_other_doc_count" => 13678,
+                            "buckets" => [ [
+                                "key" => "professions|bnf|ark:/12148/cb13318415c",
+                                "doc_count" => 1412
+                            ], [
+                                "key" => "travail non rémunéré|bnf|ark:/12148/cb16604691s",
+                                "doc_count" => 1092
+                            ], [
+                                "key" => "famille|bnf|ark:/12148/cb119339867",
+                                "doc_count" => 1050
+                            ], [
+                                "key" => "oiseaux|bnf|ark:/12148/cb11932889r",
+                                "doc_count" => 1003
+                            ], [
+                                "key" => "météorologie|bnf|ark:/12148/cb11932496x",
+                                "doc_count" => 1001
+                            ], [
+                                "key" => "plantes|bnf|ark:/12148/cb11933145f",
+                                "doc_count" => 995
+                            ], [
+                                "key" => "animaux sauvages|bnf|ark:/12148/cb11930908q",
+                                "doc_count" => 989
+                            ], [
+                                "key" => "arbres|bnf|ark:/12148/cb11934786x",
+                                "doc_count" => 989
+                            ] ]
+                        ],
+                        "subjects_count" => [
+                            "value" => 999
                         ]
                     ]
                 ]
@@ -637,7 +693,7 @@
         $this->seeJsonEquals(["themes" => [
             "http://ark.bnf.fr/ark:/12148/cb11930908q" => ['label' => 'animaux sauvages', 'count' => 989 ],
             "http://ark.bnf.fr/ark:/12148/cb11934786x" => ['label' => 'arbres', 'count' => 989 ]
-        ]]);
+        ], "meta" => ['total' => 999]]);
     }
 
 }