From b3a4d826b85be3a4a4dc73d7aeaf9316ff266749 Mon Sep 17 00:00:00 2001 From: Will Marshall Date: Wed, 18 Dec 2013 17:05:47 +1100 Subject: [PATCH] Dumping OrderCycle data via :javascript tags instead of ng-init, Angularising the selector stuff --- .../darkswarm/services/order_cycle.js.coffee | 10 ++++------ app/serializers/order_cycle_serializer.rb | 2 +- app/views/shop/_order_cycles.html.haml | 6 ++++-- .../unit/darkswarm/order_cycle_spec.js.coffee | 9 +++++++++ 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/darkswarm/services/order_cycle.js.coffee b/app/assets/javascripts/darkswarm/services/order_cycle.js.coffee index 4c941df9e6..0c941be57e 100644 --- a/app/assets/javascripts/darkswarm/services/order_cycle.js.coffee +++ b/app/assets/javascripts/darkswarm/services/order_cycle.js.coffee @@ -1,9 +1,7 @@ -Shop.factory 'OrderCycle', ($resource, Product) -> +Shop.factory 'OrderCycle', ($resource, Product, orderCycleData) -> class OrderCycle - @order_cycle = { - order_cycle_id: null - } - + @order_cycle = orderCycleData @push_order_cycle: -> - new $resource("/shop/order_cycle").save {order_cycle_id: @order_cycle.order_cycle_id}, -> + new $resource("/shop/order_cycle").save {order_cycle_id: @order_cycle.order_cycle_id}, (order_data)-> + OrderCycle.order_cycle.orders_close_at = order_data.orders_close_at Product.update() diff --git a/app/serializers/order_cycle_serializer.rb b/app/serializers/order_cycle_serializer.rb index 202e7ba0d3..10efb7e165 100644 --- a/app/serializers/order_cycle_serializer.rb +++ b/app/serializers/order_cycle_serializer.rb @@ -1,3 +1,3 @@ class OrderCycleSerializer < ActiveModel::Serializer - attributes :orders_close_at + attributes :orders_close_at, id: :order_cycle_id end diff --git a/app/views/shop/_order_cycles.html.haml b/app/views/shop/_order_cycles.html.haml index 6348ac9003..e629486d46 100644 --- a/app/views/shop/_order_cycles.html.haml +++ b/app/views/shop/_order_cycles.html.haml @@ -12,12 +12,14 @@ %form.custom %strong.avenir Ready for %select.avenir#order_cycle_id{"ng-model" => "order_cycle.order_cycle_id", - "ng-init" => "order_cycle.order_cycle_id = #{current_order_cycle.andand.id || nil}", "ng-change" => "changeOrderCycle()", "ng-options" => "oc.id as oc.time for oc in #{@order_cycles.map {|oc| {time: pickup_time(oc), id: oc.id}}.to_json}"} + :javascript + angular.module('Shop').value('orderCycleData', #{OrderCycleSerializer.new(current_order_cycle).to_json}) + %closing -#%img{src: "/icon/goes/here"} Orders close - %strong= current_order_cycle.andand.orders_close_at.andand.strftime "%A %m" + %strong {{ order_cycle.orders_close_at | date:'EEEE MM'}} diff --git a/spec/javascripts/unit/darkswarm/order_cycle_spec.js.coffee b/spec/javascripts/unit/darkswarm/order_cycle_spec.js.coffee index ed40d6347b..06ae492f99 100644 --- a/spec/javascripts/unit/darkswarm/order_cycle_spec.js.coffee +++ b/spec/javascripts/unit/darkswarm/order_cycle_spec.js.coffee @@ -6,10 +6,12 @@ describe 'OrderCycle service', -> } beforeEach -> + angular.module('Shop').value('orderCycleData', {}) module 'Shop', ($provide)-> $provide.value "Product", mockProduct null # IMPORTANT # You must return null because module() is a bit dumb + inject (_OrderCycle_, _$httpBackend_)-> $httpBackend = _$httpBackend_ OrderCycle = _OrderCycle_ @@ -23,4 +25,11 @@ describe 'OrderCycle service', -> $httpBackend.flush() expect(mockProduct.update).toHaveBeenCalled() + it "updates the orders_close_at attr after update", -> + datestring = "2013-12-20T00:00:00+11:00" + $httpBackend.expectPOST("/shop/order_cycle").respond({orders_close_at: datestring}) + OrderCycle.push_order_cycle() + $httpBackend.flush() + expect(OrderCycle.order_cycle.orders_close_at).toEqual(datestring) +