messaging-api-messenger
Version:
Messaging API client for Messenger
308 lines (272 loc) • 9.64 kB
text/typescript
import MockAdapter from 'axios-mock-adapter';
import MessengerClient from '../MessengerClient';
const ACCESS_TOKEN = '1234567890';
let axios;
let _create;
beforeEach(() => {
axios = require('axios');
_create = axios.create;
});
afterEach(() => {
axios.create = _create;
});
const createMock = (): { client: MessengerClient; mock: MockAdapter } => {
const client = new MessengerClient({
accessToken: ACCESS_TOKEN,
});
const mock = new MockAdapter(client.axios);
return { client, mock };
};
describe('Page Messaging Insights API', () => {
describe('#getInsights', () => {
it('should call api get Insight data', async () => {
const { client, mock } = createMock();
const reply = {
data: [
{
name: 'page_messages_reported_conversations_unique',
},
],
};
mock
.onGet(
`/me/insights/?metric=page_messages_reported_conversations_unique&access_token=${ACCESS_TOKEN}`
)
.reply(200, reply);
const res = await client.getInsights([
'page_messages_reported_conversations_unique',
]);
expect(res).toEqual([
{
name: 'page_messages_reported_conversations_unique',
},
]);
});
it('support multiple metrics', async () => {
const { client, mock } = createMock();
const reply = {
data: [
{
name: 'page_messages_reported_conversations_unique',
},
{
name: 'page_messages_blocked_conversations_unique',
},
],
};
mock
.onGet(
`/me/insights/?metric=page_messages_reported_conversations_unique%2Cpage_messages_blocked_conversations_unique&access_token=${ACCESS_TOKEN}`
)
.reply(200, reply);
const res = await client.getInsights([
'page_messages_reported_conversations_unique',
'page_messages_blocked_conversations_unique',
]);
expect(res).toEqual([
{
name: 'page_messages_reported_conversations_unique',
},
{
name: 'page_messages_blocked_conversations_unique',
},
]);
});
});
describe('#getBlockedConversations', () => {
it('should call api get Insight data', async () => {
const { client, mock } = createMock();
const reply = {
data: [
{
name: 'page_messages_blocked_conversations_unique',
period: 'day',
values: [
{
value: 83111,
end_time: '2017-02-02T08:00:00+0000',
},
{
value: 85215,
end_time: '2017-02-03T08:00:00+0000',
},
{
value: 87175,
end_time: '2017-02-04T08:00:00+0000',
},
],
title: 'Daily unique blocked conversations count',
description:
'Daily: The number of conversations with the Page that have been blocked.',
id: '1234567/insights/?metric=page_messages_blocked_conversations_unique/day',
},
],
};
mock
.onGet(
`/me/insights/?metric=page_messages_blocked_conversations_unique&access_token=${ACCESS_TOKEN}`
)
.reply(200, reply);
const res = await client.getBlockedConversations();
expect(res).toEqual({
name: 'page_messages_blocked_conversations_unique',
period: 'day',
values: [
{
value: 83111,
endTime: '2017-02-02T08:00:00+0000',
},
{
value: 85215,
endTime: '2017-02-03T08:00:00+0000',
},
{
value: 87175,
endTime: '2017-02-04T08:00:00+0000',
},
],
title: 'Daily unique blocked conversations count',
description:
'Daily: The number of conversations with the Page that have been blocked.',
id: '1234567/insights/?metric=page_messages_blocked_conversations_unique/day',
});
});
});
describe('#getReportedConversations', () => {
it('should call api get Insight data', async () => {
const { client, mock } = createMock();
const reply = {
data: [
{
name: 'page_messages_reported_conversations_unique',
period: 'day',
values: [
{
value: 83111,
end_time: '2017-02-02T08:00:00+0000',
},
{
value: 85215,
end_time: '2017-02-03T08:00:00+0000',
},
{
value: 87175,
end_time: '2017-02-04T08:00:00+0000',
},
],
title: 'Daily unique reported conversations count',
description:
'Daily: The number of conversations from your Page that have been reported by people for reasons such as spam, or containing inappropriate content.',
id: '1234567/insights/?metric=page_messages_reported_conversations_unique/day',
},
],
};
mock
.onGet(
`/me/insights/?metric=page_messages_reported_conversations_unique&access_token=${ACCESS_TOKEN}`
)
.reply(200, reply);
const res = await client.getReportedConversations();
expect(res).toEqual({
name: 'page_messages_reported_conversations_unique',
period: 'day',
values: [
{
value: 83111,
endTime: '2017-02-02T08:00:00+0000',
},
{
value: 85215,
endTime: '2017-02-03T08:00:00+0000',
},
{
value: 87175,
endTime: '2017-02-04T08:00:00+0000',
},
],
title: 'Daily unique reported conversations count',
description:
'Daily: The number of conversations from your Page that have been reported by people for reasons such as spam, or containing inappropriate content.',
id: '1234567/insights/?metric=page_messages_reported_conversations_unique/day',
});
});
});
describe('#getTotalMessagingConnections', () => {
it('should call api get Insight data', async () => {
const { client, mock } = createMock();
const reply = {
data: [
{
name: 'page_messages_total_messaging_connections',
period: 'day',
values: [
{ value: 1000, end_time: '2018-03-12T07:00:00+0000' },
{ value: 1000, end_time: '2018-03-13T07:00:00+0000' },
],
title: 'Messaging connections',
description:
'Daily: The number of people who have sent a message to your business, not including people who have blocked or reported your business on Messenger. (This number only includes connections made since October 2016.)',
id: '1386473101668063/insights/page_messages_total_messaging_connections/day',
},
],
};
mock
.onGet(
`/me/insights/?metric=page_messages_total_messaging_connections&access_token=${ACCESS_TOKEN}`
)
.reply(200, reply);
const res = await client.getTotalMessagingConnections();
expect(res).toEqual({
name: 'page_messages_total_messaging_connections',
period: 'day',
values: [
{ value: 1000, endTime: '2018-03-12T07:00:00+0000' },
{ value: 1000, endTime: '2018-03-13T07:00:00+0000' },
],
title: 'Messaging connections',
description:
'Daily: The number of people who have sent a message to your business, not including people who have blocked or reported your business on Messenger. (This number only includes connections made since October 2016.)',
id: '1386473101668063/insights/page_messages_total_messaging_connections/day',
});
});
});
describe('#getNewConversations', () => {
it('should call api get Insight data', async () => {
const { client, mock } = createMock();
const reply = {
data: [
{
name: 'page_messages_new_conversations_unique',
period: 'day',
values: [
{ value: 1, end_time: '2018-03-12T07:00:00+0000' },
{ value: 0, end_time: '2018-03-13T07:00:00+0000' },
],
title: 'Daily unique new conversations count',
description:
'Daily: The number of messaging conversations on Facebook Messenger that began with people who had never messaged with your business before.',
id: '1386473101668063/insights/page_messages_new_conversations_unique/day',
},
],
};
mock
.onGet(
`/me/insights/?metric=page_messages_new_conversations_unique&access_token=${ACCESS_TOKEN}`
)
.reply(200, reply);
const res = await client.getNewConversations();
expect(res).toEqual({
name: 'page_messages_new_conversations_unique',
period: 'day',
values: [
{ value: 1, endTime: '2018-03-12T07:00:00+0000' },
{ value: 0, endTime: '2018-03-13T07:00:00+0000' },
],
title: 'Daily unique new conversations count',
description:
'Daily: The number of messaging conversations on Facebook Messenger that began with people who had never messaged with your business before.',
id: '1386473101668063/insights/page_messages_new_conversations_unique/day',
});
});
});
});