fortnox-api 0.9.2 → 1.0.0.rc2

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.
Files changed (344) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +120 -95
  3. data/{LICENSE.txt → LICENSE.md} +0 -0
  4. data/README.md +245 -248
  5. data/bin/fortnox-setup +211 -0
  6. data/bin/fortnox-update-env +38 -0
  7. data/fortnox.gemspec +29 -0
  8. data/lib/fortnox/auth/thread_local.rb +28 -0
  9. data/lib/fortnox/collection.rb +23 -0
  10. data/lib/fortnox/mappers/country_code.rb +34 -0
  11. data/lib/fortnox/mappers/date.rb +21 -0
  12. data/lib/fortnox/mappers/document_row.rb +12 -0
  13. data/lib/fortnox/mappers/edi_information.rb +15 -0
  14. data/lib/fortnox/mappers/email_information.rb +11 -0
  15. data/lib/fortnox/mappers/invoice_row.rb +14 -0
  16. data/lib/fortnox/mappers/label_references.rb +24 -0
  17. data/lib/fortnox/mappers/order_row.rb +9 -0
  18. data/lib/fortnox/mappers/struct.rb +71 -0
  19. data/lib/fortnox/mappers/struct_array.rb +31 -0
  20. data/lib/fortnox/resource.rb +131 -0
  21. data/lib/fortnox/resources/article.rb +160 -0
  22. data/lib/fortnox/resources/customer.rb +209 -0
  23. data/lib/fortnox/resources/document.rb +202 -0
  24. data/lib/fortnox/resources/invoice.rb +92 -0
  25. data/lib/fortnox/resources/label.rb +15 -0
  26. data/lib/fortnox/resources/order.rb +38 -0
  27. data/lib/fortnox/resources/project.rb +41 -0
  28. data/lib/fortnox/resources/terms_of_payment.rb +23 -0
  29. data/lib/fortnox/resources/unit.rb +26 -0
  30. data/lib/fortnox/struct.rb +24 -0
  31. data/lib/fortnox/structs/default_delivery_types.rb +16 -0
  32. data/lib/fortnox/structs/default_templates.rb +19 -0
  33. data/lib/fortnox/structs/document_row.rb +62 -0
  34. data/lib/fortnox/structs/edi_information.rb +25 -0
  35. data/lib/fortnox/structs/email_information.rb +22 -0
  36. data/lib/fortnox/structs/invoice_row.rb +13 -0
  37. data/lib/fortnox/structs/order_row.rb +10 -0
  38. data/lib/fortnox/types.rb +129 -0
  39. data/lib/fortnox/{api/version.rb → version.rb} +1 -3
  40. data/lib/fortnox.rb +111 -0
  41. metadata +55 -580
  42. data/.codeclimate.yml +0 -20
  43. data/.env.template +0 -7
  44. data/.env.test +0 -11
  45. data/.gitignore +0 -20
  46. data/.rspec +0 -2
  47. data/.rubocop.yml +0 -41
  48. data/.tool-versions +0 -1
  49. data/.travis.yml +0 -32
  50. data/CLAUDE.md +0 -79
  51. data/CONTRIBUTE.md +0 -38
  52. data/DEVELOPER_README.md +0 -69
  53. data/Gemfile +0 -6
  54. data/Guardfile +0 -16
  55. data/Rakefile +0 -140
  56. data/bin/console +0 -22
  57. data/bin/fortnox +0 -285
  58. data/bin/get_tokens +0 -79
  59. data/bin/renew_tokens +0 -28
  60. data/docs/gotchas.md +0 -146
  61. data/fortnox-api.gemspec +0 -50
  62. data/lib/fortnox/api/mappers/article.rb +0 -23
  63. data/lib/fortnox/api/mappers/base/canonical_name_sym.rb +0 -21
  64. data/lib/fortnox/api/mappers/base/from_json.rb +0 -91
  65. data/lib/fortnox/api/mappers/base/to_json.rb +0 -66
  66. data/lib/fortnox/api/mappers/base.rb +0 -30
  67. data/lib/fortnox/api/mappers/customer.rb +0 -27
  68. data/lib/fortnox/api/mappers/default_delivery_types.rb +0 -15
  69. data/lib/fortnox/api/mappers/default_templates.rb +0 -16
  70. data/lib/fortnox/api/mappers/edi_information.rb +0 -23
  71. data/lib/fortnox/api/mappers/email_information.rb +0 -19
  72. data/lib/fortnox/api/mappers/invoice.rb +0 -29
  73. data/lib/fortnox/api/mappers/invoice_row.rb +0 -25
  74. data/lib/fortnox/api/mappers/order.rb +0 -26
  75. data/lib/fortnox/api/mappers/order_row.rb +0 -23
  76. data/lib/fortnox/api/mappers/project.rb +0 -17
  77. data/lib/fortnox/api/mappers/terms_of_payment.rb +0 -17
  78. data/lib/fortnox/api/mappers/unit.rb +0 -17
  79. data/lib/fortnox/api/mappers/value/array.rb +0 -18
  80. data/lib/fortnox/api/mappers/value/country_string.rb +0 -24
  81. data/lib/fortnox/api/mappers/value/date.rb +0 -11
  82. data/lib/fortnox/api/mappers/value/hash.rb +0 -16
  83. data/lib/fortnox/api/mappers/value/identity.rb +0 -18
  84. data/lib/fortnox/api/mappers.rb +0 -21
  85. data/lib/fortnox/api/models/article.rb +0 -134
  86. data/lib/fortnox/api/models/base.rb +0 -128
  87. data/lib/fortnox/api/models/customer.rb +0 -210
  88. data/lib/fortnox/api/models/document.rb +0 -189
  89. data/lib/fortnox/api/models/invoice.rb +0 -87
  90. data/lib/fortnox/api/models/label.rb +0 -19
  91. data/lib/fortnox/api/models/order.rb +0 -27
  92. data/lib/fortnox/api/models/project.rb +0 -42
  93. data/lib/fortnox/api/models/terms_of_payment.rb +0 -28
  94. data/lib/fortnox/api/models/unit.rb +0 -24
  95. data/lib/fortnox/api/models.rb +0 -9
  96. data/lib/fortnox/api/repositories/article.rb +0 -17
  97. data/lib/fortnox/api/repositories/authentication.rb +0 -61
  98. data/lib/fortnox/api/repositories/base/loaders.rb +0 -64
  99. data/lib/fortnox/api/repositories/base/savers.rb +0 -57
  100. data/lib/fortnox/api/repositories/base.rb +0 -93
  101. data/lib/fortnox/api/repositories/customer.rb +0 -17
  102. data/lib/fortnox/api/repositories/invoice.rb +0 -17
  103. data/lib/fortnox/api/repositories/order.rb +0 -17
  104. data/lib/fortnox/api/repositories/project.rb +0 -17
  105. data/lib/fortnox/api/repositories/terms_of_payment.rb +0 -17
  106. data/lib/fortnox/api/repositories/unit.rb +0 -17
  107. data/lib/fortnox/api/repositories.rb +0 -10
  108. data/lib/fortnox/api/request_handling.rb +0 -46
  109. data/lib/fortnox/api/types/default_delivery_types.rb +0 -20
  110. data/lib/fortnox/api/types/default_templates.rb +0 -23
  111. data/lib/fortnox/api/types/defaulted.rb +0 -11
  112. data/lib/fortnox/api/types/document_row.rb +0 -64
  113. data/lib/fortnox/api/types/edi_information.rb +0 -29
  114. data/lib/fortnox/api/types/email_information.rb +0 -26
  115. data/lib/fortnox/api/types/enums.rb +0 -116
  116. data/lib/fortnox/api/types/invoice_row.rb +0 -19
  117. data/lib/fortnox/api/types/model.rb +0 -37
  118. data/lib/fortnox/api/types/nullable.rb +0 -25
  119. data/lib/fortnox/api/types/order_row.rb +0 -16
  120. data/lib/fortnox/api/types/required.rb +0 -13
  121. data/lib/fortnox/api/types/shim/country_string.rb +0 -10
  122. data/lib/fortnox/api/types/sized.rb +0 -33
  123. data/lib/fortnox/api/types.rb +0 -144
  124. data/lib/fortnox/api.rb +0 -62
  125. data/spec/fortnox/api/mappers/article_spec.rb +0 -17
  126. data/spec/fortnox/api/mappers/base/canonical_name_sym_spec.rb +0 -36
  127. data/spec/fortnox/api/mappers/base/from_json_spec.rb +0 -70
  128. data/spec/fortnox/api/mappers/base/to_json_spec.rb +0 -68
  129. data/spec/fortnox/api/mappers/base_spec.rb +0 -154
  130. data/spec/fortnox/api/mappers/contexts/json_conversion.rb +0 -62
  131. data/spec/fortnox/api/mappers/customer_spec.rb +0 -27
  132. data/spec/fortnox/api/mappers/default_delivery_types_spec.rb +0 -14
  133. data/spec/fortnox/api/mappers/edi_information_spec.rb +0 -23
  134. data/spec/fortnox/api/mappers/email_information_spec.rb +0 -19
  135. data/spec/fortnox/api/mappers/examples/mapper.rb +0 -34
  136. data/spec/fortnox/api/mappers/invoice_row_spec.rb +0 -24
  137. data/spec/fortnox/api/mappers/invoice_spec.rb +0 -27
  138. data/spec/fortnox/api/mappers/order_row_spec.rb +0 -21
  139. data/spec/fortnox/api/mappers/order_spec.rb +0 -23
  140. data/spec/fortnox/api/mappers/project_spec.rb +0 -12
  141. data/spec/fortnox/api/mappers/terms_of_payment_spec.rb +0 -16
  142. data/spec/fortnox/api/mappers/unit_spec.rb +0 -56
  143. data/spec/fortnox/api/models/article_spec.rb +0 -9
  144. data/spec/fortnox/api/models/base_spec.rb +0 -117
  145. data/spec/fortnox/api/models/customer_spec.rb +0 -9
  146. data/spec/fortnox/api/models/examples/document_base.rb +0 -15
  147. data/spec/fortnox/api/models/examples/model.rb +0 -22
  148. data/spec/fortnox/api/models/invoice_spec.rb +0 -11
  149. data/spec/fortnox/api/models/order_spec.rb +0 -12
  150. data/spec/fortnox/api/models/project_spec.rb +0 -9
  151. data/spec/fortnox/api/models/terms_of_payment_spec.rb +0 -9
  152. data/spec/fortnox/api/models/unit_spec.rb +0 -33
  153. data/spec/fortnox/api/repositories/article_spec.rb +0 -80
  154. data/spec/fortnox/api/repositories/authentication_spec.rb +0 -103
  155. data/spec/fortnox/api/repositories/base_spec.rb +0 -168
  156. data/spec/fortnox/api/repositories/customer_spec.rb +0 -119
  157. data/spec/fortnox/api/repositories/examples/all.rb +0 -17
  158. data/spec/fortnox/api/repositories/examples/find.rb +0 -84
  159. data/spec/fortnox/api/repositories/examples/only.rb +0 -34
  160. data/spec/fortnox/api/repositories/examples/save.rb +0 -76
  161. data/spec/fortnox/api/repositories/examples/save_with_nested_model.rb +0 -28
  162. data/spec/fortnox/api/repositories/examples/save_with_specially_named_attribute.rb +0 -26
  163. data/spec/fortnox/api/repositories/examples/search.rb +0 -39
  164. data/spec/fortnox/api/repositories/invoice_spec.rb +0 -297
  165. data/spec/fortnox/api/repositories/order_spec.rb +0 -53
  166. data/spec/fortnox/api/repositories/project_spec.rb +0 -36
  167. data/spec/fortnox/api/repositories/terms_of_payment_spec.rb +0 -34
  168. data/spec/fortnox/api/repositories/unit_spec.rb +0 -39
  169. data/spec/fortnox/api/types/account_number_spec.rb +0 -35
  170. data/spec/fortnox/api/types/country_code_spec.rb +0 -42
  171. data/spec/fortnox/api/types/country_spec.rb +0 -67
  172. data/spec/fortnox/api/types/default_delivery_types_spec.rb +0 -12
  173. data/spec/fortnox/api/types/edi_information_spec.rb +0 -15
  174. data/spec/fortnox/api/types/email_information_spec.rb +0 -15
  175. data/spec/fortnox/api/types/email_spec.rb +0 -56
  176. data/spec/fortnox/api/types/enums_spec.rb +0 -17
  177. data/spec/fortnox/api/types/examples/document_row.rb +0 -25
  178. data/spec/fortnox/api/types/examples/enum.rb +0 -55
  179. data/spec/fortnox/api/types/examples/types.rb +0 -11
  180. data/spec/fortnox/api/types/housework_types_spec.rb +0 -149
  181. data/spec/fortnox/api/types/invoice_row_spec.rb +0 -11
  182. data/spec/fortnox/api/types/model_spec.rb +0 -69
  183. data/spec/fortnox/api/types/nullable_spec.rb +0 -79
  184. data/spec/fortnox/api/types/order_row_spec.rb +0 -15
  185. data/spec/fortnox/api/types/required_spec.rb +0 -36
  186. data/spec/fortnox/api/types/sales_account_spec.rb +0 -57
  187. data/spec/fortnox/api/types/sized_spec.rb +0 -76
  188. data/spec/fortnox/api_spec.rb +0 -66
  189. data/spec/spec_helper.rb +0 -35
  190. data/spec/support/helpers/configuration_helper.rb +0 -39
  191. data/spec/support/helpers/repository_helper.rb +0 -10
  192. data/spec/support/helpers.rb +0 -3
  193. data/spec/support/matchers/type/attribute_matcher.rb +0 -40
  194. data/spec/support/matchers/type/enum_matcher.rb +0 -23
  195. data/spec/support/matchers/type/have_account_number_matcher.rb +0 -23
  196. data/spec/support/matchers/type/have_currency_matcher.rb +0 -9
  197. data/spec/support/matchers/type/have_customer_type_matcher.rb +0 -15
  198. data/spec/support/matchers/type/have_default_delivery_type_matcher.rb +0 -9
  199. data/spec/support/matchers/type/have_discount_type_matcher.rb +0 -9
  200. data/spec/support/matchers/type/have_email_matcher.rb +0 -24
  201. data/spec/support/matchers/type/have_housework_type_matcher.rb +0 -9
  202. data/spec/support/matchers/type/have_nullable_date_matcher.rb +0 -60
  203. data/spec/support/matchers/type/have_nullable_matcher.rb +0 -54
  204. data/spec/support/matchers/type/have_nullable_string_matcher.rb +0 -47
  205. data/spec/support/matchers/type/have_sized_float_matcher.rb +0 -10
  206. data/spec/support/matchers/type/have_sized_integer_matcher.rb +0 -10
  207. data/spec/support/matchers/type/have_sized_string_matcher.rb +0 -36
  208. data/spec/support/matchers/type/have_vat_type_matcher.rb +0 -9
  209. data/spec/support/matchers/type/numeric_matcher.rb +0 -52
  210. data/spec/support/matchers/type/require_attribute_matcher.rb +0 -68
  211. data/spec/support/matchers/type/type_matcher.rb +0 -40
  212. data/spec/support/matchers/type.rb +0 -19
  213. data/spec/support/matchers.rb +0 -3
  214. data/spec/support/vcr_setup.rb +0 -25
  215. data/spec/vcr_cassettes/articles/all.yml +0 -67
  216. data/spec/vcr_cassettes/articles/find_by_hash_failure.yml +0 -62
  217. data/spec/vcr_cassettes/articles/find_failure.yml +0 -62
  218. data/spec/vcr_cassettes/articles/find_id_1.yml +0 -63
  219. data/spec/vcr_cassettes/articles/find_new.yml +0 -63
  220. data/spec/vcr_cassettes/articles/limits/quantity_in_stock_min_value.yml +0 -63
  221. data/spec/vcr_cassettes/articles/limits/quantity_in_stock_rounding_positive_value.yml +0 -63
  222. data/spec/vcr_cassettes/articles/multi_param_find_by_hash.yml +0 -62
  223. data/spec/vcr_cassettes/articles/save_new.yml +0 -63
  224. data/spec/vcr_cassettes/articles/save_old.yml +0 -63
  225. data/spec/vcr_cassettes/articles/save_with_specially_named_attribute.yml +0 -63
  226. data/spec/vcr_cassettes/articles/search_by_name.yml +0 -65
  227. data/spec/vcr_cassettes/articles/search_miss.yml +0 -62
  228. data/spec/vcr_cassettes/articles/search_with_special_char.yml +0 -62
  229. data/spec/vcr_cassettes/articles/single_param_find_by_hash.yml +0 -62
  230. data/spec/vcr_cassettes/authentication/expired_token.yml +0 -54
  231. data/spec/vcr_cassettes/authentication/invalid_authorization.yml +0 -57
  232. data/spec/vcr_cassettes/authentication/invalid_refresh_token.yml +0 -58
  233. data/spec/vcr_cassettes/authentication/valid_request.yml +0 -63
  234. data/spec/vcr_cassettes/customers/all.yml +0 -69
  235. data/spec/vcr_cassettes/customers/find_by_hash_failure.yml +0 -62
  236. data/spec/vcr_cassettes/customers/find_failure.yml +0 -62
  237. data/spec/vcr_cassettes/customers/find_id_1.yml +0 -64
  238. data/spec/vcr_cassettes/customers/find_new.yml +0 -63
  239. data/spec/vcr_cassettes/customers/find_with_sales_account.yml +0 -63
  240. data/spec/vcr_cassettes/customers/multi_param_find_by_hash.yml +0 -63
  241. data/spec/vcr_cassettes/customers/save_new.yml +0 -63
  242. data/spec/vcr_cassettes/customers/save_new_with_country_code_SE.yml +0 -64
  243. data/spec/vcr_cassettes/customers/save_new_with_idn_email.yml +0 -67
  244. data/spec/vcr_cassettes/customers/save_new_with_sales_account.yml +0 -63
  245. data/spec/vcr_cassettes/customers/save_old.yml +0 -63
  246. data/spec/vcr_cassettes/customers/save_with_specially_named_attribute.yml +0 -63
  247. data/spec/vcr_cassettes/customers/search_by_name.yml +0 -64
  248. data/spec/vcr_cassettes/customers/search_miss.yml +0 -62
  249. data/spec/vcr_cassettes/customers/search_with_special_char.yml +0 -62
  250. data/spec/vcr_cassettes/customers/single_param_find_by_hash.yml +0 -64
  251. data/spec/vcr_cassettes/invoices/all.yml +0 -96
  252. data/spec/vcr_cassettes/invoices/filter_hit.yml +0 -64
  253. data/spec/vcr_cassettes/invoices/filter_invalid.yml +0 -60
  254. data/spec/vcr_cassettes/invoices/find_by_hash_failure.yml +0 -62
  255. data/spec/vcr_cassettes/invoices/find_failure.yml +0 -62
  256. data/spec/vcr_cassettes/invoices/find_id_1.yml +0 -65
  257. data/spec/vcr_cassettes/invoices/find_new.yml +0 -65
  258. data/spec/vcr_cassettes/invoices/multi_param_find_by_hash.yml +0 -63
  259. data/spec/vcr_cassettes/invoices/row_delivered_quantity_decimals.yml +0 -65
  260. data/spec/vcr_cassettes/invoices/row_delivered_quantity_decimals_round_up.yml +0 -65
  261. data/spec/vcr_cassettes/invoices/row_description_limit.yml +0 -65
  262. data/spec/vcr_cassettes/invoices/row_price_limit.yml +0 -65
  263. data/spec/vcr_cassettes/invoices/row_price_limit_round_up.yml +0 -65
  264. data/spec/vcr_cassettes/invoices/save_new.yml +0 -65
  265. data/spec/vcr_cassettes/invoices/save_new_with_comments.yml +0 -65
  266. data/spec/vcr_cassettes/invoices/save_new_with_country.yml +0 -65
  267. data/spec/vcr_cassettes/invoices/save_new_with_country_GB.yml +0 -66
  268. data/spec/vcr_cassettes/invoices/save_new_with_country_Norge.yml +0 -65
  269. data/spec/vcr_cassettes/invoices/save_new_with_country_Norway.yml +0 -65
  270. data/spec/vcr_cassettes/invoices/save_new_with_country_Sverige.yml +0 -65
  271. data/spec/vcr_cassettes/invoices/save_new_with_country_VA.yml +0 -66
  272. data/spec/vcr_cassettes/invoices/save_new_with_country_VI.yml +0 -66
  273. data/spec/vcr_cassettes/invoices/save_new_with_country_empty_string.yml +0 -65
  274. data/spec/vcr_cassettes/invoices/save_new_with_country_nil.yml +0 -65
  275. data/spec/vcr_cassettes/invoices/save_new_with_unsaved_parent.yml +0 -65
  276. data/spec/vcr_cassettes/invoices/save_old.yml +0 -65
  277. data/spec/vcr_cassettes/invoices/save_old_with_empty_comments.yml +0 -65
  278. data/spec/vcr_cassettes/invoices/save_old_with_empty_country.yml +0 -65
  279. data/spec/vcr_cassettes/invoices/save_old_with_nil_comments.yml +0 -65
  280. data/spec/vcr_cassettes/invoices/save_old_with_nil_country.yml +0 -65
  281. data/spec/vcr_cassettes/invoices/save_with_nested_model.yml +0 -65
  282. data/spec/vcr_cassettes/invoices/save_with_specially_named_attribute.yml +0 -65
  283. data/spec/vcr_cassettes/invoices/search_by_name.yml +0 -63
  284. data/spec/vcr_cassettes/invoices/search_miss.yml +0 -62
  285. data/spec/vcr_cassettes/invoices/search_with_special_char.yml +0 -62
  286. data/spec/vcr_cassettes/invoices/single_param_find_by_hash.yml +0 -64
  287. data/spec/vcr_cassettes/orders/all.yml +0 -69
  288. data/spec/vcr_cassettes/orders/filter_hit.yml +0 -64
  289. data/spec/vcr_cassettes/orders/filter_invalid.yml +0 -60
  290. data/spec/vcr_cassettes/orders/find_by_hash_failure.yml +0 -62
  291. data/spec/vcr_cassettes/orders/find_failure.yml +0 -62
  292. data/spec/vcr_cassettes/orders/find_id_1.yml +0 -67
  293. data/spec/vcr_cassettes/orders/find_new.yml +0 -65
  294. data/spec/vcr_cassettes/orders/housework_invalid_tax_reduction_type.yml +0 -61
  295. data/spec/vcr_cassettes/orders/housework_othercoses_invalid.yml +0 -61
  296. data/spec/vcr_cassettes/orders/housework_type_babysitting.yml +0 -65
  297. data/spec/vcr_cassettes/orders/housework_type_cleaning.yml +0 -65
  298. data/spec/vcr_cassettes/orders/housework_type_construction.yml +0 -65
  299. data/spec/vcr_cassettes/orders/housework_type_cooking.yml +0 -61
  300. data/spec/vcr_cassettes/orders/housework_type_electricity.yml +0 -65
  301. data/spec/vcr_cassettes/orders/housework_type_gardening.yml +0 -65
  302. data/spec/vcr_cassettes/orders/housework_type_glassmetalwork.yml +0 -65
  303. data/spec/vcr_cassettes/orders/housework_type_grounddrainagework.yml +0 -65
  304. data/spec/vcr_cassettes/orders/housework_type_hvac.yml +0 -65
  305. data/spec/vcr_cassettes/orders/housework_type_itservices.yml +0 -65
  306. data/spec/vcr_cassettes/orders/housework_type_majorappliancerepair.yml +0 -65
  307. data/spec/vcr_cassettes/orders/housework_type_masonry.yml +0 -65
  308. data/spec/vcr_cassettes/orders/housework_type_movingservices.yml +0 -65
  309. data/spec/vcr_cassettes/orders/housework_type_othercare.yml +0 -65
  310. data/spec/vcr_cassettes/orders/housework_type_othercosts.yml +0 -65
  311. data/spec/vcr_cassettes/orders/housework_type_paintingwallpapering.yml +0 -65
  312. data/spec/vcr_cassettes/orders/housework_type_snowplowing.yml +0 -65
  313. data/spec/vcr_cassettes/orders/housework_type_textileclothing.yml +0 -65
  314. data/spec/vcr_cassettes/orders/housework_type_tutoring.yml +0 -61
  315. data/spec/vcr_cassettes/orders/multi_param_find_by_hash.yml +0 -63
  316. data/spec/vcr_cassettes/orders/save_new.yml +0 -65
  317. data/spec/vcr_cassettes/orders/save_old.yml +0 -65
  318. data/spec/vcr_cassettes/orders/save_with_nested_model.yml +0 -65
  319. data/spec/vcr_cassettes/orders/search_by_name.yml +0 -63
  320. data/spec/vcr_cassettes/orders/search_miss.yml +0 -62
  321. data/spec/vcr_cassettes/orders/search_with_special_char.yml +0 -62
  322. data/spec/vcr_cassettes/orders/single_param_find_by_hash.yml +0 -64
  323. data/spec/vcr_cassettes/projects/all.yml +0 -64
  324. data/spec/vcr_cassettes/projects/find_by_hash_failure.yml +0 -62
  325. data/spec/vcr_cassettes/projects/find_failure.yml +0 -62
  326. data/spec/vcr_cassettes/projects/find_id_1.yml +0 -63
  327. data/spec/vcr_cassettes/projects/find_new.yml +0 -63
  328. data/spec/vcr_cassettes/projects/multi_param_find_by_hash.yml +0 -64
  329. data/spec/vcr_cassettes/projects/save_new.yml +0 -63
  330. data/spec/vcr_cassettes/projects/save_old.yml +0 -63
  331. data/spec/vcr_cassettes/projects/single_param_find_by_hash.yml +0 -63
  332. data/spec/vcr_cassettes/termsofpayments/all.yml +0 -68
  333. data/spec/vcr_cassettes/termsofpayments/find_failure.yml +0 -62
  334. data/spec/vcr_cassettes/termsofpayments/find_id_1.yml +0 -62
  335. data/spec/vcr_cassettes/termsofpayments/find_new.yml +0 -63
  336. data/spec/vcr_cassettes/termsofpayments/save_new.yml +0 -63
  337. data/spec/vcr_cassettes/termsofpayments/save_old.yml +0 -63
  338. data/spec/vcr_cassettes/units/all.yml +0 -64
  339. data/spec/vcr_cassettes/units/find_failure.yml +0 -62
  340. data/spec/vcr_cassettes/units/find_id_1.yml +0 -63
  341. data/spec/vcr_cassettes/units/find_new.yml +0 -63
  342. data/spec/vcr_cassettes/units/save_new.yml +0 -63
  343. data/spec/vcr_cassettes/units/save_old.yml +0 -63
  344. data/spec/vcr_cassettes/units/save_with_specially_named_attribute.yml +0 -63
data/.codeclimate.yml DELETED
@@ -1,20 +0,0 @@
1
- ---
2
- engines:
3
- duplication:
4
- enabled: true
5
- config:
6
- languages:
7
- - ruby
8
- exclude_fingerprints:
9
- - e90f5ceaaaf6e613e221ffc4dd84fa37
10
- - 1fca042e9b232b8f28944f0c89d5f34c
11
- fixme:
12
- enabled: false
13
- rubocop:
14
- enabled: true
15
- channel: rubocop-1-39-0
16
- ratings:
17
- paths:
18
- - "**.rb"
19
- exclude_paths:
20
- - ".*"
data/.env.template DELETED
@@ -1,7 +0,0 @@
1
- FORTNOX_API_REDIRECT_URI=https://example.com
2
- FORTNOX_API_CLIENT_SECRET=
3
- FORTNOX_API_SCOPES=article invoice settings customer order project
4
- FORTNOX_API_CLIENT_ID=
5
- FORTNOX_API_REFRESH_TOKEN=
6
- FORTNOX_API_ACCESS_TOKEN=
7
-
data/.env.test DELETED
@@ -1,11 +0,0 @@
1
- DEBUG=false
2
-
3
- EXPIRED_ACCESS_TOKEN=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOjIsInRlbmFudElkIjoxMzY4MjY3LCJjbGllbnRJZCI6ImR2UEE0Mnk0ME9XSiIsInJpZ2h0c0FzSnNvbiI6Ikg0c0lBQUFBQUFBQUE0MVgzVzdyTmd4K2wxNnZlWWVzUlE4SzdPd1VTSWZoWUJnQzJtSWN6WkpvU0hMYTdPbEhXWkl0MlUyd080dWt5SVwvXC84bDhQRmp2cHZMM3VHakQ5dm0xcE5ONDlcL1BMUWlKMDcwd2NvMVNxSk13MWFMeVwvZ3NTWUtMVTNRTWpPZ2JkRUZMblFXVVRObEYwaURcLzhPaDNXZGF1SDNhbmFRQjAwcFFQeEhzQWIyWHBuT1JkYUd4UGFPTmg5WWk2M2ZTWEVpMnlPcnNDS3BrZ2ZKb016OHlCcmdHUTI3c09uUmVrb2xrQVZKZFBmU0xwUThyUGI1SWhlOTB1RHFQK29XVVlHMUpQd05FVmF0TzJCeURicytnUTl5U2NsUVZiaWNSUHdleWlUMmdQWkhWRmY3SmV1MzZLV0N4WU53SlYwR1ozS3dzTkVSOURTNEdKQWxWcGhaMFVrT1h4QjFjc0ZZQW96K1RsZjlpME4wakRsK0JyMjhFV0ZzazZ1UXE5UFdwU053NlpsSXZNYk40UWV0Vms1bVYzVml6Rmx2aUtsSVNsalRQVHFReXlBaU1xRldVcUZtMHRzSktTQmRLcDFoVlR0UkIyV1NtSW1RZkZMVTkzNU1rN25qQnVVS2ZNSjY1djhoZUZYVTVKQzNLNGN1YUtwd2pxbUpNcDlNRUpKQUxIOEtSQzFCWEY4aUtXVGJXZjBrQklVcGx2dkZkZWQ3d2lxdnNWY2t1NFpVbUozTHR5YnBOTXBEaW11V1FnYXZBNTI5RlpsQ2p1OVZaK3ZxWWtzQktRTVFMWlpUQzBZN21HSkdWaERPMlwvVXIrR01wa2tVbGZQU2d1UHJCeTFNY3dYYjhpTFwvZHFzaEpVMkFUUG85QnZCUXVSd2tBYzhtaVBYQ2lPekRRTElqMzBHSVAxNExPTDZ5QUgybzJRVmFvZGgwRkRZVDkyVWo1NStDeE9vUzlZeVVwSEtHYmVRaWRFNFhielYwVU40VWxicXFJUDVQeUVNQ3lvcVZWVlo2ZDBhekRjRTgrb0pNOFFpYTVncFdMNWZsdGlVR0RlWW5NZFBMZnNPMlRZU1lEM1l4bVFSRVVoXC9hdHBHS1Y0b3BpbXhJbkY4MlpKakJQUUh6WnRtZGxpdEhaSElxcDROUzN4MXUyK0VZa3ZmTHJGSHNhd3JSeHV0SWFwK0hhTHFSbU1DbkdQUzMzZTJJOStDYm5iNVZYeE5QS28wbWlMZlB5UFc0ZHhHUGp0c0w3RnBXbjlPRHgyb3hRWXNubDlwdGRwS3JCM0J6OHRKblpWVDJVRUhHNDlnTGtXT1VuTXFheFwvZkpndFI0UHQwY2UwbHNKUDhpTGIzMGZkVElXWk9JcWE1cm9jNXlXMXN2SmtVZkRDWVdkTFE5UndIeTFuanJXZlkxb3FPR2kzNTlVVkZMUjU4eVIrYU9wbjZhQlJLUFpDXC9NYkQwYmhjc2pkcVwvWDZkMzYzeGJYMVwvWGR2ckNsSGJZYTF1dm1uNk1MYTVXRlBSOWF2aHZ6eGYrcmhNbHFYQUJNV1RnM2NtbDFUcjArVnBXVlZDaGo1ZFpZK25FV2RvekxNaWlzU242OEN2b2lRVnAxVHhMT2lyZFZXWmlQU01wR0tWRDhCb0tYNnNJOVRmaTFBWWZIY01iZ0JIQXFkbHNQUVBab0U2Q292UERDNUhPQlhMT243VmVYN3JWVlJwbUJxZTJaWHo5WE5wQTV5ZkhWeUFmc0hicHVtUjBsdStrM0ltamNnR3N5RlBnbmd5aGtYOFF2WTluSmdxWU5kWkdzT0lBS04yNEJpSU9cL0tMb1Nha2RWOVEwaEFPaW0xYWt0elU3MUpqSklVZTJDc1ZmbWJjUWsxd2ZnVW5IWE8zeERcLzVHWWo3NzVGUmQ1WmZ0ZERmXC93RTV2eUZHbWcwQUFBPT0iLCJzY29wZXMiOlsiYXJ0aWNsZSIsImludm9pY2UiLCJzZXR0aW5ncyIsImN1c3RvbWVyIiwib3JkZXIiLCJwcm9qZWN0Il0sImF1dGhzb3VyY2UiOiJPQVVUSDIiLCJpZCI6IjRiNThjM2M2ZDEwOTU3Njc0ZTQwNzE3Y2ZkODdkOGZkNzExMDQ0YTYiLCJqdGkiOiI0YjU4YzNjNmQxMDk1NzY3NGU0MDcxN2NmZDg3ZDhmZDcxMTA0NGE2IiwiaXNzIjoiaHR0cHM6XC9cL2FwaS5mb3J0bm94LnNlXC9vYXV0aDIiLCJhdWQiOiJkdlBBNDJ5NDBPV0oiLCJzdWIiOiIyQDEzNjgyNjciLCJleHAiOjE2NzUxMDI0MjEsImlhdCI6MTY3NTA5ODgyMSwidG9rZW5fdHlwZSI6ImJlYXJlciIsInNjb3BlIjoiYXJ0aWNsZSBpbnZvaWNlIHNldHRpbmdzIGN1c3RvbWVyIG9yZGVyIHByb2plY3QifQ.wW3fBY0ZkZkBNaGrNSwJlJzNa7EmSGCKhY_QLEAcmIA
4
-
5
- # VCR: Real credentials are required when renewing authentication cassettes
6
- FORTNOX_API_CLIENT_ID=test_client_id
7
- FORTNOX_API_CLIENT_SECRET=test_client_secret
8
- FORTNOX_API_REFRESH_TOKEN=test_refresh_token
9
-
10
- # VCR: Valid token is required for rerecording cassettes
11
- FORTNOX_API_ACCESS_TOKEN=test_access_token
data/.gitignore DELETED
@@ -1,20 +0,0 @@
1
- .DS_Store
2
- .env
3
- .rspec
4
- *.gem
5
- Gemfile.lock
6
-
7
- # Vim swap files
8
- *.swp
9
-
10
- # Ruby version files
11
- .ruby-version
12
-
13
- # Simplecov
14
- coverage/
15
-
16
- # Dotenv
17
- .env
18
-
19
- # Rake
20
- .rake_tasks~
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --color
2
- --format progress
data/.rubocop.yml DELETED
@@ -1,41 +0,0 @@
1
- require: rubocop-rspec
2
-
3
- AllCops:
4
- TargetRubyVersion: 2.7
5
- DisplayCopNames: true
6
- NewCops: enable
7
-
8
- RSpec/FilePath:
9
- Enabled: false
10
-
11
- RSpec/NestedGroups:
12
- Max: 4
13
-
14
- Style/Documentation:
15
- Enabled: false
16
-
17
- Layout/LineLength:
18
- Max: 120
19
-
20
- Metrics/BlockLength:
21
- Exclude:
22
- - 'spec/**/*'
23
-
24
- Naming/PredicateName:
25
- Exclude:
26
- - 'spec/support/matchers/**/*'
27
-
28
- Naming/RescuedExceptionsVariableName:
29
- PreferredName: exception
30
-
31
- Style/WordArray:
32
- EnforcedStyle: brackets
33
-
34
- RSpec/MultipleMemoizedHelpers:
35
- Max: 7
36
-
37
- Lint/RaiseException:
38
- # You must specify the nearest module, not the fully qualified name
39
- AllowedImplicitNamespaces:
40
- - 'API'
41
- - 'Repository'
data/.tool-versions DELETED
@@ -1 +0,0 @@
1
- ruby 3.2.0
data/.travis.yml DELETED
@@ -1,32 +0,0 @@
1
- env:
2
- global:
3
- - CC_TEST_REPORTER_ID=43ea0acb059b164537ce31bf67e03e1cb552d63df1ad3e9bd95dc3d844697bb4
4
- language: ruby
5
- dist: focal
6
- rvm:
7
- - 2.7.7
8
- - 3.0.5
9
- - 3.1.3
10
- - 3.2.0
11
-
12
- notifications:
13
- slack:
14
- secure: UEYDtwLaQgAoMRY7ct1y0Uu5HbInMwrLo+TiYRc3rjDrzqDfDyInEr3bpckyPJ79lnzccrFezMdY4jWzRjmsvQzvYMu+DWJ1mAWOa/9Ws4YZ8nHd5KqXxVQ0EqPWuWwMOyOdyy3DK/MjUOobGSc0//Pv5DeaAAEBKLJzN+e1BQM=
15
- email: false
16
- before_install:
17
- - gem update --system
18
- - gem install bundler
19
- cache: bundler
20
- before_script:
21
- - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64
22
- > ./cc-test-reporter
23
- - chmod +x ./cc-test-reporter
24
- - "./cc-test-reporter before-build"
25
- script:
26
- - bundle exec rspec
27
- after_script:
28
- - "./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT"
29
- branches:
30
- only:
31
- - master
32
- - development
data/CLAUDE.md DELETED
@@ -1,79 +0,0 @@
1
- # CLAUDE.md
2
-
3
- This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
-
5
- ## Project Overview
6
-
7
- Ruby gem wrapping Fortnox AB's version 3 REST API. Uses the data mapper pattern (not ActiveRecord) with separate concerns for models, types, mappers, and repositories.
8
-
9
- ## Common Commands
10
-
11
- ```bash
12
- # Run all tests
13
- bundle exec rspec
14
-
15
- # Run a single test file
16
- bundle exec rspec spec/fortnox/api/repositories/customer_spec.rb
17
-
18
- # Run tests matching a pattern
19
- bundle exec rspec --example "Customer"
20
-
21
- # Run linter
22
- bundle exec rubocop
23
-
24
- # Run linter with auto-fix
25
- bundle exec rubocop -a
26
-
27
- # List rake tasks
28
- rake -T
29
-
30
- # Remove all VCR cassettes (for re-recording)
31
- rake throw_vcr_cassettes
32
-
33
- # Seed test Fortnox instance with required data
34
- rake seed_fortnox_test_instance
35
-
36
- # Get new OAuth tokens (requires credentials in .env)
37
- bin/get_tokens
38
- ```
39
-
40
- ## Architecture
41
-
42
- ### Data Mapper Pattern
43
-
44
- Unlike Rails' ActiveRecord, this gem separates concerns:
45
-
46
- - **Models** (`lib/fortnox/api/models/`): Immutable data objects. Use `model.update(attr: value)` to get a new instance with changed attributes.
47
- - **Types** (`lib/fortnox/api/types/`): Enforce constraints on attribute values, lengths, and content.
48
- - **Mappers** (`lib/fortnox/api/mappers/`): Convert between Ruby objects and Fortnox JSON. Used internally by repositories.
49
- - **Repositories** (`lib/fortnox/api/repositories/`): Handle HTTP requests. Methods: `all`, `find(id)`, `find_by(attr: value)`, `save`.
50
-
51
- ### Key Classes
52
-
53
- - `Fortnox::API` - Main module with configuration and thread-local access token
54
- - `Fortnox::API::Repository::Authentication` - Token renewal via `renew_tokens`
55
- - Available models: Article, Customer, Invoice, Label, Order, Project, TermsOfPayment, Unit
56
-
57
- ### Exception Hierarchy
58
-
59
- - `Fortnox::API::AttributeError` - Invalid attribute value
60
- - `Fortnox::API::MissingAttributeError` - Required attribute missing
61
- - `Fortnox::API::RemoteServerError` - Server-side error from Fortnox
62
-
63
- ## Testing
64
-
65
- - Uses VCR to record API responses as cassettes in `spec/vcr_cassettes/`
66
- - When re-recording cassettes, do one repository at a time to avoid 429 rate limits
67
- - Environment variables for testing go in `.env.test` (see `.env.template`)
68
- - Set `DEBUG=true` for debug output during tests
69
- - Set `REFRESH_TOKENS=true` to enable token refresh during testing
70
-
71
- ## Fortnox API Gotchas
72
-
73
- See `docs/gotchas.md` for detailed API quirks including:
74
- - `SalesAccount` default values may reference non-existent accounts
75
- - Legacy `HouseWorkType` values that can't be used for new orders/invoices
76
- - `VATIncluded` affects all price fields (no VAT-inclusive fields when false)
77
- - `TermsOfPayments.code` is case-sensitive (`30DAYS` not `30days`)
78
- - Row descriptions limited to 255 characters (undocumented)
79
- - Only one active refresh token per Fortnox account per integration
data/CONTRIBUTE.md DELETED
@@ -1,38 +0,0 @@
1
- # Contribute to the project
2
-
3
- If you want to participate in the development somehow, please send us an email
4
- at info@accodeing.com and let us know. Both small and large contributions are
5
- appreciated. We have a Slack channel where developers are more than welcome :)
6
-
7
- Please start with reading the [DEVELOPER_README](DEVELOPER_README.md).
8
-
9
- To contribute:
10
-
11
- 1. Fork it ( http://github.com/accodeing/fortnox-api/fork )
12
- 2. Clone your fork
13
- (`git clone https://github.com/<your GitHub user name>/fortnox-api.git`)
14
- 3. Create your feature branch (`git checkout -b my-new-feature`)
15
- 4. Commit your changes (`git commit -am 'Add some feature'`)
16
- 5. Push to the branch (`git push origin my-new-feature`)
17
- 6. Create new Pull Request against our `development` branch
18
-
19
- # Adding upstream remote
20
-
21
- If you want to keep contributing, it is a good idea to add the original repo as
22
- remote server to your clone (
23
- `git remote add upstream https://github.com/accodeing/fortnox-api` ). Then you
24
- can do something like this to update your fork:
25
-
26
- 1. Fetch branches from upstream (`git fetch upstream`)
27
- 2. Checkout your master branch (`git checkout master`)
28
- 3. Update it (`git rebase upstream/master`)
29
- 4. And push it to your fork (`git push origin master`) (might need a `--force`
30
- if branches have diverged)
31
-
32
- If you want to update another branch:
33
-
34
- ```
35
- git checkout branch-name
36
- git rebase upstream/branch-name
37
- git push origin branch-name
38
- ```
data/DEVELOPER_README.md DELETED
@@ -1,69 +0,0 @@
1
- # Readme for Developers
2
-
3
- ## Testing
4
-
5
- This gem has integration tests to verify the code against the real API. It uses
6
- [vcr](https://github.com/vcr/vcr) to record API endpoint responses. These
7
- responses are stored locally and are called vcr cassettes. If no cassettes are
8
- available, vcr will record new ones for you. Once in a while, it's good to throw
9
- away all cassettes and rerecord them. Fortnox updates their endpoints and we
10
- need to keep our code up to date with the reality. There's a handy rake task for
11
- removing all cassettes, see `rake -T`. Note that when rerecording all cassettes,
12
- do it one repository at a time, otherwise you'll definitely get
13
- `429 Too Many Requests` from Fortnox. Run them manually with something like
14
- `bundle exec rspec spec/fortnox/api/repositories/article_spec.rb`. Also, you
15
- will need to update some test data in specs, see notes in specs.
16
-
17
- ### Test environment variables
18
-
19
- `.env.test` includes environment variables used for testing. If you want to run
20
- tests against a real (or test) Fortnox account you need to provide valid
21
- credentials in `.env`. See [Get tokens](get-tokens) for how to issue valid
22
- tokens and `.env.template` for which values you need to provide. Then, you must
23
- move these into `.env.test` since that's the environment file used for testing.
24
-
25
- If you want the gem to refresh your tokens during testing, you can enable that
26
- feature by setting the environment variable `REFRESH_TOKENS=true`.
27
-
28
- ### Seeding
29
-
30
- There's a Rake task for seeding the Test Fortnox instance with data that the
31
- test suite needs. See `rake -T` to find the task.
32
-
33
- ### Debug mode while running tests
34
-
35
- There's a `DEBUG` environment variable to set if you want to debug during
36
- testing.
37
-
38
- ## Rubocop
39
-
40
- When updating Rubocop in `fortnox-api.gemspec`, you need to set the explicit
41
- version that codeclimate runs in `.codeclimate.yml`
42
-
43
- ## Updating Ruby version
44
-
45
- When updating the required Ruby version, you need to do the following:
46
-
47
- - Bump Ruby version in `fortnox-api.gemspec`
48
- - Update gems if needed
49
- - Verify that the test suite is passing
50
- - Bump `TargetRubyVersion` in `.rubocop.yml` and verify that the Rubocop version
51
- we are using is supporting that Ruby version. Otherwise you need to upgrade
52
- Rubocop as well, see [Rubocop instructions](#rubocop). The version here should
53
- be the lowest version we support.
54
- - Update `.tool-versions` to the **newest version we support**
55
- - Update `.travis.yml` with the new Ruby versions
56
- - Update required Ruby version in the readme
57
- - Verify that all GitHub integrations works in the pull request you are creating
58
-
59
- # Release
60
-
61
- See our separate guide for releasing Ruby gems.
62
-
63
- # Contributing
64
-
65
- See the [CONTRIBUTE](CONTRIBUTE.md) readme.
66
-
67
- # Dummy trigger
68
-
69
- A dummy trigger: 1
data/Gemfile DELETED
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- # Specify your gem's dependencies in fortnox-api.gemspec
6
- gemspec
data/Guardfile DELETED
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- group :rspec do
4
- guard :rspec, cmd: 'bundle exec rspec --color', all_after_pass: true do
5
- watch(%r{^spec/.+_spec\.rb$})
6
- watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
7
- watch('spec/spec_helper.rb') { 'spec' }
8
- end
9
- end
10
-
11
- group :rubocop do
12
- guard :rubocop, cli: ['--display-cop-names'] do
13
- watch(/.+\.rb$/)
14
- watch(%r{(?:.+/)?\.rubocop(?:_todo)?\.yml$}) { |m| File.dirname(m[0]) }
15
- end
16
- end
data/Rakefile DELETED
@@ -1,140 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # rubocop:disable Metrics/MethodLength
4
-
5
- require 'rspec/core/rake_task'
6
- require 'dotenv'
7
-
8
- require_relative 'lib/fortnox/api'
9
-
10
- Dotenv.load('.env.test')
11
-
12
- RSpec::Core::RakeTask.new(:spec)
13
-
14
- task default: :spec
15
-
16
- desc 'Remove all VCR cassettes so we can rerecord them'
17
- task :throw_vcr_cassettes do
18
- FileUtils.rm_rf(Dir.glob('spec/vcr_cassettes/**'))
19
- end
20
-
21
- desc 'Seed Fortnox test instane with data required for the test suite'
22
- task :seed_fortnox_test_instance do
23
- Fortnox::API.configure do |config|
24
- config.client_id = ENV.fetch('FORTNOX_API_CLIENT_ID')
25
- config.client_secret = ENV.fetch('FORTNOX_API_CLIENT_SECRET')
26
- config.storage = Class.new do
27
- def access_token
28
- ENV.fetch('FORTNOX_API_ACCESS_TOKEN')
29
- end
30
-
31
- def refresh_token; end
32
-
33
- def access_token=(token); end
34
-
35
- def refresh_token=(token); end
36
- end.new
37
- end
38
-
39
- puts 'Seeting Fortnox test instance account with data required for testing...'
40
-
41
- seed_customer_data
42
- seed_article_data
43
- seed_invoice_data
44
- seed_order_data
45
-
46
- puts 'Done'
47
- end
48
-
49
- def seed_customer_data
50
- customer_repository = Fortnox::API::Repository::Customer.new
51
-
52
- customer_repository.save(
53
- Fortnox::API::Model::Customer.new(
54
- name: 'A customer from New York',
55
- city: 'New York'
56
- )
57
- )
58
- customer_repository.save(
59
- Fortnox::API::Model::Customer.new(
60
- name: 'Another customer from New York',
61
- city: 'New York',
62
- zip_code: '10001'
63
- )
64
- )
65
- end
66
-
67
- def seed_article_data
68
- article_repository = Fortnox::API::Repository::Article.new
69
-
70
- article_repository.save(
71
- Fortnox::API::Model::Article.new(
72
- article_number: 101,
73
- description: 'Hammer'
74
- )
75
- )
76
-
77
- article_repository.save(
78
- Fortnox::API::Model::Article.new(
79
- article_number: 102,
80
- description: 'Hammer'
81
- )
82
- )
83
-
84
- article_repository.save(
85
- Fortnox::API::Model::Article.new(
86
- description: 'Test article'
87
- )
88
- )
89
-
90
- article_repository.save(
91
- Fortnox::API::Model::Article.new(
92
- description: 'Test article'
93
- )
94
- )
95
- end
96
-
97
- # TODO: When we have support for actions, we should set the states for
98
- # Invoices required by the Invoice Repository spec.
99
- def seed_invoice_data
100
- invoice_repository = Fortnox::API::Repository::Invoice.new
101
-
102
- invoice_repository.save(
103
- Fortnox::API::Model::Invoice.new(
104
- customer_number: '1',
105
- your_reference: 'Gandalf the Grey'
106
- )
107
- )
108
-
109
- invoice_repository.save(
110
- Fortnox::API::Model::Invoice.new(
111
- customer_number: '1',
112
- your_reference: 'Gandalf the Grey',
113
- our_reference: 'Radagast the Brown'
114
- )
115
- )
116
- end
117
-
118
- # TODO: When we have support for actions, we should set the states for
119
- # Order required by the Order Repository spec.
120
- # Also, we should create Orders needed for search tests.
121
- def seed_order_data
122
- order_repository = Fortnox::API::Repository::Order.new
123
-
124
- order_repository.save(
125
- Fortnox::API::Model::Order.new(
126
- customer_number: '1',
127
- our_reference: 'Belladonna Took'
128
- )
129
- )
130
-
131
- order_repository.save(
132
- Fortnox::API::Model::Order.new(
133
- customer_number: '1',
134
- our_reference: 'Belladonna Took',
135
- your_reference: 'Bodo Proudfoot'
136
- )
137
- )
138
- end
139
-
140
- # rubocop:enable Metrics/MethodLength
data/bin/console DELETED
@@ -1,22 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- require 'bundler/setup'
5
-
6
- require 'pry'
7
- require 'fortnox/api'
8
-
9
- ##
10
- # Starts a new copy of this script, replacing the current session.
11
- #
12
- # When run the current process, this script, will be replaced by the result from
13
- # exec, a new copy of this script.
14
- #
15
- # Together with Pry's history this makes it look like you basically just
16
- # reloaded the gem and all of it's dependancies with their latest versions.
17
-
18
- def reload!
19
- exec([File.absolute_path(__FILE__), __FILE__], *ARGV)
20
- end
21
-
22
- Pry.start