readypulse 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eb619061c6077c81358068bebdbe9c805e064ff1
4
- data.tar.gz: e6557e3df3a2a6bd25ba84122e166d57aaca068d
3
+ metadata.gz: fe721caa7124aa1756b9a0dd36dd9f289351057d
4
+ data.tar.gz: 502184a64e3238a7a2880d481a205241edbf0d22
5
5
  SHA512:
6
- metadata.gz: d78867632538928ca4161be03bcc2dffecb0188e328646d5721fa7524db645e50848559a737450d8bfcb12168eadaacb0f84ec221e8a1c6eb4bf76cc81a60319
7
- data.tar.gz: 3cf8355d8305d3d786ca5e8b08a0bd5f7e14de388b490aa3d73d6873cca34b6c32c03cdf3e25c817d2eb0eb936c2a4ba17959977647add15cbdf9276d8fca82b
6
+ metadata.gz: 8eda93a28d0ede6aa07e30635be2fae4d889fb063f01709ee4f90b810f464af82e6ff62ba3d261bc2c8748ed9761a0c5f5155e1ffdd3481f78a45584cce286c3
7
+ data.tar.gz: f9e72c6e25c9cb77bd7498be111ec54b3c49662c1e0f1e67c1c02e52cfa77a706b2c9b9c2060e545050f53bc4eb1b9a01e7eb54dc5125c536042acef0d689d9a
@@ -54,14 +54,27 @@ module Readypulse
54
54
  #
55
55
  # returns an Image object with ImageType objects at the root too
56
56
 
57
- attr_accessor :products, :actor, :readypulse_content_score, :external_conversation_link
57
+ STRING_ATTRIBUTES = %w(id uniq_id external_network_id content_source
58
+ content_index type story_url
59
+ external_conversation_link user_text
60
+ timestamp social_timestamp sentiment)
61
+
62
+ BOOLEAN_ATTRIBUTES = %w(has_media is_consented is_incentivized
63
+ is_compliant is_approved)
64
+
65
+ # String and Boolean Attribute attr_accessor generated dynamically
66
+ attr_accessor :products, :actor,
67
+ :readypulse_content_score, :social_attributes, :cta
58
68
 
59
69
  def initialize(raw_image:)
60
- @readypulse_content_score = raw_image[:readypulse_content_score]
61
- @external_conversation_link = raw_image[:external_conversation_link]
62
- @products = raw_image.fetch(:products, [])
63
- @actor = raw_image[:actor]
70
+ build_string_attributes(raw_image)
71
+ build_boolean_attributes(raw_image)
64
72
 
73
+ @social_attributes = raw_image[:social_attributes]
74
+ @readypulse_content_score = raw_image[:readypulse_content_score]
75
+ @cta = raw_image[:cta]
76
+ @products = raw_image.fetch(:products, [{}])
77
+ @actor = raw_image.fetch(:actor, {})
65
78
 
66
79
  raw_image.fetch(:media, {}).fetch(:images, []).each do |raw_type|
67
80
  self.store(raw_type[:type], ImageType.new(raw_type: raw_type))
@@ -71,5 +84,32 @@ module Readypulse
71
84
  def types
72
85
  self.keys
73
86
  end
87
+
88
+ def inspect
89
+ instance_variables.inject([
90
+ "\n#TestClass",
91
+ "\tObject_i = #{object_id}",
92
+ "\tInstance variables:"
93
+ ]) do |result, item|
94
+ result << "\t\t#{item} = #{instance_variable_get(item)}"
95
+ result
96
+ end.join("\n")
97
+ end
98
+
99
+ private
100
+
101
+ def build_string_attributes(raw_image)
102
+ STRING_ATTRIBUTES.each do |attr_name|
103
+ self.class.send(:attr_accessor, attr_name)
104
+ instance_variable_set("@#{attr_name}", raw_image.fetch(attr_name.to_sym, nil))
105
+ end
106
+ end
107
+
108
+ def build_boolean_attributes(raw_image)
109
+ BOOLEAN_ATTRIBUTES.each do |attr_name|
110
+ self.class.send(:attr_accessor, attr_name)
111
+ instance_variable_set("@#{attr_name}", raw_image.fetch(attr_name.to_sym, nil))
112
+ end
113
+ end
74
114
  end
75
115
  end
@@ -1,3 +1,3 @@
1
1
  module Readypulse
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -2,12 +2,36 @@ module Readypulse
2
2
  RSpec.describe Image do
3
3
  subject(:image) {Image.new(raw_image: from_client)}
4
4
 
5
- its(:types) {is_expected.to eq(["email", "tile", "square-tile", "mobile-tile", "large", "original"])}
5
+ # String Attribute
6
+ its(:id) {is_expected.to eq(from_client[:id])}
7
+ its(:uniq_id) {is_expected.to eq(from_client[:uniq_id])}
8
+ its(:external_network_id) {is_expected.to eq(from_client[:external_network_id])}
9
+ its(:content_source) {is_expected.to eq(from_client[:content_source])}
10
+ its(:content_index) {is_expected.to eq(from_client[:content_index])}
11
+ its(:type) {is_expected.to eq(from_client[:type])}
12
+ its(:story_url) {is_expected.to eq(from_client[:story_url])}
13
+ its(:user_text) {is_expected.to eq(from_client[:user_text])}
14
+ its(:timestamp) {is_expected.to eq(from_client[:timestamp])}
15
+ its(:social_timestamp) {is_expected.to eq(from_client[:social_timestamp])}
16
+ its(:sentiment) {is_expected.to eq(from_client[:sentiment])}
17
+
18
+ # Boolean Attributes
19
+ its(:sentiment) {is_expected.to eq(from_client[:sentiment])}
20
+ its(:is_consented) {is_expected.to eq(from_client[:is_consented])}
21
+ its(:is_incentivized) {is_expected.to eq(from_client[:is_incentivized])}
22
+ its(:is_compliant) {is_expected.to eq(from_client[:is_compliant])}
23
+ its(:is_approved) {is_expected.to eq(from_client[:is_approved])}
24
+
25
+ # Fixnum Attributes
6
26
  its(:readypulse_content_score) {is_expected.to eq(from_client[:readypulse_content_score])}
7
- its(:external_conversation_link) {is_expected.to eq(from_client[:external_conversation_link])}
27
+
28
+ # Collection Attributes
29
+ its(:social_attributes) {is_expected.to eq(from_client[:social_attributes])}
8
30
  its(:products) {is_expected.to eq(from_client[:products])}
9
31
  its(:actor) {is_expected.to eq(from_client[:actor])}
10
32
 
33
+ its(:types) {is_expected.to eq(["email", "tile", "square-tile", "mobile-tile", "large", "original"])}
34
+
11
35
  it 'has image_type objects' do
12
36
  expect(image["email"]).to be_an(ImageType)
13
37
  expect(image["tile"]).to be_an(ImageType)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: readypulse
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chad Metcalf
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-03 00:00:00.000000000 Z
11
+ date: 2015-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler