Skip to content

Commit

Permalink
feat: gaec migration
Browse files Browse the repository at this point in the history
  • Loading branch information
AASHISH MALIK committed Nov 5, 2024
1 parent ba694a5 commit f788f38
Show file tree
Hide file tree
Showing 3 changed files with 384 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,11 @@

const get = require('get-value');
const { cloneDeep, isNumber } = require('lodash');
const { InstrumentationError, ConfigurationError } = require('@rudderstack/integrations-lib');
const {
InstrumentationError,
ConfigurationError,
isDefinedAndNotNull,
} = require('@rudderstack/integrations-lib');
const isString = require('lodash/isString');
const {
constructPayload,
Expand All @@ -11,6 +15,7 @@ const {
removeHyphens,
simpleProcessRouterDest,
getAccessToken,
isDefined,
} = require('../../util');

const { trackMapping, BASE_ENDPOINT } = require('./config');
Expand Down Expand Up @@ -38,6 +43,16 @@ const responseBuilder = async (metadata, message, { Config }, payload) => {
const { event } = message;
const { subAccount } = Config;
let { customerId, loginCustomerId } = Config;
const { configData } = Config;

if (isDefinedAndNotNull(configData)) {
const configDetails = JSON.parse(Config);
customerId = configDetails.customerId;

Check warning on line 50 in src/v0/destinations/google_adwords_enhanced_conversions/transform.js

View check run for this annotation

Codecov / codecov/patch

src/v0/destinations/google_adwords_enhanced_conversions/transform.js#L50

Added line #L50 was not covered by tests
if (isDefined(configDetails.loginCustomerId)) {
loginCustomerId = configDetails.loginCustomerId;

Check warning on line 52 in src/v0/destinations/google_adwords_enhanced_conversions/transform.js

View check run for this annotation

Codecov / codecov/patch

src/v0/destinations/google_adwords_enhanced_conversions/transform.js#L52

Added line #L52 was not covered by tests
}
}

if (isNumber(customerId)) {
customerId = customerId.toString();
}
Expand All @@ -63,6 +78,11 @@ const responseBuilder = async (metadata, message, { Config }, payload) => {
response.headers['login-customer-id'] = filteredLoginCustomerId;
} else throw new ConfigurationError(`LoginCustomerId is required as subAccount is true.`);

if (loginCustomerId) {
const filteredLoginCustomerId = removeHyphens(loginCustomerId);
response.headers['login-customer-id'] = filteredLoginCustomerId;
}

return response;
};

Expand All @@ -71,8 +91,14 @@ const processTrackEvent = async (metadata, message, destination) => {
const { Config } = destination;
const { event } = message;
const { listOfConversions } = Config;
if (listOfConversions.some((i) => i.conversions === event)) {
flag = 1;
if (listOfConversions && listOfConversions.length > 0) {
if (typeof listOfConversions[0] === 'string') {
if (listOfConversions.includes(event)) {
flag = 1;
}
} else if (listOfConversions.some((i) => i.conversions === event)) {
flag = 1;
}
}
if (event === undefined || event === '' || flag === 0) {
throw new ConfigurationError(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1720,4 +1720,194 @@ export const data = [
},
},
},
{
name: 'google_adwords_enhanced_conversions',
description: 'Success test with configDetails',
feature: 'processor',
module: 'destination',
version: 'v0',
input: {
request: {
body: [
{
metadata: {
secret: {
access_token: 'abcd1234',
refresh_token: 'efgh5678',
developer_token: 'ijkl91011',
},
},
destination: {
Config: {
rudderAccountId: '25u5whFH7gVTnCiAjn4ykoCLGoC',
listOfConversions: ['Page View', 'Product Added'],
authStatus: 'active',
configData: '{"customerId": "1234567890", "loginCustomerId": ""}',
},
},
message: {
channel: 'web',
context: {
app: {
build: '1.0.0',
name: 'RudderLabs JavaScript SDK',
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
traits: {
phone: '912382193',
firstName: 'John',
lastName: 'Gomes',
city: 'London',
state: 'UK',
countryCode: 'us',
streetAddress: '71 Cherry Court SOUTHAMPTON SO53 5PD UK',
},
library: {
name: 'RudderLabs JavaScript SDK',
version: '1.0.0',
},
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
os: {
name: '',
version: '',
},
screen: {
density: 2,
},
},
event: 'Page View',
type: 'track',
messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
originalTimestamp: '2019-10-14T11:15:18.299Z',
anonymousId: '00000000000000000000000000',
userId: '12345',
properties: {
gclid: 'gclid1234',
conversionDateTime: '2022-01-01 12:32:45-08:00',
adjustedValue: '10',
currency: 'INR',
adjustmentDateTime: '2022-01-01 12:32:45-08:00',
partialFailure: true,
campaignId: '1',
templateId: '0',
order_id: 10000,
total: 1000,
products: [
{
product_id: '507f1f77bcf86cd799439011',
sku: '45790-32',
name: 'Monopoly: 3rd Edition',
price: '19',
position: '1',
category: 'cars',
url: 'https://www.example.com/product/path',
image_url: 'https://www.example.com/product/path.jpg',
quantity: '2',
},
{
product_id: '507f1f77bcf86cd7994390112',
sku: '45790-322',
name: 'Monopoly: 3rd Edition2',
price: '192',
quantity: 22,
position: '12',
category: 'Cars2',
url: 'https://www.example.com/product/path2',
image_url: 'https://www.example.com/product/path.jpg2',
},
],
},
integrations: {
All: true,
},
name: 'ApplicationLoaded',
sentAt: '2019-10-14T11:15:53.296Z',
},
},
],
},
},
output: {
response: {
status: 200,
body: [
{
output: {
version: '1',
type: 'REST',
method: 'POST',
endpoint: `https://googleads.googleapis.com/${API_VERSION}/customers/1234567890:uploadConversionAdjustments`,
headers: {
Authorization: 'Bearer abcd1234',
'Content-Type': 'application/json',
'developer-token': 'ijkl91011',
},
params: {
event: 'Page View',
customerId: '1234567890',
},
body: {
JSON: {
conversionAdjustments: [
{
gclidDateTimePair: {
gclid: 'gclid1234',
conversionDateTime: '2022-01-01 12:32:45-08:00',
},
restatementValue: {
adjustedValue: 10,
currencyCode: 'INR',
},
orderId: '10000',
adjustmentDateTime: '2022-01-01 12:32:45-08:00',
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
userIdentifiers: [
{
hashedPhoneNumber:
'04387707e6cbed8c4538c81cc570ed9252d579469f36c273839b26d784e4bdbe',
},
{
addressInfo: {
hashedFirstName:
'a8cfcd74832004951b4408cdb0a5dbcd8c7e52d43f7fe244bf720582e05241da',
hashedLastName:
'1c574b17eefa532b6d61c963550a82d2d3dfca4a7fb69e183374cfafd5328ee4',
state: 'UK',
city: 'London',
countryCode: 'us',
hashedStreetAddress:
'9a4d2e50828448f137f119a3ebdbbbab8d6731234a67595fdbfeb2a2315dd550',
},
},
],
adjustmentType: 'ENHANCEMENT',
},
],
partialFailure: true,
},
JSON_ARRAY: {},
XML: {},
FORM: {},
},
files: {},
userId: '',
},
metadata: {
secret: {
access_token: 'abcd1234',
refresh_token: 'efgh5678',
developer_token: 'ijkl91011',
},
},
statusCode: 200,
},
],
},
},
},
];
Loading

0 comments on commit f788f38

Please sign in to comment.