clj-druid/test/clj_druid/validations_test.clj
2016-03-17 10:56:49 +01:00

167 lines
5.4 KiB
Clojure

(ns clj-druid.validations-test
(:require [clojure.test :refer :all]
[clj-druid.validations :refer :all]))
(def valid-groupby-query
{:queryType :groupBy
:dataSource "sample_datasource"
:granularity :day
:dimensions ["dim1" "dim2"]
:filter {
:type :and
:fields [
{:type :selector
:dimension "sample_dimension1"
:value "sample_value1"}
{:type :or
:fields [{:type :selector
:dimension "sample_dimension2"
:value "sample_value2"}
{:type :selector
:dimension "sample_dimension3"
:value "sample_value3"}]}]}
:aggregations [
{:type :longSum
:name "sample_name1"
:fieldName "sample_fieldName1"}
{:type :doubleSum
:name "sample_name2"
:fieldName "sample_fieldName2"}]
:postAggregations [
{:type :arithmetic
:name "sample_divide"
:fn "/"
:fields [
{:type :fieldAccess
:name "sample_fieldName1"
:fieldName "sample_name1"}
{:type :fieldAccess
:name "sample_fieldName2"
:fieldName "sample_name2"}]}]
:intervals ["2012-01-01T00:00:00.000/2012-01-03T00:00:00.000"]
:having {:type :greaterThan
:aggregation "sample_name1"
:value 0}})
(def valid-search-query
{:queryType :search
:dataSource "sample_datasource"
:granularity :day
:searchDimensions ["dim1" "dim2"]
:query {
:type :insensitive_contains
:value "Ke"}
:sort {:type :lexicographic}
:intervals ["2013-01-01T00:00:00.000/2013-01-03T00:00:00.000"]})
(def valid-segment-metadata-query
{:queryType :segmentMetadata
:dataSource "sample_datasource"
:intervals ["2013-01-01/2014-01-01"]})
(def valid-time-boundary-query
{:queryType :timeBoundary
:dataSource "sample_datasource"
:bound :maxTime})
(def valid-timeseries-query
{:queryType :timeseries
:dataSource "sample_datasource"
:granularity :day
:filter {
:type :and
:fields [
{:type :selector :dimension "sample_dimension1" :value "sample_value1"}
{:type :or
:fields [
{:type :selector :dimension "sample_dimension2" :value "sample_value2"}
{:type :selector :dimension "sample_dimension3" :value "sample_value3"}]}]}
:aggregations [
{:type :longSum :name "sample_name1", :fieldName "sample_fieldName1"}
{:type :doubleSum :name "sample_name2", :fieldName "sample_fieldName2"}]
:postAggregations [
{:type :arithmetic
:name "sample_divide"
:fn "/"
:fields [{:type :fieldAccess :name "sample_name1" :fieldName "sample_fieldName1"}
{:type :fieldAccess :name "sample_name2" :fieldName "sample_fieldName2"}]}]
:intervals ["2012-01-01T00:00:00.000/2012-01-03T00:00:00.000"]})
(def valid-select-query
{:queryType :select
:dataSource "wikipedia"
:dimensions []
:metrics []
:granularity :all
:intervals ["2013-01-01/2013-01-02"]
:filter {:type :spatial
:dimension "test"
:bound {:type :rectangular
:minCoords [1 2]
:maxCoords [3 4]}}
:pagingSpec {:pagingIdentifiers {} :threshold 5}})
(def valid-topN-query
(into valid-timeseries-query {:queryType :topN
:dimension "dim1"
:threshold 5
:metric "count"}))
(def valid-filtered-aggregation
{:queryType :timeseries
:dataSource "dev.supercell"
:granularity :all
:intervals ["2016-03-17T07:30:10.476/2016-03-17T08:30:10.476"]
:filter {:type :selector
:dimension "project_id"
:value "vgteam-TV_Shows"}
:aggregations [{:type :filtered
:filter {:type :selector
:dimension "img-adult"
:value "false"}
:aggregator {:type :filtered
:aggregator {:type :longSum
:name "qualityRows"
:fieldName "count" }
:filter {:type :not
:field {:type :selector
:dimension "quality"
:value nil}}
:name "img-adult->false->qualityRows"}}]})
(deftest test-valid-groupby-query
(is (= (validate-groupby valid-groupby-query)
valid-groupby-query)))
(deftest test-valid-search-query
(is (= (validate-search valid-search-query)
valid-search-query)))
(deftest test-valid-segment-metadata-query
(is (= (validate-segment-metadata valid-segment-metadata-query)
valid-segment-metadata-query)))
(deftest test-valid-time-boundary-query
(is (= (validate-time-boundary valid-time-boundary-query)
valid-time-boundary-query)))
(deftest test-valid-timeseries-query
(is (= (validate-timeseries valid-timeseries-query)
valid-timeseries-query)))
(deftest test-valid-filtered-aggregation
(is (= (validate-timeseries valid-filtered-aggregation)
valid-filtered-aggregation)))
(deftest test-valid-topN-query
(is (= (validate-topN valid-topN-query)
valid-topN-query)))
(deftest test-valid-select-query
(is (= (validate valid-select-query :select)
valid-select-query)))