Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 20 additions & 1 deletion lib/facebook_ads/ad_objects/server_side/user_data.rb
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,10 @@ def external_id=(external_id)
# The lead ID for the user in this transaction. This ID is associated with a lead generated by Facebook's Lead Ads.
attr_accessor :lead_id

# The ID issued by Meta when a person first logs into an instance of an app.
# Also known as the App-Scoped ID. This value must not be hashed.
attr_accessor :fb_login_id

# The first 5 letters of the first name.
attr_accessor :f5first

Expand Down Expand Up @@ -271,6 +275,7 @@ def madid=(madid)
# @param [String] fbp
# @param [String] subscription_id
# @param [String] lead_id
# @param [String] fb_login_id
# @param [String] f5first
# @param [String] f5last
# @param [String] fi
Expand All @@ -288,7 +293,7 @@ def initialize(email: nil, emails: nil, phone: nil, phones: nil, gender: nil, ge
first_name: nil, first_names: nil, city: nil, cities: nil, state: nil, states: nil,
country_code: nil, country_codes: nil, zip_code: nil, zip_codes: nil,
external_id: nil, external_ids: nil, client_ip_address: nil,
client_user_agent: nil, fbc: nil, fbp: nil, subscription_id: nil, lead_id: nil,
client_user_agent: nil, fbc: nil, fbp: nil, subscription_id: nil, lead_id: nil, fb_login_id: nil,
f5first: nil, f5last: nil, fi: nil, dobd: nil, dobm: nil, doby: nil, anon_id: nil, anon_ids: nil, madid:nil, madids: nil,
ctwa_clid: nil, page_id: nil)
validate_constructor_values(emails, email, 'emails', 'email')
Expand Down Expand Up @@ -387,6 +392,9 @@ def initialize(email: nil, emails: nil, phone: nil, phones: nil, gender: nil, ge
unless lead_id.nil?
self.lead_id = lead_id
end
unless fb_login_id.nil?
self.fb_login_id = fb_login_id
end
unless f5first.nil?
self.f5first = f5first
end
Expand Down Expand Up @@ -518,6 +526,9 @@ def build(attributes = {})
if attributes.has_key?(:'lead_id')
self.lead_id = attributes[:'lead_id']
end
if attributes.has_key?(:'fb_login_id')
self.fb_login_id = attributes[:'fb_login_id']
end

if attributes.has_key?(:'f5first')
self.f5first = attributes[:'f5first']
Expand Down Expand Up @@ -585,6 +596,7 @@ def ==(o)
fbp == o.fbp &&
subscription_id == o.subscription_id &&
lead_id == o.lead_id &&
fb_login_id == o.fb_login_id &&
f5first == o.f5first &&
f5last == o.f5last &&
fi == o.fi &&
Expand Down Expand Up @@ -623,6 +635,7 @@ def hash
fbp,
subscription_id,
lead_id,
fb_login_id,
f5first,
f5last,
fi,
Expand Down Expand Up @@ -692,6 +705,9 @@ def to_s
unless lead_id.nil?
hash['lead_id'] = lead_id
end
unless fb_login_id.nil?
hash['fb_login_id'] = fb_login_id
end
unless f5first.nil?
hash['f5first'] = f5first
end
Expand Down Expand Up @@ -780,6 +796,9 @@ def normalize
unless lead_id.nil?
hash['lead_id'] = lead_id
end
unless fb_login_id.nil?
hash['fb_login_id'] = fb_login_id
end
unless f5first.nil?
hash['f5first'] = FacebookAds::ServerSide::Util.normalize(f5first, 'f5first')
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
state: 'state-9',
zip_code: 'zip-code-10',
external_id: 'external-id-100',
fb_login_id: 'fb-login-id-111',
f5first: 'f5first-11',
lead_id: 'lead_id-112',
f5last: 'f5last-12',
Expand Down Expand Up @@ -57,6 +58,7 @@
'zp' => ["zp_#{attrs[:zip_code]}-normalized"],
'external_id' => [attrs[:external_id]],
'lead_id' => attrs[:lead_id],
'fb_login_id' => attrs[:fb_login_id],
'f5first' => "f5first_#{attrs[:f5first]}-normalized",
'f5last' => "f5last_#{attrs[:f5last]}-normalized",
'fi' => "fi_#{attrs[:fi]}-normalized",
Expand Down Expand Up @@ -119,6 +121,7 @@
state: 'state-9',
zip_code: 'zip-code-10',
lead_id: 'lead-id-100',
fb_login_id: 'fb-login-id-101',
f5first: 'f5first-11',
f5last: 'f5last-12',
fi: 'fi-13',
Expand All @@ -138,6 +141,7 @@
state: 'state-9',
zip_code: 'zip-code-10',
lead_id: 'lead-id-100',
fb_login_id: 'fb-login-id-101',
f5first: 'f5first-11',
f5last: 'f5last-12',
fi: 'fi-13',
Expand Down Expand Up @@ -167,6 +171,7 @@
state: 'state-9',
zip_code: 'zip-code-10',
lead_id: 'lead-id-100',
fb_login_id: 'fb-login-id-101',
f5first: 'f5first-11',
f5last: 'f5last-12',
fi: 'fi-13',
Expand All @@ -186,6 +191,7 @@
state: 'state-9',
zip_code: 'zip-code-10',
lead_id: 'lead-id-100',
# fb_login_id intentionally omitted to trigger inequality
f5first: 'f5first-11',
f5last: 'f5last-12',
fi: 'fi-13',
Expand Down Expand Up @@ -265,11 +271,13 @@
attrs = {
city: 'seattle',
cities: ['menlopark', 'paloalto'],
fb_login_id: 'fb-login-id-500',
}
user_data.build(attrs)

expect(user_data.city).to eq(attrs[:cities][0])
expect(user_data.cities).to eq(attrs[:cities])
expect(user_data.fb_login_id).to eq(attrs[:fb_login_id])
end

it 'constructor fails validation if both single and multi-values are specified' do
Expand Down