require 'spec_helper'

module GoTransverseTractApi

  RSpec.describe Order::OrderItem do
    before(:each) { http_auth }

    let(:response)  { {a: 'b', c: 'd'} }

    describe ".approve" do
      it "approves an order item" do
        eid = '48406'

        data = {
          approval_date: '2015-09-09',
          type: 'Order Item',
          awaiting_approval: 'true',
          requested_effective_date: '2015-07-09',
          unit_price: '0.00',
          recurring_unit_price: '10.00',
          quantity: '1',
          sequence: '1',
          date_approval: '2015-09-09',
          description: 'sjkadfkak',
          eid: '48406',
          order_items: {
            page_number: '1',
            page_size: '50',
            total_elements: '0',
            element_count: '0',
            total_pages: '0'
            },
            order_item_usage_rules: {
              page_number: '1',
              page_size: '50',
              total_elements: '0',
              element_count: '0',
              total_pages: '0'
            },
            recurring_product_price: {
              from_date: '2013-02-10T010000',
              price_override: 'true',
              type: 'Recurring',
              payment_on_purchase_required: 'false',
              recurring_payment_required: 'false',
              recurrence_period: 'BILLCYCLE',
              eid: '12345',
              price_ranges: {
                page_number: '1',
                page_size: '50',
                total_elements: '1',
                element_count: '1',
                total_pages: '1',
                price_range: {
                  quantity_begin_range: '0.00',
                  price: '10.00',
                  level: '1',
                  eid: '812'
                }
              }
            },
            product: {
              name: 'uvaciahcahoqho',
              description: 'asccaihq gqidiqbckasciahci-cuaca',
              short_description:'sdvsucihc',
              product_type_code: 'SUBSCRIPTION',
              product_state: 'aihaa',
              requires_agreement: 'true',
              serialized: 'false',
              taxable: 'false',
              trial: 'asda',
              default_quantity: '10',
              internal_name: 'ddsfs',
              min_service_resources: '0',
              max_service_resources: '0',
              trial_override: 'false',
              eid: '234',
              product_prices: {
                page_number: '1',
                page_size: '50',
                total_elements: '1',
                element_count: '1',
                total_pages: '1',
                product_price: {
                  from_date: '2013-02-10T010000',
                  price_override: 'true',
                  type: 'Recurring',
                  payment_on_purchase_required: 'false',
                  recurring_payment_required: 'false',
                  recurrence_period: 'BILLCYCLE',
                  eid: '12345',
                  price_ranges: {
                    page_number: '1',
                    page_size: '50',
                    total_elements: '1',
                    element_count: '1',
                    total_pages: '1',
                    price_range: {
                      quantity_begin_range: '0.00',
                      price: '10.00',
                      level: '1',
                      eid: '812'
                    }
                  }
                }
              },
              product_category: {
                name: 'sdfsdfs',
                description: 'wrggdgd',
                status: 'Active',
                eid: '234'
              },
              service_resource_category: {
                name: 'sdgw', 
                type: 'A',
                status: 'sdfsa',
                eid: '345'
              },
              actions: {
                page_number: '1',
                page_size: '50',
                total_elements: '1',
                element_count: '1',
                total_pages: '1',
              },
              product_usage_rules: {
                page_number: '1',
                page_size: '50',
                total_elements: '1',
                element_count: '1',
                total_pages: '1'
              }
            },
            price_list: {
              name: 'sds',
              eid: '564'
            },
            service_resources: {
              page_number: '1',
              page_size: '50',
              total_elements: '1',
              element_count: '1',
              total_pages: '1'
            },
            operation_attributes: {
              page_number: '1',
              page_size: '50',
              total_elements: '1',
              element_count: '1',
              total_pages: '1'
            },
            scheduled_charges: {
              page_number: '1',
              page_size: '50',
              total_elements: '1',
              element_count: '1',
              total_pages: '1'
            }
          }

        allow(subject).to receive(:approve).with(eid, data).and_return(response)
        expect(subject.approve(eid, data)).to eq(response)
      end
    end

    describe ".get_order_item" do
      it "returns an order item structure" do
        order_item = {a: 'b', c: 'd'}
        order_item_struct = { a: {attributes: 'b'}, c: 'd' }

        allow(subject).to receive(:get_order_item).with(order_item).and_return(order_item_struct)
        expect(subject.get_order_item(order_item)).to eq(order_item_struct)
      end
    end

  end
end