mirror of
https://github.com/mruwnik/chicken-master.git
synced 2025-06-08 21:34:43 +02:00
fixes
This commit is contained in:
parent
10d9ebe046
commit
a667957f1c
@ -17,22 +17,23 @@
|
|||||||
(:orders/id (sql/insert! tx :orders (assoc order :user_id user-id))))))
|
(:orders/id (sql/insert! tx :orders (assoc order :user_id user-id))))))
|
||||||
|
|
||||||
|
|
||||||
(defn- structure-order [items]
|
(defn structure-order [items]
|
||||||
{:id (-> items first :orders/id)
|
{:id (-> items first :orders/id)
|
||||||
:notes (-> items first :orders/notes)
|
:notes (-> items first :orders/notes)
|
||||||
:state (-> items first :orders/status keyword)
|
:state (-> items first :orders/status keyword)
|
||||||
:day (-> items first :orders/order_date (.toInstant) str (subs 0 10))
|
:day (-> items first :orders/order_date (.toInstant) str (subs 0 10))
|
||||||
:who {:id (-> items first :customers/id)
|
:who {:id (-> items first :customers/id)
|
||||||
:name (-> items first :customers/name)}
|
:name (-> items first :customers/name)}
|
||||||
:products (into {}
|
:products (->> items
|
||||||
(for [{:keys [order_products/amount products/name]} items]
|
(filter :products/name)
|
||||||
[(keyword name) amount]))})
|
(reduce (fn [coll {:keys [order_products/amount products/name]}]
|
||||||
|
(assoc coll (keyword name) amount)) {}))})
|
||||||
|
|
||||||
(def orders-query
|
(def orders-query
|
||||||
"SELECT o.id, o.notes, o.status, o.order_date, c.id, c.name, p.name, op.amount
|
"SELECT o.id, o.notes, o.status, o.order_date, c.id, c.name, p.name, op.amount
|
||||||
FROM orders o JOIN customers c ON o.customer_id = c.id
|
FROM orders o JOIN customers c ON o.customer_id = c.id
|
||||||
JOIN order_products op ON o.id = op.order_id
|
LEFT OUTER JOIN order_products op ON o.id = op.order_id
|
||||||
JOIN products p on p.id = op.product_id ")
|
LEFT OUTER JOIN products p on p.id = op.product_id ")
|
||||||
|
|
||||||
(defn- get-orders [tx where params]
|
(defn- get-orders [tx where params]
|
||||||
(->> (into [(if where (str orders-query where) orders-query)] params)
|
(->> (into [(if where (str orders-query where) orders-query)] params)
|
||||||
|
@ -15,9 +15,22 @@
|
|||||||
(merge #:orders{:id id :notes notes :status status :order_date date}
|
(merge #:orders{:id id :notes notes :status status :order_date date}
|
||||||
#:customers{:id user_id :name user_name}
|
#:customers{:id user_id :name user_name}
|
||||||
{:products/name (name product) :order_products/amount amount}))
|
{:products/name (name product) :order_products/amount amount}))
|
||||||
(merge #:orders{:id id :notes notes :status status :order_date date}
|
[(merge #:orders{:id id :notes notes :status status :order_date date}
|
||||||
#:customers{:id user_id :name user_name}
|
#:customers{:id user_id :name user_name}
|
||||||
{:products/name nil :order_products/amount nil})))
|
{:products/name nil :order_products/amount nil})]))
|
||||||
|
|
||||||
|
(deftest structure-order-test
|
||||||
|
(testing "basic structure"
|
||||||
|
(is (= (sut/structure-order (raw-order-row))
|
||||||
|
{:id 1, :notes "note", :state :pending, :day "2020-01-01",
|
||||||
|
:who {:id 2, :name "mr blobby"},
|
||||||
|
:products {:eggs 12 :milk 3}})))
|
||||||
|
|
||||||
|
(testing "missing products"
|
||||||
|
(is (= (sut/structure-order (raw-order-row :products nil))
|
||||||
|
{:id 1, :notes "note", :state :pending, :day "2020-01-01",
|
||||||
|
:who {:id 2, :name "mr blobby"},
|
||||||
|
:products {}}))))
|
||||||
|
|
||||||
(deftest test-get-order
|
(deftest test-get-order
|
||||||
(testing "correct values returned"
|
(testing "correct values returned"
|
||||||
|
@ -44,9 +44,9 @@
|
|||||||
(html/input :who "kto" {:required true
|
(html/input :who "kto" {:required true
|
||||||
:default (:name who)
|
:default (:name who)
|
||||||
:list :customers
|
:list :customers
|
||||||
:on-blur #(->> % .-target .-value
|
:on-change (fn [e]
|
||||||
(get-group-products customers)
|
(if-let [products (->> e .-target .-value (get-group-products customers))]
|
||||||
(swap! state assoc :group-products))})
|
(swap! state assoc :group-products products)))})
|
||||||
(into [:datalist {:id :customers}]
|
(into [:datalist {:id :customers}]
|
||||||
(for [cust customers] [:option {:value (:name cust) :id (:id cust)}]))
|
(for [cust customers] [:option {:value (:name cust) :id (:id cust)}]))
|
||||||
[:input {:id :who-id :name :who-id :type :hidden :value (or (:id who) "")}]]))
|
[:input {:id :who-id :name :who-id :type :hidden :value (or (:id who) "")}]]))
|
||||||
|
@ -51,8 +51,7 @@
|
|||||||
|
|
||||||
(re-frame/reg-event-db ::hide-modal (fn [db [_ modal]] (assoc-in db [modal :show] nil)))
|
(re-frame/reg-event-db ::hide-modal (fn [db [_ modal]] (assoc-in db [modal :show] nil)))
|
||||||
(re-frame/reg-event-db ::start-loading (fn [db _] (update db :loading? inc)))
|
(re-frame/reg-event-db ::start-loading (fn [db _] (update db :loading? inc)))
|
||||||
(re-frame/reg-event-db ::stop-loading (fn [db _] (update db :loading? dec)))
|
(re-frame/reg-event-db ::stop-loading (fn [db _] (update db :loading? #(-> % dec (max 0)))))
|
||||||
|
|
||||||
(re-frame/reg-event-fx
|
(re-frame/reg-event-fx
|
||||||
::confirm-action
|
::confirm-action
|
||||||
(fn [_ [_ msg on-confirm-event & params]]
|
(fn [_ [_ msg on-confirm-event & params]]
|
||||||
@ -190,7 +189,7 @@
|
|||||||
|
|
||||||
(re-frame/reg-event-fx
|
(re-frame/reg-event-fx
|
||||||
::fetch-stock
|
::fetch-stock
|
||||||
(fn [_ _]
|
(fn [_ [_ ]]
|
||||||
{:dispatch [::start-loading]
|
{:dispatch [::start-loading]
|
||||||
:http-xhrio (http-get "stock" {} ::process-stock)}))
|
:http-xhrio (http-get "stock" {} ::process-stock)}))
|
||||||
|
|
||||||
|
@ -10,10 +10,11 @@
|
|||||||
(re-frame/reg-sub ::available-customers (fn [db] (:customers db)))
|
(re-frame/reg-sub ::available-customers (fn [db] (:customers db)))
|
||||||
(re-frame/reg-sub ::orders (fn [db] (:orders db)))
|
(re-frame/reg-sub ::orders (fn [db] (:orders db)))
|
||||||
|
|
||||||
(re-frame/reg-sub ::show-edit-modal (fn [db] (-> db :order-edit :show)))
|
(defn- show-modal? [modal db] (and (-> modal db :show) (-> db :loading? zero?)))
|
||||||
(re-frame/reg-sub ::show-stock-modal (fn [db] (-> db :stock :show)))
|
(re-frame/reg-sub ::show-edit-modal (partial show-modal? :order-edit))
|
||||||
|
(re-frame/reg-sub ::show-stock-modal (partial show-modal? :stock))
|
||||||
|
(re-frame/reg-sub ::show-settings-modal (partial show-modal? :settings))
|
||||||
(re-frame/reg-sub ::show-customers-modal (fn [db] (-> db :clients :show)))
|
(re-frame/reg-sub ::show-customers-modal (fn [db] (-> db :clients :show)))
|
||||||
(re-frame/reg-sub ::show-settings-modal (fn [db] (-> db :settings :show)))
|
|
||||||
|
|
||||||
(re-frame/reg-sub ::editted-order (fn [db] (:order-edit db)))
|
(re-frame/reg-sub ::editted-order (fn [db] (:order-edit db)))
|
||||||
|
|
||||||
|
@ -33,7 +33,8 @@
|
|||||||
(set-db {:order-edit {:show true}
|
(set-db {:order-edit {:show true}
|
||||||
:stock {:show true}
|
:stock {:show true}
|
||||||
:clients {:show true}
|
:clients {:show true}
|
||||||
:settings {:show true}})
|
:settings {:show true}
|
||||||
|
:loading? 0})
|
||||||
(is @(rf/subscribe [::subs/show-edit-modal]))
|
(is @(rf/subscribe [::subs/show-edit-modal]))
|
||||||
(is @(rf/subscribe [::subs/show-stock-modal]))
|
(is @(rf/subscribe [::subs/show-stock-modal]))
|
||||||
(is @(rf/subscribe [::subs/show-customers-modal]))
|
(is @(rf/subscribe [::subs/show-customers-modal]))
|
||||||
@ -382,7 +383,7 @@
|
|||||||
(deftest stock-tests
|
(deftest stock-tests
|
||||||
(testing "stock fetched before showing"
|
(testing "stock fetched before showing"
|
||||||
(rf-test/run-test-sync
|
(rf-test/run-test-sync
|
||||||
(set-db {:stock {}})
|
(set-db {:stock {} :loading? 0})
|
||||||
(let [called (atom false)]
|
(let [called (atom false)]
|
||||||
(param-validator ::sut/fetch-stock #(reset! called true))
|
(param-validator ::sut/fetch-stock #(reset! called true))
|
||||||
(rf/dispatch [::sut/show-stock])
|
(rf/dispatch [::sut/show-stock])
|
||||||
@ -461,7 +462,7 @@
|
|||||||
(deftest test-settings
|
(deftest test-settings
|
||||||
(testing "settings get shown"
|
(testing "settings get shown"
|
||||||
(rf-test/run-test-sync
|
(rf-test/run-test-sync
|
||||||
(set-db {:settings {}})
|
(set-db {:settings {} :loading? 0})
|
||||||
(rf/dispatch [::sut/show-settings])
|
(rf/dispatch [::sut/show-settings])
|
||||||
(is @(rf/subscribe [::subs/show-settings-modal]))))
|
(is @(rf/subscribe [::subs/show-settings-modal]))))
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user