diff --git a/project.clj b/project.clj index d70ee02..c33a831 100644 --- a/project.clj +++ b/project.clj @@ -1,6 +1,29 @@ -(defproject com.houseofding/rasql "0.1.0-SNAPSHOT" +(defproject com.houseofding/rasql "0.1.0" :description "A library for converting relational algebra expressions to SQL" :url "https://github.umn.edu/ding0057/rasql" :license {:name "Eclipse Public License" :url "http://www.eclipse.org/legal/epl-v10.html"} - :dependencies [[org.clojure/clojure "1.7.0"]]) + + :dependencies [[org.clojure/clojure "1.7.0"] + [org.clojure/clojurescript "1.7.122" :classifier "aot"]] + + :plugins [[lein-cljsbuild "1.1.0"]] + + :cljsbuild { + :builds [{:id "test" + :source-paths ["src" "test"] + :compiler { + :main rasql.core-test + :output-to "out/core-test.js" + :output-dir "out" + :optimizations :none + :target :nodejs + :cache-analysis true + :source-map true}} + ]}) + + ; :cljsbuild {:builds {:test {:source-paths ["test"] + ; :compiler {:output-to "resources/test/compiled.js" + ; :optimizations :none + ; :target :nodejs}}} + ; :test-commands {"test" ["jrunscript" "-f" "resources/test/compiled.js"]}}) diff --git a/test/rasql/core_test.clj b/test/rasql/core_test.clj deleted file mode 100644 index cd45232..0000000 --- a/test/rasql/core_test.clj +++ /dev/null @@ -1,113 +0,0 @@ -(ns rasql.core-test - (:require [clojure.test :refer :all] - [rasql.core :refer :all]) - (:refer-clojure :exclude [comment])) - -(defrelation post :posts_tbl) -(defrelation comment :comments_tbl) - -;; Projection - -(deftest projection-test - (let [p (->Projection [:a :b]) - actual (to-sql p) - expected "SELECT a, b"] - (is (= expected actual)))) - -(deftest empty-projection-test - (let [p (->Projection []) - actual (to-sql p) - expected "SELECT *"] - (is (= expected actual)))) - -(deftest relation-projection-test - (let [p (->Projection [(:a post)]) - actual (to-sql p) - expected "SELECT \"post\".a"] - (is (= expected actual)))) - -;; Predicates - -(deftest predicate-test - (let [p [:= (:id post) (:post_id comment)] - actual (to-sql p) - expected "(\"post\".id = \"comment\".post_id)"] - (is (= expected actual)))) - - -(deftest relation-predicate-test - (let [p [:= (:a post) (:b post)] - actual (to-sql p) - expected "(\"post\".a = \"post\".b)"] - (is (= expected actual)))) - -;; Joins - -(deftest join-test - (let [j (->Join comment [:= (:id post) (:post_id comment)]) - actual (to-sql j) - expected " JOIN (SELECT * FROM comments_tbl \"comment\") \"comment\" ON (\"post\".id = \"comment\".post_id)"] - (is (= expected actual)))) - -;; Relation - -(deftest relation-test - (let [actual (to-sql post) - expected "(SELECT * FROM posts_tbl \"post\")"] - (is (= expected actual)))) - -(deftest empty-project-test - (let [r (project post []) - actual (to-sql r) - expected "(SELECT * FROM posts_tbl \"post\")"] - (is (= expected actual)))) - -(deftest all-project-test - (let [r (project post [:*]) - actual (to-sql r) - expected "(SELECT * FROM posts_tbl \"post\")"] - (is (= expected actual)))) - -(deftest relation-all-project-test - (let [r (project post [(:* post)]) - actual (to-sql r) - expected "(SELECT \"post\".* FROM posts_tbl \"post\")"] - (is (= expected actual)))) - -(deftest multiple-project-test - (let [r (project post [:a :b :c]) - actual (to-sql r) - expected "(SELECT a, b, c FROM posts_tbl \"post\")"] - (is (= expected actual)))) - -(deftest multiple-relation-column-project-test - (let [r (project post [(:a post) (:b post) :c]) - actual (to-sql r) - expected "(SELECT \"post\".a, \"post\".b, c FROM posts_tbl \"post\")"] - (is (= expected actual)))) - -(deftest relation-select-test - (let [r (select post [:= :title "An awesome post"]) - actual (to-sql r) - expected "(SELECT * FROM posts_tbl \"post\" WHERE (title = 'An awesome post'))"] - (is (= expected actual)))) - -(deftest relation-qualified-select-test - (let [r (select post [:= (:author_id post) 123]) - actual (to-sql r) - expected "(SELECT * FROM posts_tbl \"post\" WHERE (\"post\".author_id = 123))"] - (is (= expected actual)))) - -;; Grouping - -(deftest group-by-test - (let [r (project post [(maximum :id :max_id) (:blah post)]) - actual (to-sql r) - expected "(SELECT max(id) AS max_id, \"post\".blah FROM posts_tbl \"post\" GROUP BY \"post\".blah)"] - (is (= expected actual)))) - -(deftest exclude-group-by-when-single-aggregate-test - (let [r (project post [(maximum :id :max_id)]) - actual (to-sql r) - expected "(SELECT max(id) AS max_id FROM posts_tbl \"post\")"] - (is (= expected actual))))