calckey/packages/megalodon/lib/test/unit/parser.spec.js

142 lines
4.4 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var parser_1 = require("@/parser");
var account = {
id: '1',
username: 'h3poteto',
acct: 'h3poteto@pleroma.io',
display_name: 'h3poteto',
locked: false,
created_at: '2019-03-26T21:30:32',
followers_count: 10,
following_count: 10,
statuses_count: 100,
note: 'engineer',
url: 'https://pleroma.io',
avatar: '',
avatar_static: '',
header: '',
header_static: '',
emojis: [],
moved: null,
fields: [],
bot: false
};
var status = {
id: '1',
uri: 'http://example.com',
url: 'http://example.com',
account: account,
in_reply_to_id: null,
in_reply_to_account_id: null,
reblog: null,
content: 'hoge',
plain_content: 'hoge',
created_at: '2019-03-26T21:40:32',
emojis: [],
replies_count: 0,
reblogs_count: 0,
favourites_count: 0,
reblogged: null,
favourited: null,
muted: null,
sensitive: false,
spoiler_text: '',
visibility: 'public',
media_attachments: [],
mentions: [],
tags: [],
card: null,
poll: null,
application: {
name: 'Web'
},
language: null,
pinned: null,
emoji_reactions: [],
bookmarked: false,
quote: null
};
var notification = {
id: '1',
account: account,
status: status,
type: 'favourite',
created_at: '2019-04-01T17:01:32'
};
var conversation = {
id: '1',
accounts: [account],
last_status: status,
unread: true
};
describe('Parser', function () {
var parser;
beforeEach(function () {
parser = new parser_1.Parser();
});
describe('parse', function () {
describe('message is heartbeat', function () {
var message = ':thump\n';
it('should be called', function () {
var spy = jest.fn();
parser.on('heartbeat', spy);
parser.parse(message);
expect(spy).toHaveBeenLastCalledWith({});
});
});
describe('message is not json', function () {
describe('event is delete', function () {
var message = "event: delete\ndata: 12asdf34\n\n";
it('should be called', function () {
var spy = jest.fn();
parser.once('delete', spy);
parser.parse(message);
expect(spy).toHaveBeenCalledWith('12asdf34');
});
});
describe('event is not delete', function () {
var message = "event: event\ndata: 12asdf34\n\n";
it('should be error', function () {
var error = jest.fn();
var deleted = jest.fn();
parser.once('error', error);
parser.once('delete', deleted);
parser.parse(message);
expect(error).toHaveBeenCalled();
expect(deleted).not.toHaveBeenCalled();
});
});
});
describe('message is json', function () {
describe('event is update', function () {
var message = "event: update\ndata: ".concat(JSON.stringify(status), "\n\n");
it('should be called', function () {
var spy = jest.fn();
parser.once('update', spy);
parser.parse(message);
expect(spy).toHaveBeenCalledWith(status);
});
});
describe('event is notification', function () {
var message = "event: notification\ndata: ".concat(JSON.stringify(notification), "\n\n");
it('should be called', function () {
var spy = jest.fn();
parser.once('notification', spy);
parser.parse(message);
expect(spy).toHaveBeenCalledWith(notification);
});
});
describe('event is conversation', function () {
var message = "event: conversation\ndata: ".concat(JSON.stringify(conversation), "\n\n");
it('should be called', function () {
var spy = jest.fn();
parser.once('conversation', spy);
parser.parse(message);
expect(spy).toHaveBeenCalledWith(conversation);
});
});
});
});
});