chargify_api_ares 1.1.0.pre → 1.1.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.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/.env +4 -0
  3. data/.gitignore +1 -0
  4. data/.rspec +1 -0
  5. data/.travis.yml +9 -0
  6. data/Gemfile +1 -1
  7. data/Gemfile.lock +7 -1
  8. data/HISTORY.md +9 -0
  9. data/README.md +1 -1
  10. data/chargify_api_ares.gemspec +4 -2
  11. data/examples/metadata.rb +58 -0
  12. data/examples/metafields.rb +32 -0
  13. data/lib/chargify_api_ares.rb +4 -2
  14. data/lib/chargify_api_ares/behaviors/inspectable.rb +33 -0
  15. data/lib/chargify_api_ares/behaviors/metadata.rb +61 -0
  16. data/lib/chargify_api_ares/behaviors/metafield.rb +30 -0
  17. data/lib/chargify_api_ares/resources/customer_metafield.rb +14 -1
  18. data/lib/chargify_api_ares/resources/invoice.rb +4 -4
  19. data/lib/chargify_api_ares/resources/subscription.rb +26 -3
  20. data/lib/chargify_api_ares/resources/subscription_metadata.rb +17 -0
  21. data/lib/chargify_api_ares/resources/subscription_metafield.rb +14 -1
  22. data/spec/cassettes/subscription/find.yml +266 -0
  23. data/spec/cassettes/subscription_metadata/create.yml +78 -0
  24. data/spec/cassettes/subscription_metadata/list-after-create.yml +77 -0
  25. data/spec/cassettes/subscription_metadata/list.yml +71 -0
  26. data/spec/factories.rb +1 -0
  27. data/spec/resources/customer_metafield_spec.rb +64 -0
  28. data/spec/resources/customer_spec.rb +4 -4
  29. data/spec/resources/subscription_metadata_spec.rb +54 -0
  30. data/spec/resources/subscription_metafield_spec.rb +63 -0
  31. data/spec/resources/subscription_spec.rb +27 -0
  32. data/spec/spec_helper.rb +14 -2
  33. metadata +78 -31
  34. data/lib/chargify_api_ares/metafield_xml_formatter.rb +0 -10
  35. data/lib/chargify_api_ares/resources/metafield.rb +0 -67
  36. data/spec/spec.opts +0 -2
@@ -1,10 +0,0 @@
1
- module Chargify
2
- class MetafieldXMLFormatter
3
- include ActiveResource::Formats::XmlFormat
4
-
5
- def decode(xml)
6
- ActiveResource::Formats::XmlFormat.decode(xml)['metafields']
7
- end
8
- end
9
- end
10
-
@@ -1,67 +0,0 @@
1
- module Chargify
2
- class Metafield < Base
3
- def on_csv_export?
4
- scope.csv == "1" || scope.csv == true
5
- end
6
-
7
- def on_csv_export=(value)
8
- value = (value == true || value == '1') ? '1' : '0'
9
- scope.csv = value
10
- end
11
-
12
- def on_hosted_pages?
13
- scope.hosted.any?
14
- end
15
-
16
- def on_hosted_pages=(*products)
17
- scope.hosted = Array(products).flatten.map(&:to_s)
18
- end
19
-
20
- def on_hosted_pages
21
- scope.hosted
22
- end
23
-
24
- # Private Interface
25
-
26
- def self.resource; "metafield"; end
27
- def self.element_name; "metafields"; end
28
-
29
- def self.instantiate_record(record, prefix_options = {})
30
- record = record.is_a?(Array) ? record.first : record
31
- new(record, true).tap do |resource|
32
- resource.prefix_options = prefix_options
33
- resource.current_name = resource.name
34
- end
35
- end
36
-
37
- def self.instantiate_collection(collection, prefix_options = {})
38
- collection['metafields'].collect! { |record| instantiate_record(record, prefix_options) }
39
- end
40
-
41
- def load_attributes_from_response(response)
42
- if (response_code_allows_body?(response.code) &&
43
- (response['Content-Length'].nil? || response['Content-Length'] != "0") &&
44
- !response.body.nil? && response.body.strip.size > 0)
45
- attributes = self.class.format.decode(response.body)
46
- attributes = attributes.is_a?(Array) ? attributes.first : attributes
47
-
48
- resource = load(attributes, true)
49
- resource.current_name = resource.name
50
- @persisted = true
51
- end
52
- end
53
-
54
- def reload
55
- raise NotImplementedError, 'Metafields do not support loading of a single record'
56
- end
57
-
58
- def destroy
59
- connection.delete("#{element_path}?current_name=#{URI.encode(current_name)}")
60
- end
61
-
62
- def element_path(id = nil, prefix_options = {}, query_options = nil)
63
- "#{self.class.prefix}#{self.class.element_name}.xml"
64
- end
65
- end
66
- end
67
-
data/spec/spec.opts DELETED
@@ -1,2 +0,0 @@
1
- --colour
2
- --format progress