• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

sleede / fab-manager / #98

pending completion
#98

push

coveralls-ruby

sylvainbx
Merge branch 'dev' for release 5.7.0

1368 of 1368 new or added lines in 161 files covered. (100.0%)

7383 of 12030 relevant lines covered (61.37%)

14.06 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

44.68
/app/controllers/api/cart_controller.rb
1
# frozen_string_literal: true
2

3
# API Controller to manage user's cart
4
class API::CartController < API::ApiController
1✔
5
  include API::OrderConcern
1✔
6

7
  before_action :current_order, except: %i[create]
1✔
8
  before_action :ensure_order, except: %i[create]
1✔
9

10
  def create
1✔
11
    authorize :cart, :create?
×
12
    @order ||= Cart::FindOrCreateService.new(current_user).call(order_token)
×
13
    render 'api/orders/show'
×
14
  end
15

16
  def create_item
1✔
17
    authorize @current_order, policy_class: CartPolicy
7✔
18
    service = Cart::CreateCartItemService.new(@current_order)
7✔
19
    @item = service.create(params)
7✔
20
    if @item.save({ context: @current_order.order_items })
7✔
21
      render 'api/orders/item', status: :created
7✔
22
    else
23
      render json: @item.errors.full_messages, status: :unprocessable_entity
×
24
    end
25
  end
26

27
  def add_item
1✔
28
    authorize @current_order, policy_class: CartPolicy
×
29
    @order = Cart::AddItemService.new.call(@current_order, orderable, cart_params[:quantity])
×
30
    render 'api/orders/show'
×
31
  end
32

33
  def remove_item
1✔
34
    authorize @current_order, policy_class: CartPolicy
×
35
    @order = Cart::RemoveItemService.new.call(@current_order, orderable)
×
36
    render 'api/orders/show'
×
37
  end
38

39
  def set_quantity
1✔
40
    authorize @current_order, policy_class: CartPolicy
×
41
    @order = Cart::SetQuantityService.new.call(@current_order, orderable, cart_params[:quantity])
×
42
    render 'api/orders/show'
×
43
  end
44

45
  def set_offer
1✔
46
    authorize CartContext.new(params[:customer_id], cart_params[:is_offered])
1✔
47
    @order = Cart::SetOfferService.new.call(@current_order, orderable, cart_params[:is_offered])
×
48
    render 'api/orders/show'
×
49
  end
50

51
  def refresh_item
1✔
52
    authorize @current_order, policy_class: CartPolicy
×
53
    @order = Cart::RefreshItemService.new.call(@current_order, orderable)
×
54
    render 'api/orders/show'
×
55
  end
56

57
  def validate
1✔
58
    authorize @current_order, policy_class: CartPolicy
×
59
    @order_errors = Cart::CheckCartService.new.call(@current_order)
×
60
    render json: @order_errors
×
61
  end
62

63
  def set_customer
1✔
64
    authorize @current_order, policy_class: CartPolicy
×
65
    customer = User.find(params[:user_id])
×
66
    @order = Cart::SetCustomerService.new(current_user).call(@current_order, customer)
×
67
    render 'api/orders/show'
×
68
  end
69

70
  private
1✔
71

72
  def orderable
1✔
73
    params[:orderable_type].classify.constantize.find(cart_params[:orderable_id])
×
74
  end
75
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc