diff --git a/main/src/data_test.clj b/main/src/data_test.clj new file mode 100644 index 0000000..0a8d463 --- /dev/null +++ b/main/src/data_test.clj @@ -0,0 +1,37 @@ +; Licensed to the Apache Software Foundation (ASF) under one +; or more contributor license agreements. See the NOTICE file +; distributed with this work for additional information +; regarding copyright ownership. The ASF licenses this file +; to you under the Apache License, Version 2.0 (the +; "License"); you may not use this file except in compliance +; with the License. You may obtain a copy of the License at +; +; http://www.apache.org/licenses/LICENSE-2.0 +; +; Unless required by applicable law or agreed to in writing, software +; distributed under the License is distributed on an "AS IS" BASIS, +; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; See the License for the specific language governing permissions and +; limitations under the License. +(ns data-test + (:require + [clojure.java.io :as io] + [clojure.test :as ct] + [schema.core :as s] + [aero.core :as aero])) + +;TODO: replace schema with spec +(def TestDataSet + {:input s/Any + :expectation s/Any}) + +(defn read-data + [resource-url] + (aero/read-config resource-url)) + +(defmacro defdatatest [name & body] + `(do + (ct/deftest ~name + (let [testdata (sut/read-data (io/resource "should-test-with-data-macro-version.edn")) + {:keys [input expectation]} testdata] + ~body)))) diff --git a/test/resources/should-test-with-data-explicit-version.edn b/test/resources/should-test-with-data-explicit-version.edn new file mode 100644 index 0000000..030c81f --- /dev/null +++ b/test/resources/should-test-with-data-explicit-version.edn @@ -0,0 +1,2 @@ +{:input 1 + :expectation 1} \ No newline at end of file diff --git a/test/resources/should-test-with-data-macro-version.edn b/test/resources/should-test-with-data-macro-version.edn new file mode 100644 index 0000000..030c81f --- /dev/null +++ b/test/resources/should-test-with-data-macro-version.edn @@ -0,0 +1,2 @@ +{:input 1 + :expectation 1} \ No newline at end of file diff --git a/test/resources/simple_aero.edn b/test/resources/simple_aero.edn new file mode 100644 index 0000000..24f3b15 --- /dev/null +++ b/test/resources/simple_aero.edn @@ -0,0 +1 @@ +{:simple "test"} \ No newline at end of file diff --git a/test/resources/tagged_aero.edn b/test/resources/tagged_aero.edn new file mode 100644 index 0000000..dce6b70 --- /dev/null +++ b/test/resources/tagged_aero.edn @@ -0,0 +1,3 @@ +{:to-be-refernced "ref-test" + :key1 #ref [:to-be-refernced] + :key2 #ref [:to-be-refernced]} \ No newline at end of file diff --git a/test/src/data_test_test.clj b/test/src/data_test_test.clj new file mode 100644 index 0000000..f4e8263 --- /dev/null +++ b/test/src/data_test_test.clj @@ -0,0 +1,40 @@ +; Licensed to the Apache Software Foundation (ASF) under one +; or more contributor license agreements. See the NOTICE file +; distributed with this work for additional information +; regarding copyright ownership. The ASF licenses this file +; to you under the Apache License, Version 2.0 (the +; "License"); you may not use this file except in compliance +; with the License. You may obtain a copy of the License at +; +; http://www.apache.org/licenses/LICENSE-2.0 +; +; Unless required by applicable law or agreed to in writing, software +; distributed under the License is distributed on an "AS IS" BASIS, +; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; See the License for the specific language governing permissions and +; limitations under the License. +(ns data-test-test + (:require + [clojure.java.io :as io] + [clojure.test :refer :all] + [data-test :as sut])) + +(deftest should-read-data + (is (= {:simple "test"} + (sut/read-data (io/resource "simple_aero.edn")))) + (is (= {:to-be-refernced "ref-test", :key1 "ref-test", :key2 "ref-test"} + (sut/read-data (io/resource "tagged_aero.edn")))) + ) + +(deftest should-test-with-data-explicit-version + (let [testdata (sut/read-data (io/resource "should-test-with-data-explicit-version.edn")) + {:keys [input expectation]} testdata] + (is (= expectation + input)))) + +(sut/defdatatest should-test-with-data-macro-version + (is (= expectation + input))) + + + \ No newline at end of file