netsuite 0.2.6 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +3 -0
- data/Gemfile +2 -0
- data/README.md +132 -54
- data/lib/netsuite.rb +123 -76
- data/lib/netsuite/actions/add.rb +1 -0
- data/lib/netsuite/actions/delete.rb +1 -0
- data/lib/netsuite/actions/get.rb +1 -0
- data/lib/netsuite/actions/get_all.rb +67 -0
- data/lib/netsuite/actions/get_list.rb +2 -1
- data/lib/netsuite/actions/get_select_value.rb +1 -0
- data/lib/netsuite/actions/initialize.rb +1 -0
- data/lib/netsuite/actions/login.rb +2 -0
- data/lib/netsuite/actions/search.rb +3 -2
- data/lib/netsuite/actions/update.rb +18 -0
- data/lib/netsuite/actions/upsert.rb +1 -0
- data/lib/netsuite/actions/upsert_list.rb +114 -0
- data/lib/netsuite/configuration.rb +5 -0
- data/lib/netsuite/namespaces/file_cabinet.rb +11 -0
- data/lib/netsuite/namespaces/list_emp.rb +12 -0
- data/lib/netsuite/namespaces/list_mkt.rb +12 -0
- data/lib/netsuite/namespaces/list_website.rb +11 -0
- data/lib/netsuite/namespaces/tran_invt.rb +11 -0
- data/lib/netsuite/records/accounting_period.rb +1 -1
- data/lib/netsuite/records/assembly_item.rb +10 -4
- data/lib/netsuite/records/billing_schedule.rb +33 -0
- data/lib/netsuite/records/billing_schedule_milestone.rb +28 -0
- data/lib/netsuite/records/billing_schedule_milestone_list.rb +33 -0
- data/lib/netsuite/records/billing_schedule_recurrence.rb +28 -0
- data/lib/netsuite/records/billing_schedule_recurrence_list.rb +33 -0
- data/lib/netsuite/records/bin.rb +22 -0
- data/lib/netsuite/records/campaign.rb +28 -0
- data/lib/netsuite/records/cash_refund.rb +1 -1
- data/lib/netsuite/records/classification.rb +1 -1
- data/lib/netsuite/records/contact.rb +1 -1
- data/lib/netsuite/records/contact_access_roles.rb +14 -0
- data/lib/netsuite/records/contact_access_roles_list.rb +9 -0
- data/lib/netsuite/records/custom_field.rb +2 -1
- data/lib/netsuite/records/custom_field_list.rb +23 -4
- data/lib/netsuite/records/custom_list.rb +27 -0
- data/lib/netsuite/records/custom_list_custom_value.rb +14 -0
- data/lib/netsuite/records/custom_list_custom_value_list.rb +13 -0
- data/lib/netsuite/records/custom_record.rb +1 -1
- data/lib/netsuite/records/custom_record_type.rb +1 -1
- data/lib/netsuite/records/customer.rb +4 -4
- data/lib/netsuite/records/customer_addressbook.rb +8 -5
- data/lib/netsuite/records/customer_addressbook_list.rb +13 -1
- data/lib/netsuite/records/customer_deposit.rb +3 -2
- data/lib/netsuite/records/customer_payment.rb +1 -1
- data/lib/netsuite/records/customer_refund.rb +1 -1
- data/lib/netsuite/records/department.rb +4 -2
- data/lib/netsuite/records/deposit.rb +1 -1
- data/lib/netsuite/records/deposit_cash_back.rb +2 -2
- data/lib/netsuite/records/deposit_other.rb +2 -2
- data/lib/netsuite/records/discount_item.rb +32 -0
- data/lib/netsuite/records/employee.rb +20 -0
- data/lib/netsuite/records/file.rb +28 -0
- data/lib/netsuite/records/inventory_assignment.rb +24 -0
- data/lib/netsuite/records/inventory_assignment_list.rb +32 -0
- data/lib/netsuite/records/inventory_detail.rb +18 -0
- data/lib/netsuite/records/inventory_transfer.rb +29 -0
- data/lib/netsuite/records/inventory_transfer_inventory.rb +21 -0
- data/lib/netsuite/records/inventory_transfer_inventory_list.rb +33 -0
- data/lib/netsuite/records/item_fulfillment.rb +1 -1
- data/lib/netsuite/records/item_fulfillment_item_list.rb +3 -21
- data/lib/netsuite/records/item_member.rb +21 -0
- data/lib/netsuite/records/journal_entry.rb +1 -1
- data/lib/netsuite/records/kit_item.rb +1 -1
- data/lib/netsuite/records/location.rb +3 -1
- data/lib/netsuite/records/member_list.rb +32 -0
- data/lib/netsuite/records/non_inventory_sale_item.rb +4 -1
- data/lib/netsuite/records/partner.rb +21 -0
- data/lib/netsuite/records/promotion_code.rb +38 -0
- data/lib/netsuite/records/record_ref_list.rb +40 -0
- data/lib/netsuite/records/role_list.rb +25 -0
- data/lib/netsuite/records/sales_order.rb +6 -2
- data/lib/netsuite/records/sales_tax_item.rb +32 -0
- data/lib/netsuite/records/site_category.rb +33 -0
- data/lib/netsuite/records/subsidiary.rb +38 -0
- data/lib/netsuite/records/tax_type.rb +22 -0
- data/lib/netsuite/records/term.rb +1 -1
- data/lib/netsuite/records/units_type.rb +25 -0
- data/lib/netsuite/records/units_type_uom.rb +20 -0
- data/lib/netsuite/records/units_type_uom_list.rb +33 -0
- data/lib/netsuite/records/work_order.rb +38 -0
- data/lib/netsuite/records/work_order_item.rb +31 -0
- data/lib/netsuite/records/work_order_item_list.rb +31 -0
- data/lib/netsuite/support/actions.rb +4 -0
- data/lib/netsuite/support/base.rb +21 -0
- data/lib/netsuite/support/country.rb +273 -0
- data/lib/netsuite/support/search_result.rb +4 -0
- data/lib/netsuite/support/sublist.rb +54 -0
- data/lib/netsuite/version.rb +1 -1
- data/spec/netsuite/actions/search_spec.rb +1 -1
- data/spec/netsuite/actions/update_spec.rb +62 -31
- data/spec/netsuite/actions/upsert_list_spec.rb +112 -0
- data/spec/netsuite/records/account_spec.rb +4 -4
- data/spec/netsuite/records/accounting_period_spec.rb +4 -4
- data/spec/netsuite/records/assembly_item_spec.rb +38 -0
- data/spec/netsuite/records/billing_schedule_milestone_list_spec.rb +24 -0
- data/spec/netsuite/records/billing_schedule_milestone_spec.rb +51 -0
- data/spec/netsuite/records/billing_schedule_recurrence_list_spec.rb +24 -0
- data/spec/netsuite/records/billing_schedule_recurrence_spec.rb +49 -0
- data/spec/netsuite/records/billing_schedule_spec.rb +164 -0
- data/spec/netsuite/records/campaign_spec.rb +43 -0
- data/spec/netsuite/records/cash_refund_spec.rb +1 -1
- data/spec/netsuite/records/classification_spec.rb +2 -2
- data/spec/netsuite/records/credit_memo_spec.rb +4 -4
- data/spec/netsuite/records/custom_field_list_spec.rb +10 -0
- data/spec/netsuite/records/custom_list_spec.rb +21 -0
- data/spec/netsuite/records/custom_record_spec.rb +5 -5
- data/spec/netsuite/records/custom_record_type_spec.rb +5 -5
- data/spec/netsuite/records/customer_addressbook_list_spec.rb +19 -1
- data/spec/netsuite/records/customer_addressbook_spec.rb +42 -13
- data/spec/netsuite/records/customer_payment_spec.rb +4 -4
- data/spec/netsuite/records/customer_refund_spec.rb +4 -4
- data/spec/netsuite/records/customer_spec.rb +80 -6
- data/spec/netsuite/records/department_spec.rb +4 -4
- data/spec/netsuite/records/deposit_spec.rb +22 -4
- data/spec/netsuite/records/discount_item_spec.rb +124 -0
- data/spec/netsuite/records/inventory_item_spec.rb +4 -4
- data/spec/netsuite/records/inventory_transfer_spec.rb +58 -0
- data/spec/netsuite/records/invoice_spec.rb +4 -4
- data/spec/netsuite/records/job_spec.rb +7 -7
- data/spec/netsuite/records/journal_entry_spec.rb +5 -5
- data/spec/netsuite/records/non_inventory_sale_item_spec.rb +4 -4
- data/spec/netsuite/records/payment_method_spec.rb +1 -1
- data/spec/netsuite/records/pomo_code_spec.rb +40 -0
- data/spec/netsuite/records/sales_order_spec.rb +18 -18
- data/spec/netsuite/records/sales_tax_item_spec.rb +30 -0
- data/spec/netsuite/records/service_sale_item_spec.rb +4 -4
- data/spec/netsuite/records/site_category_spec.rb +51 -0
- data/spec/netsuite/records/subsidiary_spec.rb +25 -0
- data/spec/netsuite/records/support_case_spec.rb +8 -8
- data/spec/netsuite/records/tax_type_spec.rb +11 -0
- data/spec/netsuite/records/term_spec.rb +4 -4
- data/spec/netsuite/records/units_type_spec.rb +33 -0
- data/spec/netsuite/records/units_type_uom_list_spec.rb +23 -0
- data/spec/netsuite/records/units_type_uom_spec.rb +14 -0
- data/spec/netsuite/records/work_order_item_list_spec.rb +26 -0
- data/spec/netsuite/records/work_order_item_spec.rb +45 -0
- data/spec/netsuite/records/work_order_spec.rb +92 -0
- data/spec/netsuite/support/record_refs_spec.rb +1 -1
- data/spec/netsuite/support/sublist_spec.rb +36 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/support/fixtures/update/update_customer_error.xml +21 -0
- data/spec/support/fixtures/update/update_customer_multiple_errors.xml +25 -0
- data/spec/support/fixtures/upsert_list/upsert_list_customers.xml +21 -0
- data/spec/support/fixtures/upsert_list/upsert_list_one_customer.xml +17 -0
- data/spec/support/fixtures/upsert_list/upsert_list_with_errors.xml +32 -0
- data/spec/support/read_only_field_matcher.rb +1 -1
- metadata +115 -5
- checksums.yaml +0 -15
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe NetSuite::Records::BillingScheduleRecurrence do
|
|
4
|
+
let(:recurrence) { NetSuite::Records::BillingScheduleRecurrence.new }
|
|
5
|
+
|
|
6
|
+
it 'has the right fields' do
|
|
7
|
+
[
|
|
8
|
+
:amount, :count, :recurrence_date, :recurrence_id,
|
|
9
|
+
:relative_to_previous, :units
|
|
10
|
+
].each do |field|
|
|
11
|
+
recurrence.should have_field(field)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it 'has the right record_refs' do
|
|
16
|
+
[
|
|
17
|
+
:payment_terms
|
|
18
|
+
].each do |record_ref|
|
|
19
|
+
recurrence.should have_record_ref(record_ref)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it 'can initialize from a record' do
|
|
24
|
+
record = NetSuite::Records::BillingScheduleRecurrence.new(:amount => 10)
|
|
25
|
+
recurrence = NetSuite::Records::BillingScheduleRecurrence.new(record)
|
|
26
|
+
recurrence.should be_kind_of(NetSuite::Records::BillingScheduleRecurrence)
|
|
27
|
+
recurrence.amount.should eql(10)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe '#to_record' do
|
|
31
|
+
before do
|
|
32
|
+
recurrence.amount = 10
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it 'can represent itself as a SOAP record' do
|
|
36
|
+
record = {
|
|
37
|
+
'listAcct:amount' => 10
|
|
38
|
+
}
|
|
39
|
+
recurrence.to_record.should eql(record)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
describe '#record_type' do
|
|
44
|
+
it 'returns a string of the SOAP record type' do
|
|
45
|
+
recurrence.record_type.should eql('listAcct:BillingScheduleRecurrence')
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
end
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe NetSuite::Records::BillingSchedule do
|
|
4
|
+
let(:billing_schedule) { NetSuite::Records::BillingSchedule.new }
|
|
5
|
+
|
|
6
|
+
it 'has all the right fields' do
|
|
7
|
+
[
|
|
8
|
+
:bill_for_actuals, :day_period, :frequency, :in_arrears, :initial_amount, :is_inactive,
|
|
9
|
+
:is_public, :month_dom, :month_dow, :month_dowim, :month_mode, :name,
|
|
10
|
+
:number_remaining, :recurrence_dow_mask_list, :repeat_every,
|
|
11
|
+
:schedule_type, :series_start_date, :year_dom, :year_dow,
|
|
12
|
+
:year_dowim, :year_dowim_month, :year_mode, :year_month
|
|
13
|
+
].each do |field|
|
|
14
|
+
billing_schedule.should have_field(field)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it 'has all the right record refs' do
|
|
19
|
+
[
|
|
20
|
+
:initial_terms, :project, :recurrence_terms, :transaction
|
|
21
|
+
].each do |record_ref|
|
|
22
|
+
billing_schedule.should have_record_ref(record_ref)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe '#milestone_list' do
|
|
27
|
+
it 'can be set from attributes' do
|
|
28
|
+
attributes = {
|
|
29
|
+
:comments => "comment"
|
|
30
|
+
}
|
|
31
|
+
billing_schedule.milestone_list.milestone = attributes
|
|
32
|
+
billing_schedule.milestone_list.should be_kind_of(NetSuite::Records::BillingScheduleMilestoneList)
|
|
33
|
+
billing_schedule.milestone_list.milestones.length.should eql(1)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
describe '#recurrence_list' do
|
|
38
|
+
it 'can be set from attributes' do
|
|
39
|
+
attributes = {
|
|
40
|
+
:amount => 10
|
|
41
|
+
}
|
|
42
|
+
billing_schedule.recurrence_list.recurrence = attributes
|
|
43
|
+
billing_schedule.recurrence_list.should be_kind_of(NetSuite::Records::BillingScheduleRecurrenceList)
|
|
44
|
+
billing_schedule.recurrence_list.recurrences.length.should eql(1)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe '.get' do
|
|
49
|
+
context 'when the response is successful' do
|
|
50
|
+
let(:response) { NetSuite::Response.new(:success => true, :body => { :name => 'Billing Scheduleing 1' }) }
|
|
51
|
+
|
|
52
|
+
it 'returns a Billing Schedule instance populated with the data from the response object' do
|
|
53
|
+
NetSuite::Actions::Get.should_receive(:call).with([NetSuite::Records::BillingSchedule, {:external_id => 1}], {}).and_return(response)
|
|
54
|
+
billing_schedule = NetSuite::Records::BillingSchedule.get(:external_id => 1)
|
|
55
|
+
billing_schedule.should be_kind_of(NetSuite::Records::BillingSchedule)
|
|
56
|
+
billing_schedule.name.should eql('Billing Scheduleing 1')
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
context 'when the response is unsuccessful' do
|
|
61
|
+
let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
|
|
62
|
+
|
|
63
|
+
it 'raises a RecordNotFound exception' do
|
|
64
|
+
NetSuite::Actions::Get.should_receive(:call).with([NetSuite::Records::BillingSchedule, {:external_id => 1}], {}).and_return(response)
|
|
65
|
+
lambda {
|
|
66
|
+
NetSuite::Records::BillingSchedule.get(:external_id => 1)
|
|
67
|
+
}.should raise_error(NetSuite::RecordNotFound,
|
|
68
|
+
/NetSuite::Records::BillingSchedule with OPTIONS=(.*) could not be found/)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
describe ".search" do
|
|
74
|
+
context 'when the response is successful' do
|
|
75
|
+
|
|
76
|
+
it 'returns a Billing Schedule instance populated with the data from the response object' do
|
|
77
|
+
body = {
|
|
78
|
+
total_records: 2,
|
|
79
|
+
record_list: {
|
|
80
|
+
record: [
|
|
81
|
+
{:bill_for_actuals => true},
|
|
82
|
+
{:bill_for_actuals => false}
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
allow(NetSuite::Actions::Search).to receive(:call).with(
|
|
88
|
+
[NetSuite::Records::BillingSchedule, {:external_id => 1}], {}
|
|
89
|
+
).and_return(
|
|
90
|
+
NetSuite::Response.new(:success => true, :body => body)
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
search_result = NetSuite::Records::BillingSchedule.search(:external_id => 1)
|
|
94
|
+
|
|
95
|
+
expect(search_result).to be_a NetSuite::Support::SearchResult
|
|
96
|
+
expect(search_result.total_records).to eq 2
|
|
97
|
+
|
|
98
|
+
schd1, schd2 = search_result.results
|
|
99
|
+
|
|
100
|
+
expect(schd1).to be_a NetSuite::Records::BillingSchedule
|
|
101
|
+
expect(schd1.bill_for_actuals).to eq true
|
|
102
|
+
|
|
103
|
+
expect(schd2).to be_a NetSuite::Records::BillingSchedule
|
|
104
|
+
expect(schd2.bill_for_actuals).to eq false
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
describe '#add' do
|
|
110
|
+
let(:test_data) { { :bill_for_actuals => true, :day_period => 7 } }
|
|
111
|
+
|
|
112
|
+
context 'when the response is successful' do
|
|
113
|
+
let(:response) { NetSuite::Response.new(:success => true, :body => { :internal_id => '1' }) }
|
|
114
|
+
|
|
115
|
+
it 'returns true' do
|
|
116
|
+
billing_schedule = NetSuite::Records::BillingSchedule.new(test_data)
|
|
117
|
+
NetSuite::Actions::Add.should_receive(:call).
|
|
118
|
+
with([billing_schedule], {}).
|
|
119
|
+
and_return(response)
|
|
120
|
+
billing_schedule.add.should be_truthy
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
context 'when the response is unsuccessful' do
|
|
125
|
+
let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
|
|
126
|
+
|
|
127
|
+
it 'returns false' do
|
|
128
|
+
billing_schedule = NetSuite::Records::BillingSchedule.new(test_data)
|
|
129
|
+
NetSuite::Actions::Add.should_receive(:call).
|
|
130
|
+
with([billing_schedule], {}).
|
|
131
|
+
and_return(response)
|
|
132
|
+
billing_schedule.add.should be_falsey
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
describe '#delete' do
|
|
138
|
+
let(:test_data) { { :internal_id => '1' } }
|
|
139
|
+
|
|
140
|
+
context 'when the response is successful' do
|
|
141
|
+
let(:response) { NetSuite::Response.new(:success => true, :body => { :internal_id => '1' }) }
|
|
142
|
+
|
|
143
|
+
it 'returns true' do
|
|
144
|
+
billing_schedule = NetSuite::Records::BillingSchedule.new(test_data)
|
|
145
|
+
NetSuite::Actions::Delete.should_receive(:call).
|
|
146
|
+
with([billing_schedule], {}).
|
|
147
|
+
and_return(response)
|
|
148
|
+
billing_schedule.delete.should be_truthy
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
context 'when the response is unsuccessful' do
|
|
153
|
+
let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
|
|
154
|
+
|
|
155
|
+
it 'returns false' do
|
|
156
|
+
billing_schedule = NetSuite::Records::BillingSchedule.new(test_data)
|
|
157
|
+
NetSuite::Actions::Delete.should_receive(:call).
|
|
158
|
+
with([billing_schedule], {}).
|
|
159
|
+
and_return(response)
|
|
160
|
+
billing_schedule.delete.should be_falsey
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe NetSuite::Records::Campaign do
|
|
4
|
+
let(:campaign) { NetSuite::Records::Campaign.new }
|
|
5
|
+
|
|
6
|
+
it 'has all the right fields' do
|
|
7
|
+
[ :audience, :base_cost, :campaign_direct_mail_list, :campaign_email_list,
|
|
8
|
+
:campaign_event_list, :campaign_id, :category, :conv_cost_per_customer, :conversions,
|
|
9
|
+
:cost, :cost_per_customer, :end_date, :event_response_list, :expected_revenue,
|
|
10
|
+
:family, :is_inactive, :item_list, :keyword, :leads_generated, :message,
|
|
11
|
+
:offer, :owner, :profit, :promotion_code, :roi, :search_engine, :start_date, :title,
|
|
12
|
+
:total_revenue, :unique_visitors, :url, :vertical
|
|
13
|
+
].each do |field|
|
|
14
|
+
campaign.should have_field(field)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe '.get' do
|
|
19
|
+
context 'when the response is successful' do
|
|
20
|
+
let(:response) { NetSuite::Response.new(:success => true, :body => { :message => 'Message 1' }) }
|
|
21
|
+
|
|
22
|
+
it 'returns a Campaign instance populated with the data from the response object' do
|
|
23
|
+
NetSuite::Actions::Get.should_receive(:call).with([NetSuite::Records::Campaign, {:external_id => 1}], {}).and_return(response)
|
|
24
|
+
campaign = NetSuite::Records::Campaign.get(:external_id => 1)
|
|
25
|
+
campaign.should be_kind_of(NetSuite::Records::Campaign)
|
|
26
|
+
campaign.message.should eql('Message 1')
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
context 'when the response is unsuccessful' do
|
|
31
|
+
let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
|
|
32
|
+
|
|
33
|
+
it 'raises a RecordNotFound exception' do
|
|
34
|
+
NetSuite::Actions::Get.should_receive(:call).with([NetSuite::Records::Campaign, {:external_id => 1}], {}).and_return(response)
|
|
35
|
+
lambda {
|
|
36
|
+
NetSuite::Records::Campaign.get(:external_id => 1)
|
|
37
|
+
}.should raise_error(NetSuite::RecordNotFound,
|
|
38
|
+
/NetSuite::Records::Campaign with OPTIONS=(.*) could not be found/)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
|
@@ -46,7 +46,7 @@ describe NetSuite::Records::Classification do
|
|
|
46
46
|
NetSuite::Actions::Delete.should_receive(:call).
|
|
47
47
|
with([classification], {}).
|
|
48
48
|
and_return(response)
|
|
49
|
-
classification.delete.should
|
|
49
|
+
classification.delete.should be_truthy
|
|
50
50
|
end
|
|
51
51
|
end
|
|
52
52
|
|
|
@@ -58,7 +58,7 @@ describe NetSuite::Records::Classification do
|
|
|
58
58
|
NetSuite::Actions::Delete.should_receive(:call).
|
|
59
59
|
with([classification], {}).
|
|
60
60
|
and_return(response)
|
|
61
|
-
classification.delete.should
|
|
61
|
+
classification.delete.should be_falsey
|
|
62
62
|
end
|
|
63
63
|
end
|
|
64
64
|
end
|
|
@@ -143,7 +143,7 @@ describe NetSuite::Records::CreditMemo do
|
|
|
143
143
|
NetSuite::Actions::Add.should_receive(:call).
|
|
144
144
|
with([memo], {}).
|
|
145
145
|
and_return(response)
|
|
146
|
-
memo.add.should
|
|
146
|
+
memo.add.should be_truthy
|
|
147
147
|
end
|
|
148
148
|
end
|
|
149
149
|
|
|
@@ -155,7 +155,7 @@ describe NetSuite::Records::CreditMemo do
|
|
|
155
155
|
NetSuite::Actions::Add.should_receive(:call).
|
|
156
156
|
with([memo], {}).
|
|
157
157
|
and_return(response)
|
|
158
|
-
memo.add.should
|
|
158
|
+
memo.add.should be_falsey
|
|
159
159
|
end
|
|
160
160
|
end
|
|
161
161
|
end
|
|
@@ -171,7 +171,7 @@ describe NetSuite::Records::CreditMemo do
|
|
|
171
171
|
NetSuite::Actions::Delete.should_receive(:call).
|
|
172
172
|
with([memo], {}).
|
|
173
173
|
and_return(response)
|
|
174
|
-
memo.delete.should
|
|
174
|
+
memo.delete.should be_truthy
|
|
175
175
|
end
|
|
176
176
|
end
|
|
177
177
|
|
|
@@ -183,7 +183,7 @@ describe NetSuite::Records::CreditMemo do
|
|
|
183
183
|
NetSuite::Actions::Delete.should_receive(:call).
|
|
184
184
|
with([memo], {}).
|
|
185
185
|
and_return(response)
|
|
186
|
-
memo.delete.should
|
|
186
|
+
memo.delete.should be_falsey
|
|
187
187
|
end
|
|
188
188
|
end
|
|
189
189
|
end
|
|
@@ -47,6 +47,11 @@ describe NetSuite::Records::CustomFieldList do
|
|
|
47
47
|
:type => 'SelectCustomFieldRef',
|
|
48
48
|
:value => NetSuite::Records::CustomRecordRef.new(:internal_id => 13, :name => "The Name")
|
|
49
49
|
)
|
|
50
|
+
list.custom_fields << NetSuite::Records::CustomField.new(
|
|
51
|
+
:script_id => 'custbody_accountclassification',
|
|
52
|
+
:type => 'SelectCustomFieldRef',
|
|
53
|
+
:value => NetSuite::Records::CustomRecordRef.new(:internal_id => 11, :name => "The Game")
|
|
54
|
+
)
|
|
50
55
|
end
|
|
51
56
|
|
|
52
57
|
it 'can represent itself as a SOAP record' do
|
|
@@ -61,6 +66,11 @@ describe NetSuite::Records::CustomFieldList do
|
|
|
61
66
|
'@internalId' => 'custbody_salesclassification',
|
|
62
67
|
'@xsi:type' => 'SelectCustomFieldRef',
|
|
63
68
|
"platformCore:value"=>{"platformCore:name"=>"The Name", :@internalId=>13}
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
'@scriptId' => 'custbody_accountclassification',
|
|
72
|
+
'@xsi:type' => 'SelectCustomFieldRef',
|
|
73
|
+
"platformCore:value"=>{"platformCore:name"=>"The Game", :@internalId=>11}
|
|
64
74
|
}
|
|
65
75
|
]
|
|
66
76
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe NetSuite::Records::CustomList do
|
|
4
|
+
let(:custom_list) { NetSuite::Records::CustomList.new }
|
|
5
|
+
|
|
6
|
+
it 'has all the right fields' do
|
|
7
|
+
custom_list.should have_field(:script_id)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should handle the #custom_value_list" do
|
|
11
|
+
custom_list.custom_value_list = { custom_value: [
|
|
12
|
+
{
|
|
13
|
+
value: "Value",
|
|
14
|
+
value_id: 1
|
|
15
|
+
}
|
|
16
|
+
]}
|
|
17
|
+
|
|
18
|
+
custom_list.custom_value_list.should be_kind_of(NetSuite::Support::Sublist)
|
|
19
|
+
custom_list.custom_value_list.custom_value.first.should be_kind_of(NetSuite::Records::CustomListCustomValue)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -55,7 +55,7 @@ describe NetSuite::Records::CustomRecord do
|
|
|
55
55
|
and_return(response)
|
|
56
56
|
customer = NetSuite::Records::CustomRecord.get(:external_id => 1)
|
|
57
57
|
customer.should be_kind_of(NetSuite::Records::CustomRecord)
|
|
58
|
-
customer.allow_quick_search.should
|
|
58
|
+
customer.allow_quick_search.should be_truthy
|
|
59
59
|
end
|
|
60
60
|
end
|
|
61
61
|
|
|
@@ -82,7 +82,7 @@ describe NetSuite::Records::CustomRecord do
|
|
|
82
82
|
NetSuite::Actions::Add.should_receive(:call).
|
|
83
83
|
with([record], {}).
|
|
84
84
|
and_return(response)
|
|
85
|
-
record.add.should
|
|
85
|
+
record.add.should be_truthy
|
|
86
86
|
end
|
|
87
87
|
end
|
|
88
88
|
|
|
@@ -93,7 +93,7 @@ describe NetSuite::Records::CustomRecord do
|
|
|
93
93
|
NetSuite::Actions::Add.should_receive(:call).
|
|
94
94
|
with([record], {}).
|
|
95
95
|
and_return(response)
|
|
96
|
-
record.add.should
|
|
96
|
+
record.add.should be_falsey
|
|
97
97
|
end
|
|
98
98
|
end
|
|
99
99
|
end
|
|
@@ -106,7 +106,7 @@ describe NetSuite::Records::CustomRecord do
|
|
|
106
106
|
NetSuite::Actions::Delete.should_receive(:call).
|
|
107
107
|
with([record, { :custom => true }], {}).
|
|
108
108
|
and_return(response)
|
|
109
|
-
record.delete.should
|
|
109
|
+
record.delete.should be_truthy
|
|
110
110
|
end
|
|
111
111
|
end
|
|
112
112
|
|
|
@@ -117,7 +117,7 @@ describe NetSuite::Records::CustomRecord do
|
|
|
117
117
|
NetSuite::Actions::Delete.should_receive(:call).
|
|
118
118
|
with([record, { :custom => true }], {}).
|
|
119
119
|
and_return(response)
|
|
120
|
-
record.delete.should
|
|
120
|
+
record.delete.should be_falsey
|
|
121
121
|
end
|
|
122
122
|
end
|
|
123
123
|
end
|
|
@@ -88,7 +88,7 @@ describe NetSuite::Records::CustomRecordType do
|
|
|
88
88
|
and_return(response)
|
|
89
89
|
record_type = NetSuite::Records::CustomRecordType.get(:external_id => 1)
|
|
90
90
|
record_type.should be_kind_of(NetSuite::Records::CustomRecordType)
|
|
91
|
-
record_type.allow_attachments.should
|
|
91
|
+
record_type.allow_attachments.should be_truthy
|
|
92
92
|
end
|
|
93
93
|
end
|
|
94
94
|
|
|
@@ -115,7 +115,7 @@ describe NetSuite::Records::CustomRecordType do
|
|
|
115
115
|
NetSuite::Actions::Add.should_receive(:call).
|
|
116
116
|
with([record_type], {}).
|
|
117
117
|
and_return(response)
|
|
118
|
-
record_type.add.should
|
|
118
|
+
record_type.add.should be_truthy
|
|
119
119
|
end
|
|
120
120
|
end
|
|
121
121
|
|
|
@@ -126,7 +126,7 @@ describe NetSuite::Records::CustomRecordType do
|
|
|
126
126
|
NetSuite::Actions::Add.should_receive(:call).
|
|
127
127
|
with([record_type], {}).
|
|
128
128
|
and_return(response)
|
|
129
|
-
record_type.add.should
|
|
129
|
+
record_type.add.should be_falsey
|
|
130
130
|
end
|
|
131
131
|
end
|
|
132
132
|
end
|
|
@@ -139,7 +139,7 @@ describe NetSuite::Records::CustomRecordType do
|
|
|
139
139
|
NetSuite::Actions::Delete.should_receive(:call).
|
|
140
140
|
with([record_type], {}).
|
|
141
141
|
and_return(response)
|
|
142
|
-
record_type.delete.should
|
|
142
|
+
record_type.delete.should be_truthy
|
|
143
143
|
end
|
|
144
144
|
end
|
|
145
145
|
|
|
@@ -150,7 +150,7 @@ describe NetSuite::Records::CustomRecordType do
|
|
|
150
150
|
NetSuite::Actions::Delete.should_receive(:call).
|
|
151
151
|
with([record_type], {}).
|
|
152
152
|
and_return(response)
|
|
153
|
-
record_type.delete.should
|
|
153
|
+
record_type.delete.should be_falsey
|
|
154
154
|
end
|
|
155
155
|
end
|
|
156
156
|
end
|