wix-hive-ruby 0.9.2 → 1.0.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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +38 -11
  4. data/e2e/activities_api_spec.rb +97 -3
  5. data/e2e/contacts_api_spec.rb +74 -28
  6. data/e2e/e2e_helper.rb +7 -3
  7. data/e2e/redirects_api_spec.rb +7 -0
  8. data/e2e/sites_api_spec.rb +11 -0
  9. data/lib/hive/activities/contact/contact_create_activity.rb +1 -11
  10. data/lib/hive/activities/contact/contact_form_activity.rb +2 -2
  11. data/lib/hive/activities/contact/subscription_form_activity.rb +38 -0
  12. data/lib/hive/activities/conversion/conversion_complete_activity.rb +1 -1
  13. data/lib/hive/activities/e_commerce/cart_add_activity.rb +55 -0
  14. data/lib/hive/activities/e_commerce/cart_checkout_activity.rb +18 -0
  15. data/lib/hive/activities/e_commerce/cart_remove_activity.rb +22 -0
  16. data/lib/hive/activities/e_commerce/purchase_activity.rb +17 -1
  17. data/lib/hive/activities/factory.rb +11 -21
  18. data/lib/hive/activities/hotels/hotels_cancel_activity.rb +1 -1
  19. data/lib/hive/activities/hotels/hotels_confirmation_activity.rb +1 -1
  20. data/lib/hive/activities/hotels/hotels_purchase_activity.rb +1 -1
  21. data/lib/hive/activities/hotels/hotels_purchase_failed_activity.rb +1 -1
  22. data/lib/hive/activities/messaging/send_activity.rb +1 -1
  23. data/lib/hive/activities/music/album_fan_activity.rb +1 -1
  24. data/lib/hive/activities/music/album_played_activity.rb +1 -1
  25. data/lib/hive/activities/music/album_share_activity.rb +2 -2
  26. data/lib/hive/activities/music/track_lyrics_activity.rb +1 -1
  27. data/lib/hive/activities/music/track_play_activity.rb +1 -1
  28. data/lib/hive/activities/music/track_played_activity.rb +1 -1
  29. data/lib/hive/activities/music/track_share_activity.rb +2 -2
  30. data/lib/hive/activities/music/track_skipped_activity.rb +1 -1
  31. data/lib/hive/activities/scheduler/scheduler_appointment_activity.rb +12 -1
  32. data/lib/hive/activities/shipping/shipping_delivered_activity.rb +34 -0
  33. data/lib/hive/activities/shipping/shipping_shipped_activity.rb +109 -0
  34. data/lib/hive/activities/shipping/shipping_status_change_activity.rb +51 -0
  35. data/lib/hive/activities/shipping/shipping_status_changed_activity.rb +51 -0
  36. data/lib/hive/redirect.rb +19 -0
  37. data/lib/hive/rest/api.rb +4 -0
  38. data/lib/hive/rest/contacts.rb +2 -4
  39. data/lib/hive/rest/redirects.rb +13 -0
  40. data/lib/hive/rest/sites.rb +17 -0
  41. data/lib/hive/site.rb +33 -0
  42. data/lib/hive/version.rb +3 -3
  43. data/spec/hive/activities/contact/subscription_form_activity_spec.rb +15 -0
  44. data/spec/hive/activities/e_commerce/purchase_activity_spec.rb +4 -0
  45. data/spec/hive/activities/factory_spec.rb +16 -0
  46. data/spec/hive/activities/shipping/shipping_delivered_acitivty_spec.rb +10 -0
  47. data/spec/hive/activities/shipping/shipping_shipped_acitivty_spec.rb +21 -0
  48. data/spec/hive/activities/shipping/shipping_status_changed_acitivty_spec.rb +10 -0
  49. data/spec/hive/rest/contacts_spec.rb +10 -9
  50. data/spec/hive/rest/redirects_spec.rb +12 -0
  51. data/spec/hive/rest/sites_spec.rb +17 -0
  52. metadata +30 -2
@@ -0,0 +1,109 @@
1
+ # THIS IS A GENERATED FILE, DO NOT EDIT THIS
2
+ # Generated on 2015-02-19T18:01:11.452Z
3
+
4
+ require 'hashie'
5
+ require 'hive/extensions/hashie_validate_enum'
6
+
7
+ module Hive
8
+ module Activities
9
+ module Shipping
10
+ class Variant < Hashie::Trash
11
+ include Hashie::Extensions::IgnoreUndeclared
12
+
13
+ property :title, required: true
14
+ property :value
15
+ end
16
+
17
+ class Metadata < Hashie::Trash
18
+ include Hashie::Extensions::IgnoreUndeclared
19
+
20
+ property :name, required: true
21
+ property :value, required: true
22
+ end
23
+
24
+ class Item < Hashie::Trash
25
+ include Hashie::Extensions::IgnoreUndeclared
26
+ include Hashie::Extensions::Coercion
27
+
28
+ coerce_key :variants, Array[Variant]
29
+ coerce_key :categories, Array[String]
30
+ coerce_key :metadata, Array[Metadata]
31
+
32
+ property :id, required: true
33
+ property :sku
34
+ property :title, required: true
35
+ property :quantity, required: true
36
+ property :price
37
+ property :formattedPrice
38
+ property :currency, required: true
39
+ property :productLink
40
+ property :variants, default: []
41
+ property :categories, default: []
42
+ property :metadata, default: []
43
+
44
+ def add_variant(args)
45
+ variants << Variant.new(args)
46
+ end
47
+
48
+ def add_metadata(args)
49
+ metadata << Metadata.new(args)
50
+ end
51
+ end
52
+
53
+ class DeliveryEstimate < Hashie::Trash
54
+ include Hashie::Extensions::IgnoreUndeclared
55
+
56
+ property :start
57
+ property :end
58
+ end
59
+
60
+ class ShippingDetail < Hashie::Trash
61
+ include Hashie::Extensions::IgnoreUndeclared
62
+ include Hashie::Extensions::Coercion
63
+
64
+ coerce_key :deliveryEstimate, DeliveryEstimate
65
+
66
+ property :method, required: true
67
+ property :tracking
68
+ property :deliveryEstimate, required: true
69
+ end
70
+
71
+ class ShippingAddres < Hashie::Trash
72
+ include Hashie::Extensions::IgnoreUndeclared
73
+
74
+ property :firstName
75
+ property :lastName
76
+ property :email
77
+ property :phone
78
+ property :country
79
+ property :countryCode
80
+ property :region
81
+ property :regionCode
82
+ property :city
83
+ property :address1
84
+ property :address2
85
+ property :zip
86
+ property :company
87
+ end
88
+
89
+ class ShippedActivity < Hashie::Trash
90
+ include Hashie::Extensions::IgnoreUndeclared
91
+ include Hashie::Extensions::Coercion
92
+
93
+ coerce_key :items, Array[Item]
94
+ coerce_key :shippingDetails, ShippingDetail
95
+ coerce_key :shippingAddress, ShippingAddres
96
+
97
+ property :orderId, required: true
98
+ property :items, default: [], required: true
99
+ property :shippingDetails
100
+ property :shippingAddress
101
+ property :note
102
+
103
+ def add_item(args)
104
+ items << Item.new(args)
105
+ end
106
+ end
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,51 @@
1
+ # THIS IS A GENERATED FILE, DO NOT EDIT THIS
2
+ # Generated on 2014-10-30T15:13:42.430Z
3
+
4
+ require 'hashie'
5
+ require 'hive/extensions/hashie_validate_enum'
6
+
7
+ module Hive
8
+ module Activities
9
+ module Shipping
10
+ class ShippingEstimate < Hashie::Trash
11
+ include Hashie::Extensions::IgnoreUndeclared
12
+
13
+ property :start
14
+ property :end
15
+ end
16
+
17
+ class StatusChangeActivity < Hashie::Trash
18
+ include Hashie::Extensions::IgnoreUndeclared
19
+ include Hashie::Extensions::Coercion
20
+
21
+ class ShippingDetail < Hashie::Trash
22
+ include Hashie::Extensions::IgnoreUndeclared
23
+ include Hashie::Extensions::Coercion
24
+
25
+ coerce_key :shippingEstimate, ShippingEstimate
26
+ coerce_key :deliveryEstimate, DeliveryEstimate
27
+
28
+ property :method
29
+ property :tracking
30
+ property :shippingEstimate
31
+ property :deliveryEstimate
32
+ end
33
+
34
+ coerce_key :items, Array[Item]
35
+ coerce_key :shippingDetails, ShippingDetail
36
+ coerce_key :shippingAddress, ShippingAddres
37
+
38
+ property :orderId, required: true
39
+ property :status, required: true, transform_with: Hashie::Validate.enum(%w(awaiting_shipment awaiting_payment awaiting_fulfillment partially_shipped))
40
+ property :items, default: [], required: true
41
+ property :shippingDetails
42
+ property :shippingAddress
43
+ property :note
44
+
45
+ def add_item(args)
46
+ items << Item.new(args)
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,51 @@
1
+ # THIS IS A GENERATED FILE, DO NOT EDIT THIS
2
+ # Generated on 2015-02-19T18:01:11.497Z
3
+
4
+ require 'hashie'
5
+ require 'hive/extensions/hashie_validate_enum'
6
+
7
+ module Hive
8
+ module Activities
9
+ module Shipping
10
+ class ShippingEstimate < Hashie::Trash
11
+ include Hashie::Extensions::IgnoreUndeclared
12
+
13
+ property :start
14
+ property :end
15
+ end
16
+
17
+ class StatusChangedActivity < Hashie::Trash
18
+ include Hashie::Extensions::IgnoreUndeclared
19
+ include Hashie::Extensions::Coercion
20
+
21
+ class ShippingDetail < Hashie::Trash
22
+ include Hashie::Extensions::IgnoreUndeclared
23
+ include Hashie::Extensions::Coercion
24
+
25
+ coerce_key :shippingEstimate, ShippingEstimate
26
+ coerce_key :deliveryEstimate, DeliveryEstimate
27
+
28
+ property :method
29
+ property :tracking
30
+ property :shippingEstimate
31
+ property :deliveryEstimate
32
+ end
33
+
34
+ coerce_key :items, Array[Item]
35
+ coerce_key :shippingDetails, ShippingDetail
36
+ coerce_key :shippingAddress, ShippingAddres
37
+
38
+ property :orderId, required: true
39
+ property :status, required: true, transform_with: Hashie::Validate.enum(%w(AWAITING_SHIPMENT AWAITING_PAYMENT AWAITING_FULFILMENT PARTIALLY_SHIPPED))
40
+ property :items, default: [], required: true
41
+ property :shippingDetails
42
+ property :shippingAddress
43
+ property :note
44
+
45
+ def add_item(args)
46
+ items << Item.new(args)
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,19 @@
1
+ require 'hashie'
2
+
3
+ module Hive
4
+ class Redirect < Hashie::Trash
5
+ include Hashie::Extensions::IgnoreUndeclared
6
+
7
+ property :id
8
+ property :name
9
+ property :description
10
+ property :target
11
+ end
12
+
13
+ class Redirects < Hashie::Trash
14
+ include Hashie::Extensions::IgnoreUndeclared
15
+ include Hashie::Extensions::Coercion
16
+
17
+ coerce_key :redirects, Array[Redirect]
18
+ end
19
+ end
data/lib/hive/rest/api.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  require 'hive/rest/contacts'
2
2
  require 'hive/rest/activities'
3
3
  require 'hive/rest/insights'
4
+ require 'hive/rest/sites'
5
+ require 'hive/rest/redirects'
4
6
 
5
7
  module Hive
6
8
  module REST
@@ -8,6 +10,8 @@ module Hive
8
10
  include Hive::REST::Contacts
9
11
  include Hive::REST::Activities
10
12
  include Hive::REST::Insights
13
+ include Hive::REST::Sites
14
+ include Hive::REST::Redirects
11
15
  end
12
16
  end
13
17
  end
@@ -34,10 +34,8 @@ module Hive
34
34
  perform_with_cursor(:get, 'v1/contacts/subscribers', Hive::ContactSubscriber)
35
35
  end
36
36
 
37
- def update_contact(_contact_id, _contact)
38
- fail NotImplementedError, 'Update contacts is not available!'
39
-
40
- # edit_contact_field("v1/contacts/#{contact_id}", contact)
37
+ def patch_contact(id, patch_operations, modified_at)
38
+ perform_with_object(:patch, "v1/contacts/#{id}", Hive::Contact, body: patch_operations.to_json, params: { modifiedAt: modified_at })
41
39
  end
42
40
 
43
41
  def update_contact_name(id, name, modified_at)
@@ -0,0 +1,13 @@
1
+ require 'hive/redirect'
2
+
3
+ module Hive
4
+ module REST
5
+ module Redirects
6
+ include Hive::Util
7
+
8
+ def redirects(query_options = {})
9
+ perform_with_object(:get, 'v1/redirects', Hive::Redirects, params: query_options)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ require 'hive/site'
2
+
3
+ module Hive
4
+ module REST
5
+ module Sites
6
+ include Hive::Util
7
+
8
+ def sites_site(query_options = {})
9
+ perform_with_object(:get, 'v1/sites/site', Hive::Site, params: query_options)
10
+ end
11
+
12
+ def sites_site_pages(query_options = {})
13
+ perform_with_object(:get, 'v1/sites/site/pages', Hive::SitePages, params: query_options)
14
+ end
15
+ end
16
+ end
17
+ end
data/lib/hive/site.rb ADDED
@@ -0,0 +1,33 @@
1
+ require 'hashie'
2
+
3
+ module Hive
4
+ class Site < Hashie::Trash
5
+ include Hashie::Extensions::IgnoreUndeclared
6
+ include Hashie::Extensions::Coercion
7
+
8
+ coerce_key :url
9
+ coerce_key :status
10
+
11
+ property :url
12
+ property :status
13
+ end
14
+
15
+ class Page < Hashie::Trash
16
+ include Hashie::Extensions::IgnoreUndeclared
17
+
18
+ property :path
19
+ property :wixPageId
20
+ property :appPageId
21
+ end
22
+
23
+ class SitePages < Hashie::Trash
24
+ include Hashie::Extensions::IgnoreUndeclared
25
+ include Hashie::Extensions::Coercion
26
+
27
+ coerce_key :siteUrl, Site
28
+ coerce_key :pages, Array[Page]
29
+
30
+ property :siteUrl
31
+ property :pages, default: []
32
+ end
33
+ end
data/lib/hive/version.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  module Hive
2
2
  class Version
3
- MAJOR = 0
4
- MINOR = 9
5
- PATCH = 2
3
+ MAJOR = 1
4
+ MINOR = 0
5
+ PATCH = 0
6
6
 
7
7
  class << self
8
8
  # @return [String]
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'CONTACT_SUBSCRIPTION_FORM' do
4
+
5
+ email = 'karen@meep.com'
6
+ phone = '+1-555-555-555'
7
+ name = {prefix: 'sir', first: 'mix', middle: 'a lot', last: 'the', suffix: 'III'}
8
+
9
+ subject(:create_activity) {ACTIVITIES_FACTORY::CONTACT_SUBSCRIPTION_FORM.klass.new( email: email, phone: phone, name: name )}
10
+
11
+ it '.add_field' do
12
+ create_activity.add_field( name: 'custom', value: 'value' )
13
+ end
14
+
15
+ end
@@ -15,5 +15,9 @@ describe 'E_COMMERCE_PURCHASE' do
15
15
  create_activity.add_item( id: 1, title: 'title', quantity: 1, currency: 'EUR' )
16
16
  create_activity.items.first.add_variant( title: 'title' )
17
17
  end
18
+ it '.add_metadata' do
19
+ create_activity.add_item( id: 1, title: 'title', quantity: 1, currency: 'EUR' )
20
+ create_activity.items.first.add_metadata( name: 'custom', value: 'value' )
21
+ end
18
22
  end
19
23
  end
@@ -6,6 +6,10 @@ describe Hive::Activities do
6
6
  it '#CONTACT_CONTACT_FORM' do
7
7
  expect(Hive::Activities::CONTACT_CONTACT_FORM.klass).to eq Hive::Activities.class_for_type(Hive::Activities::CONTACT_CONTACT_FORM.type)
8
8
  end
9
+
10
+ it '#CONTACT_SUBSCRIPTION_FORM' do
11
+ expect(Hive::Activities::CONTACT_SUBSCRIPTION_FORM.klass).to eq Hive::Activities.class_for_type(Hive::Activities::CONTACT_SUBSCRIPTION_FORM.type)
12
+ end
9
13
 
10
14
  it '#CONTACTS_CREATE' do
11
15
  expect(Hive::Activities::CONTACTS_CREATE.klass).to eq Hive::Activities.class_for_type(Hive::Activities::CONTACTS_CREATE.type)
@@ -75,6 +79,18 @@ describe Hive::Activities do
75
79
  expect(Hive::Activities::SCHEDULER_APPOINTMENT.klass).to eq Hive::Activities.class_for_type(Hive::Activities::SCHEDULER_APPOINTMENT.type)
76
80
  end
77
81
 
82
+ it '#SHIPPING_DELIVERED' do
83
+ expect(Hive::Activities::SHIPPING_DELIVERED.klass).to eq Hive::Activities.class_for_type(Hive::Activities::SHIPPING_DELIVERED.type)
84
+ end
85
+
86
+ it '#SHIPPING_SHIPPED' do
87
+ expect(Hive::Activities::SHIPPING_SHIPPED.klass).to eq Hive::Activities.class_for_type(Hive::Activities::SHIPPING_SHIPPED.type)
88
+ end
89
+
90
+ it '#SHIPPING_STATUS_CHANGED' do
91
+ expect(Hive::Activities::SHIPPING_STATUS_CHANGED.klass).to eq Hive::Activities.class_for_type(Hive::Activities::SHIPPING_STATUS_CHANGED.type)
92
+ end
93
+
78
94
  it 'Invalid type' do
79
95
  expect(Hive::Activities.class_for_type('invalid')).to be_nil
80
96
  end
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'SHIPPING_DELIVERED' do
4
+
5
+ subject(:create_activity) { ACTIVITIES_FACTORY::SHIPPING_DELIVERED.klass.new( orderId: '11111') }
6
+
7
+ it '.add_item' do
8
+ create_activity.add_item( id: 1, title: 'title', quantity: 1, currency: 'EUR' )
9
+ end
10
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'SHIPPING_SHIPPED' do
4
+
5
+ subject(:create_activity) { ACTIVITIES_FACTORY::SHIPPING_SHIPPED.klass.new( orderId: '11111') }
6
+
7
+ it '.add_item' do
8
+ create_activity.add_item( id: 1, title: 'title', quantity: 1, currency: 'EUR' )
9
+ end
10
+
11
+ context 'SHIPPING_SHIPPED::Item' do
12
+ it '.add_variant' do
13
+ create_activity.add_item( id: 1, title: 'title', quantity: 1, currency: 'EUR' )
14
+ create_activity.items.first.add_variant( title: 'title' )
15
+ end
16
+ it '.add_metadata' do
17
+ create_activity.add_item( id: 1, title: 'title', quantity: 1, currency: 'EUR' )
18
+ create_activity.items.first.add_metadata( name: 'custom', value: 'value' )
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'SHIPPING_STATUS_CHANGED' do
4
+
5
+ subject(:create_activity) { ACTIVITIES_FACTORY::SHIPPING_STATUS_CHANGED.klass.new( orderId: '11111', status: 'AWAITING_SHIPMENT') }
6
+
7
+ it '.add_item' do
8
+ create_activity.add_item( id: 1, title: 'title', quantity: 1, currency: 'EUR' )
9
+ end
10
+ end