talon_one 0.1.1 → 0.1.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ec021679d2ba4a56723eb77aaf81c78c80f22902
4
- data.tar.gz: 571de8f8d7a4fd85340939901160f2bdc2126e37
3
+ metadata.gz: be0aa81409b89e297ccc13d905de2740f63107bd
4
+ data.tar.gz: ec7e40ff88c7a4eebf2fc055069bc00c4acd6212
5
5
  SHA512:
6
- metadata.gz: 360124e2dc690146fc46ca4d416da36a7a87d28430957a8760dae05ce206154ff01e7b79c2b16b526d337f494e0bb31a994a43408648f962864bfda58c03e020
7
- data.tar.gz: 43bea9701af3416dc131be0bec6b54e507cb5a5924739e2c245676981de57f65cf4b9f4f21d556ac02b75f605c7957cbec88f1695ff079e909e9f6cc17127820
6
+ metadata.gz: 461023a4eecc0b42bfbebc2c9b6eb0c3bbeee1507c0e9665972b3b73612dd931b5225b1fee538e84d67cd63c3de5e23c5cc17dd765cccff24ccb4aa36e6abac3
7
+ data.tar.gz: 8bc770ef1d1c05a38120e7b5d178100824c8ecfb811c3280b39ae2a11faefe29e790ebe748bf969b0d693b51458be5bcc92ea0711b37b10ff2b430f073dfe6c5
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 0.1.2 / 2018-04-27
2
+
3
+ * [FEATURE] event meta-data is now exposed as `event.meta.coupon_data` and `event.meta.campaign_data`
4
+
1
5
  # 0.1.1 / 2018-02-26
2
6
 
3
7
  * [FEATURE] campaign_id is now an exposed attribute of the effect class
@@ -1,4 +1,5 @@
1
1
  require_relative './effect'
2
+ require_relative "./meta_data"
2
3
 
3
4
  module TalonOne
4
5
  module Integration
@@ -25,6 +26,10 @@ module TalonOne
25
26
  end
26
27
  end
27
28
 
29
+ def meta
30
+ @meta ||= TalonOne::Integration::MetaData.new @raw["meta"]
31
+ end
32
+
28
33
  def accepted_coupon?
29
34
  effects.any? {|e| e.function == "acceptCoupon"}
30
35
  end
@@ -0,0 +1,18 @@
1
+ module TalonOne
2
+ module Integration
3
+ class MetaData
4
+ def initialize(raw_data)
5
+ @raw = raw_data
6
+ end
7
+
8
+ def campaign_data
9
+ @raw["campaigns"]
10
+ end
11
+
12
+ def coupon_data
13
+ @raw["coupons"]
14
+ end
15
+ end
16
+ end
17
+ end
18
+
@@ -106,6 +106,10 @@ module TalonOne
106
106
  def delete_attribute(attribute_id)
107
107
  delete "/v1/attributes/#{attribute_id}"
108
108
  end
109
+
110
+ def create_coupon(application_id, campaign_id, params)
111
+ post "/v1/applications/#{application_id}/campaigns/#{campaign_id}/coupons", params
112
+ end
109
113
 
110
114
  end
111
115
  end
data/talon_one.gemspec CHANGED
@@ -1,11 +1,11 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'talon_one'
3
- s.version = '0.1.1'
4
- s.date = '2018-02-26'
3
+ s.version = '0.1.2'
4
+ s.date = '2018-04-27'
5
5
  s.summary = 'Client for the Talon.One API'
6
6
  s.description = 'A simple client for using the Talon.One API'
7
7
  s.authors = ['Talon.One GmbH']
8
- s.email = ['stephen@talon.one', 'vanwiele@talon.one']
8
+ s.email = ['support@talon.one']
9
9
  s.required_ruby_version = '>= 2.2.0'
10
10
  s.files = `git ls-files`.split("\n")
11
11
  s.require_paths = ['lib']
@@ -9,7 +9,7 @@ class TestIntegrationApiLive < LiveApiTest
9
9
  @campaign = management_client.create_campaign @app["id"], { name: "Test Campaign", state: 'disabled', tags: [], limits: [], features: [] }
10
10
  @ruleset = management_client.update_ruleset_for_campaign @app["id"], @campaign["id"], rules: [{
11
11
  title: "Free money for all!",
12
- condition: ["and", true],
12
+ condition: ["and", ["couponValid"]],
13
13
  effects: [
14
14
  ["setDiscount", "Free money", 45.55]
15
15
  ]
@@ -19,11 +19,17 @@ class TestIntegrationApiLive < LiveApiTest
19
19
 
20
20
  @event_type ||= "Viewed Page#{rand(36**3).to_s(36)}"
21
21
  @attribute ||= management_client.create_attribute({ entity: "Event", eventType: @event_type, name: "URL", title: "Page URL", type: "string", description: "The URL of the page that the user has viewed", tags: [], editable: true })
22
+
23
+ @coupon_code = "mycode"
24
+ @attribute_name = "Description#{rand(36**3).to_s(36)}"
25
+ @coupon_attribute ||= management_client.create_attribute({ entity: "Coupon", name: @attribute_name, title: "#{rand(36**3).to_s(36)}", type: "string", description: "Description for this coupon", tags: [], editable: true })
26
+ @coupon ||= management_client.create_coupon(@app["id"], @campaign["id"], { validCharacters: [], couponPattern: @coupon_code, usageLimit: 0, numberOfCoupons: 1, attributes: { @attribute_name.to_sym => "some text" } })
22
27
  end
23
28
 
24
29
  def teardown
25
30
  management_client.delete_application @app["id"]
26
31
  management_client.delete_attribute @attribute["id"]
32
+ management_client.delete_attribute @coupon_attribute["id"]
27
33
  end
28
34
 
29
35
  def integration_config
@@ -37,21 +43,23 @@ class TestIntegrationApiLive < LiveApiTest
37
43
  assert_instance_of TalonOne::Integration::Event, res.event
38
44
  assert !res.event.rejected_coupon?, "No coupon -> no rejectCoupon effect"
39
45
  assert !res.event.accepted_coupon?, "No coupon -> no acceptCoupon effect"
40
- assert_equal 1, res.event.effects.length
41
- assert_equal @campaign["id"], res.event.effects[0].campaign_id
42
- assert_equal "setDiscount", res.event.effects[0].function
43
- assert_equal @event_type, res.event.type
44
46
  assert_equal "a-session", res.event.session_id, "a-session"
45
47
  assert_equal({ "URL" => "http://example.com" }, res.event.attributes)
46
- assert_instance_of BigDecimal, res.session["discounts"]["Free money"]
47
48
  end
48
49
 
49
50
  def test_update_customer_session
50
- res = integration_client.update_customer_session "new-session", {
51
- coupon: "invalid coupon code",
51
+ res = integration_client.update_customer_session "new-session#{rand(36**3).to_s(36)}", {
52
+ coupon: @coupon_code,
52
53
  total: BigDecimal.new("45.55"),
53
54
  }
54
- assert res.event.rejected_coupon?, "invalid coupon code was rejected"
55
+ assert res.event.accepted_coupon?, "coupon code was accepted"
56
+ assert_equal 2, res.event.effects.length
57
+ assert_equal @campaign["id"], res.event.effects[0].campaign_id
58
+ assert_equal "acceptCoupon", res.event.effects[0].function
59
+ assert_equal "setDiscount", res.event.effects[1].function
60
+ assert_equal "talon_session_created", res.event.type
61
+ assert_instance_of BigDecimal, res.session["discounts"]["Free money"]
62
+ assert_equal "some text", res.event.meta.coupon_data[@coupon_code][@attribute_name]
55
63
  end
56
64
 
57
65
  def test_oj_calls_as_json
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: talon_one
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Talon.One GmbH
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-26 00:00:00.000000000 Z
11
+ date: 2018-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj
@@ -54,8 +54,7 @@ dependencies:
54
54
  version: 5.10.1
55
55
  description: A simple client for using the Talon.One API
56
56
  email:
57
- - stephen@talon.one
58
- - vanwiele@talon.one
57
+ - support@talon.one
59
58
  executables: []
60
59
  extensions: []
61
60
  extra_rdoc_files: []
@@ -71,6 +70,7 @@ files:
71
70
  - lib/integration/customer_profile.rb
72
71
  - lib/integration/effect.rb
73
72
  - lib/integration/event.rb
73
+ - lib/integration/meta_data.rb
74
74
  - lib/integration/referral_code.rb
75
75
  - lib/integration/rule_engine_result.rb
76
76
  - lib/integration/search_profiles_result.rb
@@ -100,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
100
  version: '0'
101
101
  requirements: []
102
102
  rubyforge_project:
103
- rubygems_version: 2.6.14
103
+ rubygems_version: 2.6.14.1
104
104
  signing_key:
105
105
  specification_version: 4
106
106
  summary: Client for the Talon.One API