search_facets_test.go 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454
  1. // Copyright 2012-2015 Oliver Eilhard. All rights reserved.
  2. // Use of this source code is governed by a MIT-license.
  3. // See http://olivere.mit-license.org/license.txt for details.
  4. package elastic
  5. import (
  6. _ "encoding/json"
  7. _ "net/http"
  8. "testing"
  9. "time"
  10. )
  11. func TestSearchFacets(t *testing.T) {
  12. client := setupTestClientAndCreateIndex(t)
  13. tweet1 := tweet{
  14. User: "olivere",
  15. Retweets: 108,
  16. Message: "Welcome to Golang and Elasticsearch.",
  17. Created: time.Date(2012, 12, 12, 17, 38, 34, 0, time.UTC),
  18. }
  19. tweet2 := tweet{
  20. User: "olivere",
  21. Retweets: 0,
  22. Message: "Another unrelated topic.",
  23. Created: time.Date(2012, 10, 10, 8, 12, 03, 0, time.UTC),
  24. }
  25. tweet3 := tweet{
  26. User: "sandrae",
  27. Retweets: 12,
  28. Message: "Cycling is fun.",
  29. Created: time.Date(2011, 11, 11, 10, 58, 12, 0, time.UTC),
  30. }
  31. // Add all documents
  32. _, err := client.Index().Index(testIndexName).Type("tweet").Id("1").BodyJson(&tweet1).Do()
  33. if err != nil {
  34. t.Fatal(err)
  35. }
  36. _, err = client.Index().Index(testIndexName).Type("tweet").Id("2").BodyJson(&tweet2).Do()
  37. if err != nil {
  38. t.Fatal(err)
  39. }
  40. _, err = client.Index().Index(testIndexName).Type("tweet").Id("3").BodyJson(&tweet3).Do()
  41. if err != nil {
  42. t.Fatal(err)
  43. }
  44. _, err = client.Flush().Index(testIndexName).Do()
  45. if err != nil {
  46. t.Fatal(err)
  47. }
  48. // Match all should return all documents
  49. all := NewMatchAllQuery()
  50. // Terms Facet by user name
  51. userFacet := NewTermsFacet().Field("user").Size(10).Order("count")
  52. // Range Facet by retweets
  53. retweetsFacet := NewRangeFacet().Field("retweets").Lt(10).Between(10, 100).Gt(100)
  54. // Histogram Facet by retweets
  55. retweetsHistoFacet := NewHistogramFacet().KeyField("retweets").Interval(100)
  56. // Histogram Facet with time interval by retweets
  57. retweetsTimeHistoFacet := NewHistogramFacet().KeyField("retweets").TimeInterval("1m")
  58. // Date Histogram Facet by creation date
  59. dateHisto := NewDateHistogramFacet().Field("created").Interval("year")
  60. // Date Histogram Facet with Key and Value field by creation date
  61. dateHistoWithKeyValue := NewDateHistogramFacet().
  62. Interval("year").
  63. KeyField("created").
  64. ValueField("retweets")
  65. // Query Facet
  66. queryFacet := NewQueryFacet().Query(NewTermQuery("user", "olivere")).Global(true)
  67. // Range Facet by creation date
  68. dateRangeFacet := NewRangeFacet().Field("created").Lt("2012-01-01").Between("2012-01-01", "2013-01-01").Gt("2013-01-01")
  69. // Range Facet with time.Time by creation date
  70. d20120101 := time.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC)
  71. d20130101 := time.Date(2013, 1, 1, 0, 0, 0, 0, time.UTC)
  72. dateRangeWithTimeFacet := NewRangeFacet().Field("created").
  73. Lt(d20120101).
  74. Between(d20120101, d20130101).
  75. Gt(d20130101)
  76. // Run query
  77. searchResult, err := client.Search().Index(testIndexName).
  78. Query(&all).
  79. Facet("user", userFacet).
  80. Facet("retweets", retweetsFacet).
  81. Facet("retweetsHistogram", retweetsHistoFacet).
  82. Facet("retweetsTimeHisto", retweetsTimeHistoFacet).
  83. Facet("dateHisto", dateHisto).
  84. Facet("createdWithKeyValue", dateHistoWithKeyValue).
  85. Facet("queryFacet", queryFacet).
  86. Facet("dateRangeFacet", dateRangeFacet).
  87. Facet("dateRangeWithTimeFacet", dateRangeWithTimeFacet).
  88. Do()
  89. if err != nil {
  90. t.Fatal(err)
  91. }
  92. if searchResult.Hits == nil {
  93. t.Errorf("expected SearchResult.Hits != nil; got nil")
  94. }
  95. if searchResult.Hits.TotalHits != 3 {
  96. t.Errorf("expected SearchResult.Hits.TotalHits = %d; got %d", 3, searchResult.Hits.TotalHits)
  97. }
  98. if len(searchResult.Hits.Hits) != 3 {
  99. t.Errorf("expected len(SearchResult.Hits.Hits) = %d; got %d", 3, len(searchResult.Hits.Hits))
  100. }
  101. if searchResult.Facets == nil {
  102. t.Errorf("expected SearchResult.Facets != nil; got nil")
  103. }
  104. // Search for non-existent facet field should return (nil, false)
  105. facet, found := searchResult.Facets["no-such-field"]
  106. if found {
  107. t.Errorf("expected SearchResult.Facets.For(...) = %v; got %v", false, found)
  108. }
  109. if facet != nil {
  110. t.Errorf("expected SearchResult.Facets.For(...) = nil; got %v", facet)
  111. }
  112. // Search for existent facet should return (facet, true)
  113. facet, found = searchResult.Facets["user"]
  114. if !found {
  115. t.Errorf("expected searchResult.Facets[\"user\"] = %v; got %v", true, found)
  116. }
  117. if facet == nil {
  118. t.Errorf("expected searchResult.Facets[\"user\"] != nil; got nil")
  119. }
  120. // Check facet details
  121. if facet.Type != "terms" {
  122. t.Errorf("expected searchResult.Facets[\"user\"].Type = %v; got %v", "terms", facet.Type)
  123. }
  124. if facet.Total != 3 {
  125. t.Errorf("expected searchResult.Facets[\"user\"].Total = %v; got %v", 3, facet.Total)
  126. }
  127. if len(facet.Terms) != 2 {
  128. t.Errorf("expected len(searchResult.Facets[\"user\"].Terms) = %v; got %v", 2, len(facet.Terms))
  129. }
  130. // Search for range facet should return (facet, true)
  131. facet, found = searchResult.Facets["retweets"]
  132. if !found {
  133. t.Errorf("expected searchResult.Facets[\"retweets\"] = %v; got %v", true, found)
  134. }
  135. if facet == nil {
  136. t.Errorf("expected searchResult.Facets[\"retweets\"] != nil; got nil")
  137. }
  138. // Check facet details
  139. if facet.Type != "range" {
  140. t.Errorf("expected searchResult.Facets[\"retweets\"].Type = %v; got %v", "range", facet.Type)
  141. }
  142. if len(facet.Ranges) != 3 {
  143. t.Errorf("expected len(searchResult.Facets[\"retweets\"].Ranges) = %v; got %v", 3, len(facet.Ranges))
  144. }
  145. if facet.Ranges[0].Count != 1 {
  146. t.Errorf("expected searchResult.Facets[\"retweets\"][0].Count = %v; got %v", 1, facet.Ranges[0].Count)
  147. }
  148. if facet.Ranges[0].TotalCount != 1 {
  149. t.Errorf("expected searchResult.Facets[\"retweets\"][0].TotalCount = %v; got %v", 1, facet.Ranges[0].TotalCount)
  150. }
  151. if facet.Ranges[0].From != nil {
  152. t.Errorf("expected searchResult.Facets[\"retweets\"][0].From = %v; got %v", nil, facet.Ranges[0].From)
  153. }
  154. if to := facet.Ranges[0].To; to == nil || (*to) != 10.0 {
  155. t.Errorf("expected searchResult.Facets[\"retweets\"][0].To = %v; got %v", 10.0, to)
  156. }
  157. if facet.Ranges[1].Count != 1 {
  158. t.Errorf("expected searchResult.Facets[\"retweets\"][1].Count = %v; got %v", 1, facet.Ranges[1].Count)
  159. }
  160. if facet.Ranges[1].TotalCount != 1 {
  161. t.Errorf("expected searchResult.Facets[\"retweets\"][1].TotalCount = %v; got %v", 1, facet.Ranges[1].TotalCount)
  162. }
  163. if from := facet.Ranges[1].From; from == nil || (*from) != 10.0 {
  164. t.Errorf("expected searchResult.Facets[\"retweets\"][1].From = %v; got %v", 10.0, from)
  165. }
  166. if to := facet.Ranges[1].To; to == nil || (*to) != 100.0 {
  167. t.Errorf("expected searchResult.Facets[\"retweets\"][1].To = %v; got %v", 100.0, facet.Ranges[1].To)
  168. }
  169. if facet.Ranges[2].Count != 1 {
  170. t.Errorf("expected searchResult.Facets[\"retweets\"][2].Count = %v; got %v", 1, facet.Ranges[2].Count)
  171. }
  172. if facet.Ranges[2].TotalCount != 1 {
  173. t.Errorf("expected searchResult.Facets[\"retweets\"][2].TotalCount = %v; got %v", 1, facet.Ranges[2].TotalCount)
  174. }
  175. if from := facet.Ranges[2].From; from == nil || (*from) != 100.0 {
  176. t.Errorf("expected searchResult.Facets[\"retweets\"][2].From = %v; got %v", 100.0, facet.Ranges[2].From)
  177. }
  178. if facet.Ranges[2].To != nil {
  179. t.Errorf("expected searchResult.Facets[\"retweets\"][2].To = %v; got %v", nil, facet.Ranges[2].To)
  180. }
  181. // Search for histogram facet should return (facet, true)
  182. facet, found = searchResult.Facets["retweetsHistogram"]
  183. if !found {
  184. t.Errorf("expected searchResult.Facets[\"retweetsHistogram\"] = %v; got %v", true, found)
  185. }
  186. if facet == nil {
  187. t.Errorf("expected searchResult.Facets[\"retweetsHistogram\"] != nil; got nil")
  188. }
  189. // Check facet details
  190. if facet.Type != "histogram" {
  191. t.Errorf("expected searchResult.Facets[\"retweetsHistogram\"].Type = %v; got %v", "histogram", facet.Type)
  192. }
  193. if len(facet.Entries) != 2 {
  194. t.Errorf("expected len(searchResult.Facets[\"retweetsHistogram\"].Entries) = %v; got %v", 3, len(facet.Entries))
  195. }
  196. if facet.Entries[0].Key.(float64) != 0 {
  197. t.Errorf("expected searchResult.Facets[\"retweetsHistogram\"].Entries[0].Key = %v; got %v", 0, facet.Entries[0].Key)
  198. }
  199. if facet.Entries[0].Count != 2 {
  200. t.Errorf("expected searchResult.Facets[\"retweetsHistogram\"].Entries[0].Count = %v; got %v", 2, facet.Entries[0].Count)
  201. }
  202. if facet.Entries[1].Key.(float64) != 100 {
  203. t.Errorf("expected searchResult.Facets[\"retweetsHistogram\"].Entries[1].Key = %v; got %v", 100, facet.Entries[1].Key)
  204. }
  205. if facet.Entries[1].Count != 1 {
  206. t.Errorf("expected searchResult.Facets[\"retweetsHistogram\"].Entries[1].Count = %v; got %v", 1, facet.Entries[1].Count)
  207. }
  208. // Search for histogram facet with time interval should return (facet, true)
  209. facet, found = searchResult.Facets["retweetsTimeHisto"]
  210. if !found {
  211. t.Errorf("expected searchResult.Facets[\"retweetsTimeHisto\"] = %v; got %v", true, found)
  212. }
  213. if facet == nil {
  214. t.Errorf("expected searchResult.Facets[\"retweetsTimeHisto\"] != nil; got nil")
  215. }
  216. // Search for date histogram facet
  217. facet, found = searchResult.Facets["dateHisto"]
  218. if !found {
  219. t.Errorf("expected searchResult.Facets[\"dateHisto\"] = %v; got %v", true, found)
  220. }
  221. if facet == nil {
  222. t.Errorf("expected searchResult.Facets[\"dateHisto\"] != nil; got nil")
  223. }
  224. if facet.Entries[0].Time != 1293840000000 {
  225. t.Errorf("expected searchResult.Facets[\"dateHisto\"].Entries[0].Time = %v; got %v", 1293840000000, facet.Entries[0].Time)
  226. }
  227. if facet.Entries[0].Count != 1 {
  228. t.Errorf("expected searchResult.Facets[\"dateHisto\"].Entries[0].Count = %v; got %v", 1, facet.Entries[0].Count)
  229. }
  230. if facet.Entries[1].Time != 1325376000000 {
  231. t.Errorf("expected searchResult.Facets[\"dateHisto\"].Entries[1].Time = %v; got %v", 1325376000000, facet.Entries[0].Time)
  232. }
  233. if facet.Entries[1].Count != 2 {
  234. t.Errorf("expected searchResult.Facets[\"dateHisto\"].Entries[1].Count = %v; got %v", 2, facet.Entries[1].Count)
  235. }
  236. // Search for date histogram with key/value fields facet
  237. facet, found = searchResult.Facets["createdWithKeyValue"]
  238. if !found {
  239. t.Errorf("expected searchResult.Facets[\"createdWithKeyValue\"] = %v; got %v", true, found)
  240. }
  241. if facet == nil {
  242. t.Errorf("expected searchResult.Facets[\"createdWithKeyValue\"] != nil; got nil")
  243. }
  244. if len(facet.Entries) != 2 {
  245. t.Errorf("expected len(searchResult.Facets[\"createdWithKeyValue\"].Entries) = %v; got %v", 2, len(facet.Entries))
  246. }
  247. if facet.Entries[0].Time != 1293840000000 {
  248. t.Errorf("expected searchResult.Facets[\"createdWithKeyValue\"].Entries[0].Time = %v; got %v", 1293840000000, facet.Entries[0].Time)
  249. }
  250. if facet.Entries[0].Count != 1 {
  251. t.Errorf("expected searchResult.Facets[\"createdWithKeyValue\"].Entries[0].Count = %v; got %v", 1, facet.Entries[0].Count)
  252. }
  253. if facet.Entries[0].Min.(float64) != 12.0 {
  254. t.Errorf("expected searchResult.Facets[\"createdWithKeyValue\"].Entries[0].Min = %v; got %v", 12.0, facet.Entries[0].Min)
  255. }
  256. if facet.Entries[0].Max.(float64) != 12.0 {
  257. t.Errorf("expected searchResult.Facets[\"createdWithKeyValue\"].Entries[0].Max = %v; got %v", 12.0, facet.Entries[0].Max)
  258. }
  259. if facet.Entries[0].Total != 12.0 {
  260. t.Errorf("expected searchResult.Facets[\"createdWithKeyValue\"].Entries[0].Total = %v; got %v", 12.0, facet.Entries[0].Total)
  261. }
  262. if facet.Entries[0].TotalCount != 1 {
  263. t.Errorf("expected searchResult.Facets[\"createdWithKeyValue\"].Entries[0].TotalCount = %v; got %v", 1, facet.Entries[0].TotalCount)
  264. }
  265. if facet.Entries[0].Mean != 12.0 {
  266. t.Errorf("expected searchResult.Facets[\"createdWithKeyValue\"].Entries[0].Mean = %v; got %v", 12.0, facet.Entries[0].Mean)
  267. }
  268. if facet.Entries[1].Time != 1325376000000 {
  269. t.Errorf("expected searchResult.Facets[\"createdWithKeyValue\"].Entries[1].Time = %v; got %v", 1325376000000, facet.Entries[1].Time)
  270. }
  271. if facet.Entries[1].Count != 2 {
  272. t.Errorf("expected searchResult.Facets[\"createdWithKeyValue\"].Entries[1].Count = %v; got %v", 2, facet.Entries[1].Count)
  273. }
  274. if facet.Entries[1].Min.(float64) != 0.0 {
  275. t.Errorf("expected searchResult.Facets[\"createdWithKeyValue\"].Entries[1].Min = %v; got %v", 0.0, facet.Entries[1].Min)
  276. }
  277. if facet.Entries[1].Max.(float64) != 108.0 {
  278. t.Errorf("expected searchResult.Facets[\"createdWithKeyValue\"].Entries[1].Max = %v; got %v", 108.0, facet.Entries[1].Max)
  279. }
  280. if facet.Entries[1].Total != 108.0 {
  281. t.Errorf("expected searchResult.Facets[\"createdWithKeyValue\"].Entries[1].Total = %v; got %v", 108.0, facet.Entries[1].Total)
  282. }
  283. if facet.Entries[1].TotalCount != 2 {
  284. t.Errorf("expected searchResult.Facets[\"createdWithKeyValue\"].Entries[1].TotalCount = %v; got %v", 2, facet.Entries[1].TotalCount)
  285. }
  286. if facet.Entries[1].Mean != 54.0 {
  287. t.Errorf("expected searchResult.Facets[\"createdWithKeyValue\"].Entries[1].Mean = %v; got %v", 54.0, facet.Entries[1].Mean)
  288. }
  289. // Search for date range facet
  290. facet, found = searchResult.Facets["dateRangeFacet"]
  291. if !found {
  292. t.Errorf("expected searchResult.Facets[\"dateRangeFacet\"] = %v; got %v", true, found)
  293. }
  294. if facet == nil {
  295. t.Errorf("expected searchResult.Facets[\"dateRangeFacet\"] != nil; got nil")
  296. }
  297. if len(facet.Ranges) != 3 {
  298. t.Errorf("expected len(searchResult.Facets[\"dateRangeFacet\"].Ranges) = %v; got %v", 3, len(facet.Ranges))
  299. }
  300. if facet.Ranges[0].From != nil {
  301. t.Fatalf("expected searchResult.Facets[\"dateRangeFacet\"].Ranges[0].From to be nil")
  302. }
  303. if facet.Ranges[0].To == nil {
  304. t.Fatalf("expected searchResult.Facets[\"dateRangeFacet\"].Ranges[0].To to be != nil")
  305. }
  306. if *facet.Ranges[0].To != 1.325376e+12 {
  307. t.Errorf("expected searchResult.Facets[\"dateRangeFacet\"].Ranges[0].To = %v; got %v", 1.325376e+12, *facet.Ranges[0].To)
  308. }
  309. if facet.Ranges[0].ToStr == nil {
  310. t.Fatalf("expected searchResult.Facets[\"dateRangeFacet\"].Ranges[0].ToStr to be != nil")
  311. }
  312. if *facet.Ranges[0].ToStr != "2012-01-01" {
  313. t.Errorf("expected searchResult.Facets[\"dateRangeFacet\"].Ranges[0].ToStr = %v; got %v", "2012-01-01", *facet.Ranges[0].ToStr)
  314. }
  315. if facet.Ranges[1].From == nil {
  316. t.Fatalf("expected searchResult.Facets[\"dateRangeFacet\"].Ranges[1].From to be != nil")
  317. }
  318. if *facet.Ranges[1].From != 1.325376e+12 {
  319. t.Errorf("expected searchResult.Facets[\"dateRangeFacet\"].Ranges[1].From = %v; got %v", 1.325376e+12, *facet.Ranges[1].From)
  320. }
  321. if facet.Ranges[1].FromStr == nil {
  322. t.Fatalf("expected searchResult.Facets[\"dateRangeFacet\"].Ranges[1].FromStr to be != nil")
  323. }
  324. if *facet.Ranges[1].FromStr != "2012-01-01" {
  325. t.Errorf("expected searchResult.Facets[\"dateRangeFacet\"].Ranges[1].FromStr = %v; got %v", "2012-01-01", *facet.Ranges[1].FromStr)
  326. }
  327. if facet.Ranges[1].To == nil {
  328. t.Fatalf("expected searchResult.Facets[\"dateRangeFacet\"].Ranges[1].To to be != nil")
  329. }
  330. if *facet.Ranges[1].To != 1.3569984e+12 {
  331. t.Errorf("expected searchResult.Facets[\"dateRangeFacet\"].Ranges[1].To = %v; got %v", 1.3569984e+12, *facet.Ranges[1].To)
  332. }
  333. if facet.Ranges[1].ToStr == nil {
  334. t.Fatalf("expected searchResult.Facets[\"dateRangeFacet\"].Ranges[1].ToStr to be != nil")
  335. }
  336. if *facet.Ranges[1].ToStr != "2013-01-01" {
  337. t.Errorf("expected searchResult.Facets[\"dateRangeFacet\"].Ranges[1].ToStr = %v; got %v", "2013-01-01", *facet.Ranges[1].ToStr)
  338. }
  339. if facet.Ranges[2].To != nil {
  340. t.Fatalf("expected searchResult.Facets[\"dateRangeFacet\"].Ranges[2].To to be nil")
  341. }
  342. if facet.Ranges[2].From == nil {
  343. t.Fatalf("expected searchResult.Facets[\"dateRangeFacet\"].Ranges[2].From to be != nil")
  344. }
  345. if *facet.Ranges[2].From != 1.3569984e+12 {
  346. t.Errorf("expected searchResult.Facets[\"dateRangeFacet\"].Ranges[2].From = %v; got %v", 1.3569984e+12, *facet.Ranges[2].From)
  347. }
  348. if facet.Ranges[2].FromStr == nil {
  349. t.Fatalf("expected searchResult.Facets[\"dateRangeFacet\"].Ranges[2].FromStr to be != nil")
  350. }
  351. if *facet.Ranges[2].FromStr != "2013-01-01" {
  352. t.Errorf("expected searchResult.Facets[\"dateRangeFacet\"].Ranges[2].FromStr = %v; got %v", "2013-01-01", *facet.Ranges[2].FromStr)
  353. }
  354. // Search for date range facet
  355. facet, found = searchResult.Facets["dateRangeWithTimeFacet"]
  356. if !found {
  357. t.Errorf("expected searchResult.Facets[\"dateRangeWithTimeFacet\"] = %v; got %v", true, found)
  358. }
  359. if facet == nil {
  360. t.Errorf("expected searchResult.Facets[\"dateRangeWithTimeFacet\"] != nil; got nil")
  361. }
  362. if len(facet.Ranges) != 3 {
  363. t.Errorf("expected len(searchResult.Facets[\"dateRangeWithTimeFacet\"].Ranges) = %v; got %v", 3, len(facet.Ranges))
  364. }
  365. if facet.Ranges[0].From != nil {
  366. t.Fatalf("expected searchResult.Facets[\"dateRangeWithTimeFacet\"].Ranges[0].From to be nil")
  367. }
  368. if facet.Ranges[0].To == nil {
  369. t.Fatalf("expected searchResult.Facets[\"dateRangeWithTimeFacet\"].Ranges[0].To to be != nil")
  370. }
  371. if *facet.Ranges[0].To != 1.325376e+12 {
  372. t.Errorf("expected searchResult.Facets[\"dateRangeWithTimeFacet\"].Ranges[0].To = %v; got %v", 1.325376e+12, *facet.Ranges[0].To)
  373. }
  374. if facet.Ranges[0].ToStr == nil {
  375. t.Fatalf("expected searchResult.Facets[\"dateRangeWithTimeFacet\"].Ranges[0].ToStr to be != nil")
  376. }
  377. if *facet.Ranges[0].ToStr != "2012-01-01T00:00:00Z" {
  378. t.Errorf("expected searchResult.Facets[\"dateRangeWithTimeFacet\"].Ranges[0].ToStr = %v; got %v", "2012-01-01T00:00:00Z", *facet.Ranges[0].ToStr)
  379. }
  380. if facet.Ranges[1].From == nil {
  381. t.Fatalf("expected searchResult.Facets[\"dateRangeWithTimeFacet\"].Ranges[1].From to be != nil")
  382. }
  383. if *facet.Ranges[1].From != 1.325376e+12 {
  384. t.Errorf("expected searchResult.Facets[\"dateRangeWithTimeFacet\"].Ranges[1].From = %v; got %v", 1.325376e+12, *facet.Ranges[1].From)
  385. }
  386. if facet.Ranges[1].FromStr == nil {
  387. t.Fatalf("expected searchResult.Facets[\"dateRangeWithTimeFacet\"].Ranges[1].FromStr to be != nil")
  388. }
  389. if *facet.Ranges[1].FromStr != "2012-01-01T00:00:00Z" {
  390. t.Errorf("expected searchResult.Facets[\"dateRangeWithTimeFacet\"].Ranges[1].FromStr = %v; got %v", "2012-01-01T00:00:00Z", *facet.Ranges[1].FromStr)
  391. }
  392. if facet.Ranges[1].To == nil {
  393. t.Fatalf("expected searchResult.Facets[\"dateRangeWithTimeFacet\"].Ranges[1].To to be != nil")
  394. }
  395. if *facet.Ranges[1].To != 1.3569984e+12 {
  396. t.Errorf("expected searchResult.Facets[\"dateRangeWithTimeFacet\"].Ranges[1].To = %v; got %v", 1.3569984e+12, *facet.Ranges[1].To)
  397. }
  398. if facet.Ranges[1].ToStr == nil {
  399. t.Fatalf("expected searchResult.Facets[\"dateRangeWithTimeFacet\"].Ranges[1].ToStr to be != nil")
  400. }
  401. if *facet.Ranges[1].ToStr != "2013-01-01T00:00:00Z" {
  402. t.Errorf("expected searchResult.Facets[\"dateRangeWithTimeFacet\"].Ranges[1].ToStr = %v; got %v", "2013-01-01T00:00:00Z", *facet.Ranges[1].ToStr)
  403. }
  404. if facet.Ranges[2].To != nil {
  405. t.Fatalf("expected searchResult.Facets[\"dateRangeWithTimeFacet\"].Ranges[2].To to be nil")
  406. }
  407. if facet.Ranges[2].From == nil {
  408. t.Fatalf("expected searchResult.Facets[\"dateRangeWithTimeFacet\"].Ranges[2].From to be != nil")
  409. }
  410. if *facet.Ranges[2].From != 1.3569984e+12 {
  411. t.Errorf("expected searchResult.Facets[\"dateRangeWithTimeFacet\"].Ranges[2].From = %v; got %v", 1.3569984e+12, *facet.Ranges[2].From)
  412. }
  413. if facet.Ranges[2].FromStr == nil {
  414. t.Fatalf("expected searchResult.Facets[\"dateRangeWithTimeFacet\"].Ranges[2].FromStr to be != nil")
  415. }
  416. if *facet.Ranges[2].FromStr != "2013-01-01T00:00:00Z" {
  417. t.Errorf("expected searchResult.Facets[\"dateRangeWithTimeFacet\"].Ranges[2].FromStr = %v; got %v", "2013-01-01T00:00:00Z", *facet.Ranges[2].FromStr)
  418. }
  419. }