moysklad 0.2.1 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/rspec.yml +29 -0
  3. data/.gitignore +1 -0
  4. data/README.md +14 -3
  5. data/lib/moysklad/client/errors.rb +60 -30
  6. data/lib/moysklad/client.rb +39 -11
  7. data/lib/moysklad/entities/assortment.rb +4 -0
  8. data/lib/moysklad/entities/attribute.rb +111 -37
  9. data/lib/moysklad/entities/attribute_metadata.rb +7 -31
  10. data/lib/moysklad/entities/attribute_value.rb +18 -0
  11. data/lib/moysklad/entities/base.rb +23 -8
  12. data/lib/moysklad/entities/bundle.rb +39 -0
  13. data/lib/moysklad/entities/characteristic.rb +4 -0
  14. data/lib/moysklad/entities/characteristic_metadata.rb +4 -0
  15. data/lib/moysklad/entities/collection.rb +27 -7
  16. data/lib/moysklad/entities/collection_meta.rb +11 -0
  17. data/lib/moysklad/entities/company_settings_metadata.rb +26 -0
  18. data/lib/moysklad/entities/consignment.rb +16 -17
  19. data/lib/moysklad/entities/context.rb +7 -0
  20. data/lib/moysklad/entities/counterparty.rb +20 -0
  21. data/lib/moysklad/entities/country.rb +2 -8
  22. data/lib/moysklad/entities/currency.rb +27 -0
  23. data/lib/moysklad/entities/custom_entity.rb +17 -10
  24. data/lib/moysklad/entities/customer_order.rb +109 -23
  25. data/lib/moysklad/entities/customer_order_position.rb +6 -18
  26. data/lib/moysklad/entities/employee.rb +5 -0
  27. data/lib/moysklad/entities/entity.rb +39 -0
  28. data/lib/moysklad/entities/group.rb +10 -0
  29. data/lib/moysklad/entities/image.rb +16 -0
  30. data/lib/moysklad/entities/meta.rb +12 -0
  31. data/lib/moysklad/entities/organization.rb +17 -0
  32. data/lib/moysklad/entities/owner.rb +4 -0
  33. data/lib/moysklad/entities/price.rb +4 -8
  34. data/lib/moysklad/entities/price_type.rb +0 -8
  35. data/lib/moysklad/entities/product.rb +47 -0
  36. data/lib/moysklad/entities/productfolder.rb +11 -0
  37. data/lib/moysklad/entities/rate.rb +6 -0
  38. data/lib/moysklad/entities/resource_metadata.rb +8 -0
  39. data/lib/moysklad/entities/service.rb +23 -0
  40. data/lib/moysklad/entities/shortcut.rb +9 -0
  41. data/lib/moysklad/entities/store.rb +9 -0
  42. data/lib/moysklad/entities/time.rb +13 -0
  43. data/lib/moysklad/entities/uom.rb +5 -0
  44. data/lib/moysklad/entities/variant.rb +47 -0
  45. data/lib/moysklad/entities.rb +42 -39
  46. data/lib/moysklad/error.rb +1 -0
  47. data/lib/moysklad/resources/assortments.rb +13 -0
  48. data/lib/moysklad/resources/base.rb +35 -46
  49. data/lib/moysklad/resources/custom_entities.rb +29 -0
  50. data/lib/moysklad/resources/custom_entity_metadata.rb +12 -8
  51. data/lib/moysklad/resources/embedded_entity_metadata.rb +2 -3
  52. data/lib/moysklad/resources/indexed.rb +21 -37
  53. data/lib/moysklad/resources/indexed_cache.rb +36 -0
  54. data/lib/moysklad/resources/load_all.rb +21 -0
  55. data/lib/moysklad/resources/positions.rb +15 -0
  56. data/lib/moysklad/resources/products.rb +10 -0
  57. data/lib/moysklad/resources/stock.rb +1 -1
  58. data/lib/moysklad/resources/subresource.rb +0 -1
  59. data/lib/moysklad/resources/where_filter.rb +0 -1
  60. data/lib/moysklad/resources.rb +26 -11
  61. data/lib/moysklad/universe.rb +16 -2
  62. data/lib/moysklad/version.rb +1 -1
  63. data/lib/moysklad.rb +12 -7
  64. data/moysklad.gemspec +5 -3
  65. data/scripts/rest.sh +5 -2
  66. data/spec/lib/moysklad/entities/customer_order_position_spec.rb +4 -17
  67. data/spec/lib/moysklad/entities/customer_order_spec.rb +8 -33
  68. data/spec/lib/moysklad/resources/base_spec.rb +0 -54
  69. data/spec/lib/moysklad/resources_spec.rb +0 -2
  70. data/spec/lib/moysklad/universe_spec.rb +0 -23
  71. data/spec/lib/moysklad_spec.rb +0 -1
  72. data/spec/spec_helper.rb +2 -1
  73. data/spec/support/resource.rb +1 -66
  74. data/test.rb +177 -0
  75. metadata +89 -172
  76. data/.travis.yml +0 -4
  77. data/lib/moysklad/entities/barcode.rb +0 -13
  78. data/lib/moysklad/entities/common.rb +0 -15
  79. data/lib/moysklad/entities/common_object.rb +0 -29
  80. data/lib/moysklad/entities/company.rb +0 -20
  81. data/lib/moysklad/entities/company_concern.rb +0 -20
  82. data/lib/moysklad/entities/contact.rb +0 -15
  83. data/lib/moysklad/entities/custom_entity_metadata.rb +0 -36
  84. data/lib/moysklad/entities/embedded_entity_metadata.rb +0 -18
  85. data/lib/moysklad/entities/error.rb +0 -13
  86. data/lib/moysklad/entities/feature.rb +0 -20
  87. data/lib/moysklad/entities/good.rb +0 -34
  88. data/lib/moysklad/entities/good_folder.rb +0 -9
  89. data/lib/moysklad/entities/good_ref.rb +0 -12
  90. data/lib/moysklad/entities/my_company.rb +0 -12
  91. data/lib/moysklad/entities/sale_price.rb +0 -18
  92. data/lib/moysklad/entities/sale_prices.rb +0 -10
  93. data/lib/moysklad/entities/slot.rb +0 -10
  94. data/lib/moysklad/entities/stock_to.rb +0 -33
  95. data/lib/moysklad/entities/warehouse.rb +0 -15
  96. data/lib/moysklad/entities/xml_fix.rb +0 -15
  97. data/spec/fixtures/302.raw +0 -15
  98. data/spec/fixtures/400.raw +0 -8
  99. data/spec/fixtures/401.html +0 -1
  100. data/spec/fixtures/401_2.html +0 -1
  101. data/spec/fixtures/405.raw +0 -9
  102. data/spec/fixtures/500.raw +0 -8
  103. data/spec/fixtures/502.raw +0 -8
  104. data/spec/fixtures/Consignment_list_0.raw +0 -14
  105. data/spec/fixtures/Consignment_list_1000.raw +0 -14
  106. data/spec/fixtures/Country_list.raw +0 -14
  107. data/spec/fixtures/CustomEntityMetadata_list.raw +0 -14
  108. data/spec/fixtures/CustomEntity_list.raw +0 -14
  109. data/spec/fixtures/CustomEntity_list_bad_chars.raw +0 -17
  110. data/spec/fixtures/EmbeddedEntityMetadata_list.raw +0 -15
  111. data/spec/fixtures/Feature_list.raw +0 -14
  112. data/spec/fixtures/Feature_list_1000.raw +0 -14
  113. data/spec/fixtures/Good_e932ebe1-2e22-11e4-9406-002590a28eca.raw +0 -12
  114. data/spec/fixtures/Good_eb77ad57-2e22-11e4-4030-002590a28eca.raw +0 -12
  115. data/spec/fixtures/Goods_list.raw +0 -14
  116. data/spec/fixtures/Metadata_list.raw +0 -14
  117. data/spec/fixtures/PriceType_list.raw +0 -14
  118. data/spec/fixtures/Stock.raw +0 -11
  119. data/spec/fixtures/Stock_showConsignments.raw +0 -11
  120. data/spec/fixtures/Uom_list.raw +0 -14
  121. data/spec/fixtures/Warehouse_list.raw +0 -14
  122. data/spec/fixtures/attribute_boolean.xml +0 -6
  123. data/spec/fixtures/attribute_dictionary.xml +0 -5
  124. data/spec/fixtures/attribute_double.xml +0 -6
  125. data/spec/fixtures/attribute_file.xml +0 -12
  126. data/spec/fixtures/attribute_long.xml +0 -6
  127. data/spec/fixtures/attribute_text.xml +0 -5
  128. data/spec/fixtures/attribute_time.xml +0 -6
  129. data/spec/fixtures/attribute_url.xml +0 -6
  130. data/spec/fixtures/bad_chars.xml +0 -6
  131. data/spec/fixtures/customer_order.xml +0 -28
  132. data/spec/fixtures/good_with_attributes.raw +0 -12
  133. data/spec/fixtures/resource_forbidden.raw +0 -9
  134. data/spec/fixtures/wrong_password.raw +0 -9
  135. data/spec/fixtures/wrong_type.raw +0 -70
  136. data/spec/fixtures/wrong_user.raw +0 -9
  137. data/spec/lib/moysklad/client/errors_spec.rb +0 -102
  138. data/spec/lib/moysklad/entities/attribute_metadata_spec.rb +0 -30
  139. data/spec/lib/moysklad/entities/attribute_spec.rb +0 -36
  140. data/spec/lib/moysklad/entities/country_spec.rb +0 -25
  141. data/spec/lib/moysklad/entities/custom_entity_metadata_spec.rb +0 -34
  142. data/spec/lib/moysklad/entities/custom_entity_spec.rb +0 -34
  143. data/spec/lib/moysklad/entities/good_spec.rb +0 -46
  144. data/spec/lib/moysklad/resources/countries_spec.rb +0 -22
  145. data/spec/lib/moysklad/resources/custom_entity_metadata_spec.rb +0 -13
  146. data/spec/lib/moysklad/resources/embedded_entity_metadata_indexed_spec.rb +0 -20
  147. data/spec/lib/moysklad/resources/embedded_entity_metadata_spec.rb +0 -11
  148. data/spec/lib/moysklad/resources/good_folders_spec.rb +0 -17
  149. data/spec/lib/moysklad/resources/indexed_spec.rb +0 -61
  150. data/spec/lib/moysklad/resources/stock_spec.rb +0 -63
  151. data/spec/lib/moysklad/resources/warehouses_spec.rb +0 -20
@@ -1,25 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Moysklad::Entities::Country do
4
-
5
- before do
6
- stub_rest :Country, :list, 0
7
- end
8
-
9
- let(:resource) { Moysklad::Resources::Countries.indexed client: client }
10
-
11
- describe do
12
- let(:country) { resource.all.first }
13
-
14
- subject { country }
15
-
16
- it do
17
- expect(subject).to be_a Moysklad::Entities::Country
18
- end
19
-
20
- it 'unicoded xml' do
21
- expect(subject.to_xml).to start_with '<?xml version="1.0" encoding="utf-8"?>'
22
- end
23
-
24
- end
25
- end
@@ -1,34 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Moysklad::Entities::CustomEntityMetadata do
4
- before do
5
- stub_rest :CustomEntityMetadata, :list, 0
6
- stub_rest :CustomEntity, :list, 0
7
- end
8
-
9
- let(:resource) { Moysklad::Resources::CustomEntityMetadata.indexed client: client }
10
-
11
- describe do
12
- let(:custom_entity_metadata) { resource.all.first }
13
-
14
- subject { custom_entity_metadata }
15
-
16
- it do
17
- expect(subject).to be_a Moysklad::Entities::CustomEntityMetadata
18
- end
19
-
20
- it 'unicoded xml' do
21
- expect(subject.to_xml).to start_with '<?xml version="1.0" encoding="utf-8"?>'
22
- end
23
-
24
- context 'entities' do
25
-
26
- it do
27
- expect(subject.entities(universe)).to be_a Array
28
- expect(subject.entities(universe).first).to be_a Moysklad::Entities::CustomEntity
29
- end
30
-
31
- end
32
-
33
- end
34
- end
@@ -1,34 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Moysklad::Entities::CustomEntity do
4
-
5
- before do
6
- stub_rest :CustomEntityMetadata, :list, 0
7
- stub_rest :CustomEntity, :list, 0
8
- end
9
-
10
- let(:resource) { Moysklad::Resources::CustomEntities.indexed client: client }
11
-
12
- describe do
13
- let(:custom_entity) { resource.all.first }
14
-
15
- subject { custom_entity }
16
-
17
- it do
18
- expect(subject).to be_a Moysklad::Entities::CustomEntity
19
- end
20
-
21
- it 'unicoded xml' do
22
- expect(subject.to_xml).to start_with '<?xml version="1.0" encoding="utf-8"?>'
23
- end
24
-
25
- context 'entityMetadata' do
26
-
27
- it do
28
- expect(subject.entityMetadata(universe)).to be_a Moysklad::Entities::CustomEntityMetadata
29
- end
30
-
31
- end
32
-
33
- end
34
- end
@@ -1,46 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Moysklad::Entities::Good do
4
- let(:good_uuid) { 'eb77ad57-2e22-11e4-4030-002590a28eca' }
5
-
6
- let(:raw_response) { File.new "./spec/fixtures/Good_#{good_uuid}.raw" }
7
- let(:raw_features_list_response) { File.new "./spec/fixtures/Feature_list.raw" }
8
-
9
- before do
10
- stub_request(:get, "https://online.moysklad.ru/exchange/rest/ms/xml/Good/#{good_uuid}").to_return(raw_response)
11
- stub_request(:get, "https://online.moysklad.ru/exchange/rest/ms/xml/Feature/list?start=0").to_return(raw_features_list_response)
12
- end
13
-
14
- let(:goods_resource) { Moysklad::Resources::Goods.indexed client: client }
15
- let(:good) { goods_resource.get good_uuid }
16
-
17
- describe 'features' do
18
- let(:features) { good.features universe }
19
-
20
- it do
21
- expect(features).to be_a Array
22
- expect(features.count).to eq 3
23
- end
24
-
25
- context do
26
- subject { features.first }
27
- it do
28
- expect(subject).to be_a Moysklad::Entities::Feature
29
- end
30
- end
31
- end
32
-
33
- it 'to_xml' do
34
- expect(subject.to_xml).to be_a String
35
- expect(subject.to_xml).to include "<?xml"
36
- expect(subject.to_xml).to include "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
37
- end
38
-
39
- describe 'attribute' do
40
- it do
41
- expect(good.attributes).to be_a Array
42
- expect(good.attributes.first).to be_a Moysklad::Entities::Attribute
43
- end
44
- end
45
-
46
- end
@@ -1,22 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Moysklad::Resources::Countries do
4
- before do
5
- stub_rest 'Country'
6
- end
7
-
8
- subject { described_class.new client: client }
9
-
10
- it do
11
- expect(subject.list.count).to eq 248
12
- end
13
-
14
- it do
15
- expect(subject.send(:list_path)).to eq "exchange/rest/ms/xml/Country/list"
16
- end
17
-
18
- it do
19
- expect(subject.list.first).to be_a Moysklad::Entities::Country
20
- end
21
-
22
- end
@@ -1,13 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Moysklad::Resources::CustomEntityMetadata do
4
-
5
- describe do
6
- subject { described_class.new client: client }
7
- it 'should get list' do
8
- expect(subject.send(:list_path)).to eq "exchange/rest/ms/xml/CustomEntityMetadata/list"
9
- end
10
- end
11
-
12
- end
13
-
@@ -1,20 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Moysklad::Resources::EmbeddedEntityMetadataIndexed do
4
-
5
- let(:article_uuid) { 'dc410ce3-505a-11e4-90a2-8eca00496371' }
6
-
7
- before do
8
- stub_rest :EmbeddedEntityMetadata, :list, 0
9
- end
10
-
11
- describe 'subresource' do
12
- let(:metadata_resource) { Moysklad::Resources::EmbeddedEntityMetadata.indexed client: client }
13
- subject { metadata_resource.subresource_by_name :GoodFolder }
14
-
15
- it { expect(subject).to be_a Moysklad::Resources::Subresource }
16
- it { expect(subject.items.first).to be_a Moysklad::Entities::AttributeMetadata }
17
-
18
- end
19
-
20
- end
@@ -1,11 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Moysklad::Resources::EmbeddedEntityMetadata do
4
- describe do
5
- subject { described_class.new client: client }
6
- it 'should get list' do
7
- expect(subject.send(:list_path)).to eq "exchange/rest/ms/xml/EmbeddedEntityMetadata/list"
8
- end
9
- end
10
-
11
- end
@@ -1,17 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Moysklad::Resources::GoodFolders do
4
-
5
- it 'should be GoodFolder' do
6
- expect(described_class.entity_class).to eq Moysklad::Entities::GoodFolder
7
- end
8
-
9
- describe 'resource' do
10
- subject { Moysklad::Resources::GoodFolders.new client: client }
11
-
12
- it 'should get item' do
13
- expect(subject.send(:list_path)).to eq "exchange/rest/ms/xml/GoodFolder/list"
14
- end
15
- end
16
-
17
- end
@@ -1,61 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Moysklad::Resources::Indexed do
4
- let(:items_count) { total_consignment_count }
5
-
6
- before do
7
- stub_consignments_requests
8
- end
9
-
10
- let(:resource) { Moysklad::Resources::Indexed.new consignments_resource }
11
-
12
- subject { resource }
13
-
14
- it 'загружено верное количество данных' do
15
- expect(subject.all.count).to eq items_count
16
- expect(subject.send(:index).count).to eq items_count
17
- end
18
-
19
- describe 'кешированные данные' do
20
- # uuid элемента со второй страницы
21
- let(:uuid) { 'eb18d236-2e22-11e4-ddb1-002590a28eca'}
22
-
23
- before do
24
- subject.all
25
- end
26
-
27
- it 'элемет получаем из кеша' do
28
- expect(subject.find uuid).to be_a consignments_resource.class.entity_class
29
- expect(WebMock).to have_requested(:get, resource_list_url(consignments_resource, 0)).once
30
- expect(WebMock).to have_requested(:get, resource_list_url(consignments_resource, 1000)).once
31
- end
32
- end
33
-
34
- describe 'filtered?' do
35
- subject { resource.send :filtered?, item, filter }
36
-
37
- context 'под фильтр попадает все если фильтр пуст' do
38
- let(:item) { double }
39
- let(:filter) { {} }
40
- it do
41
- expect(subject).to be true
42
- end
43
- end
44
-
45
- context 'отсеивает что не надо' do
46
- let(:item) { double some_key: 123 }
47
- let(:filter) { { some_key: 124} }
48
- it do
49
- expect(subject).to be false
50
- end
51
- end
52
- context 'фильтрует что надо' do
53
- let(:item) { double some_key: 123 }
54
- let(:filter) { { some_key: 123} }
55
- it do
56
- expect(subject).to be true
57
- end
58
- end
59
- end
60
-
61
- end
@@ -1,63 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Moysklad::Resources::Stock do
4
- it 'should be loaded' do
5
- expect(Moysklad::Resources::Stock).to be_a Class
6
- end
7
-
8
- let(:resource) { Moysklad::Resources::Stock.new client: client }
9
-
10
- describe do
11
- it 'should get list' do
12
- expect(resource.send(:list_path)).to eq "exchange/rest/stock/xml"
13
- end
14
- end
15
-
16
- describe 'listWithConsignments' do
17
- subject { resource.listWithConsignments }
18
- before do
19
- stub_stock_rest_with_consignments
20
- end
21
- it do
22
- expect(subject.count).to eq 879
23
- end
24
-
25
- context 'stock item' do
26
- subject { resource.listWithConsignments.first }
27
-
28
- it do
29
- expect(subject).to be_a Moysklad::Entities::StockTO
30
- end
31
-
32
- it do
33
- expect(subject.consignmentName).to_not be_empty
34
- end
35
-
36
- it do
37
- expect(subject.consignmentUuid).to_not be_empty
38
- end
39
- end
40
- end
41
-
42
- describe 'no consignments' do
43
- let(:count) { 516 }
44
- subject { resource }
45
-
46
- before do
47
- stub_stock_rest
48
- end
49
-
50
- it do
51
- expect(subject.page.count).to eq count
52
- end
53
-
54
- it do
55
- expect(subject.all.count).to eq count
56
- end
57
-
58
- it do
59
- expect(subject.all.first).to be_a Moysklad::Entities::StockTO
60
- end
61
- end
62
- end
63
-
@@ -1,20 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Moysklad::Resources::Warehouses do
4
-
5
- before do
6
- stub_rest 'Warehouse'
7
- end
8
-
9
- describe do
10
- subject { described_class.new client: client }
11
- it do
12
- expect(subject.list.count).to eq 2
13
- end
14
-
15
- it 'should get list' do
16
- expect(subject.list.first).to be_a Moysklad::Entities::Warehouse
17
- end
18
- end
19
-
20
- end