@denizelderenbos/google-ads-api
Version:
Google Ads API Client Library for Node.js
263 lines • 9.42 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.mockParsedValues = exports.mockParseValue = exports.mockErrorMessage = exports.mockError = exports.mockMutationReturnValue = exports.mockTotalResultsCount = exports.mockSummaryRow = exports.mockQueryReturnValue = exports.mockMutations = exports.mockReportOptions = exports.mockGaqlQuery = exports.MOCK_LOGIN_CID = exports.MOCK_CID = exports.MOCK_REFRESH_TOKEN = exports.MOCK_DEVELOPER_TOKEN = exports.MOCK_CLIENT_SECRET = exports.MOCK_CLIENT_ID = void 0;
exports.mockPaginatedSearch = mockPaginatedSearch;
exports.mockSearchOnce = mockSearchOnce;
exports.mockBuildSearchStreamRequestAndService = mockBuildSearchStreamRequestAndService;
exports.mockBuildSearchRequestAndService = mockBuildSearchRequestAndService;
exports.mockBuildMutateRequestAndService = mockBuildMutateRequestAndService;
exports.mockGetGoogleAdsError = mockGetGoogleAdsError;
exports.mockQuery = mockQuery;
exports.mockParse = mockParse;
exports.noopParser = noopParser;
exports.mockMethod = mockMethod;
exports.failTestIfExecuted = failTestIfExecuted;
exports.newCustomer = newCustomer;
const stream_1 = require("stream");
const customer_1 = require("./customer");
const parser = __importStar(require("./parser"));
const protos_1 = require("./protos");
exports.MOCK_CLIENT_ID = "MOCK CLIENT ID";
exports.MOCK_CLIENT_SECRET = "MOCK CLIENT SECRET";
exports.MOCK_DEVELOPER_TOKEN = "MOCK DEVELOPER TOKEN";
exports.MOCK_REFRESH_TOKEN = "MOCK REFRESH TOKEN";
exports.MOCK_CID = "MOCK CID";
exports.MOCK_LOGIN_CID = "MOCK LOGIN CID";
exports.mockGaqlQuery = `SELECT campaign.resource_name FROM campaign LIMIT 1`;
exports.mockReportOptions = {
entity: "campaign",
attributes: ["campaign.resource_name"],
limit: 1,
};
exports.mockMutations = [
{ resource: "abc", entity: "campaign", operation: "create" },
];
exports.mockQueryReturnValue = [
{ campaign: { resource_name: "customers/1/campaigns/11" } },
{ campaign: { resource_name: "customers/2/campaigns/22" } },
{ campaign: { resource_name: "customers/3/campaigns/33" } },
];
exports.mockSummaryRow = {
metrics: { clicks: 90, impressions: 153 },
};
exports.mockTotalResultsCount = 23;
exports.mockMutationReturnValue = {
mutate_operation_responses: [],
toJSON: () => {
return {};
},
};
exports.mockError = {
errors: [
{
errorCode: {
queryError: protos_1.errors.QueryErrorEnum.QueryError.BAD_RESOURCE_TYPE_IN_FROM_CLAUSE,
},
message: "Error in campaigns: is not a valid resource name.",
},
],
};
exports.mockErrorMessage = "mock error message";
exports.mockParseValue = "mock parse value";
exports.mockParsedValues = [
exports.mockParseValue,
exports.mockParseValue,
exports.mockParseValue,
];
function mockPaginatedSearch(customer, includeTotalResultsCount = false) {
return (jest
// @ts-expect-error private method
.spyOn(customer, "paginatedSearch")
// @ts-expect-error
.mockImplementation((gaqlQuery, requestOptions, _parser) => {
const totalResultsCount = includeTotalResultsCount
? exports.mockTotalResultsCount
: undefined;
return {
response: _parser(exports.mockQueryReturnValue),
totalResultsCount,
};
}));
}
function mockSearchOnce({ customer, response, nextPageToken, includeTotalResultsCount, }) {
return (jest
// @ts-expect-error private method
.spyOn(customer, "search")
// @ts-expect-error
.mockImplementationOnce(() => {
return {
response,
nextPageToken,
totalResultsCount: includeTotalResultsCount
? exports.mockTotalResultsCount
: undefined,
};
}));
}
function mockBuildSearchStreamRequestAndService(customer) {
const mockStream = new stream_1.Readable({ objectMode: true });
const mockStreamData = (results) => {
const chunk = { results };
mockStream.push(chunk);
};
const mockStreamSummaryRow = () => {
const chunk = {
summary_row: exports.mockSummaryRow,
};
mockStream.push(chunk);
};
const mockStreamError = (error) => {
mockStream.destroy(error);
};
const mockStreamEnd = () => {
mockStream.push(null);
};
const spyBuild = jest
// @ts-expect-error protected method
.spyOn(customer, "buildSearchStreamRequestAndService")
// @ts-expect-error
.mockImplementation(() => {
return {
service: {
searchStream: () => mockStream,
},
request: {},
};
});
return {
spyBuild,
mockStreamData,
mockStreamSummaryRow,
mockStreamError,
mockStreamEnd,
};
}
function mockBuildSearchRequestAndService({ customer, shouldThrow = false, includeSummaryRow = false, includeTotalResultsCount = false, }) {
const mockService = {
search: () => {
if (shouldThrow) {
throw new Error(exports.mockErrorMessage);
}
const searchGoogleAdsResponse = {
summary_row: includeSummaryRow ? exports.mockSummaryRow : undefined,
total_results_count: includeTotalResultsCount
? exports.mockTotalResultsCount
: undefined,
};
return [exports.mockQueryReturnValue, null, searchGoogleAdsResponse];
},
};
const spyBuild = jest
// @ts-expect-error protected method
.spyOn(customer, "buildSearchRequestAndService")
// @ts-expect-error
.mockImplementation(() => {
return {
service: mockService,
request: {},
};
});
return { mockService, spyBuild };
}
function mockBuildMutateRequestAndService({ customer, shouldThrow = false, request, response, }) {
const mockService = {
mutate() {
if (shouldThrow) {
throw new Error(exports.mockErrorMessage);
}
return [response !== null && response !== void 0 ? response : exports.mockMutationReturnValue];
},
};
const spyBuild = jest
// @ts-expect-error protected method
.spyOn(customer, "buildMutationRequestAndService")
// @ts-expect-error
.mockImplementation(() => {
return {
service: mockService,
request: request !== null && request !== void 0 ? request : {},
};
});
return { mockService, spyBuild };
}
function mockGetGoogleAdsError(customer) {
return (jest
// @ts-expect-error protected method
.spyOn(customer, "getGoogleAdsError")
// @ts-expect-error
.mockImplementation(() => exports.mockError));
}
function mockQuery(customer) {
return (jest
// @ts-expect-error private method
.spyOn(customer, "querier")
// @ts-expect-error
.mockImplementation(() => {
return {
response: exports.mockQueryReturnValue,
totalResultsCount: exports.mockTotalResultsCount,
};
}));
}
function mockParse(mockParsedValues) {
return jest.spyOn(parser, "parse").mockImplementation(() => mockParsedValues);
}
function noopParser(rows) {
return rows;
}
function mockMethod() {
return {
method() {
return;
},
};
}
function failTestIfExecuted() {
expect(true).toBeFalsy();
}
function newCustomer(hooks, disableParsing = false) {
return new customer_1.Customer({
client_id: exports.MOCK_CLIENT_ID,
client_secret: exports.MOCK_CLIENT_SECRET,
developer_token: exports.MOCK_DEVELOPER_TOKEN,
disable_parsing: disableParsing,
}, {
refresh_token: exports.MOCK_REFRESH_TOKEN,
customer_id: exports.MOCK_CID,
login_customer_id: exports.MOCK_LOGIN_CID,
}, hooks);
}
//# sourceMappingURL=testUtils.js.map