Ghost/ghost/core/test/integration/services/last-seen-at-updater.test.js

47 lines
1.9 KiB
JavaScript
Raw Normal View History

require('should');
const {agentProvider, fixtureManager, mockManager} = require('../../utils/e2e-framework');
const models = require('../../../core/server/models');
const assert = require('assert/strict');
let agent;
describe('Last Seen At Updater', function () {
before(async function () {
agent = await agentProvider.getAdminAPIAgent();
await fixtureManager.init('newsletters', 'members:newsletters');
await agent.loginAsOwner();
});
it('updateLastSeenAtWithoutKnownLastSeen', async function () {
const membersEvents = require('../../../core/server/services/members-events');
// Fire lots of EmailOpenedEvent for the same
const memberId = fixtureManager.get('members', 0).id;
const firstDate = new Date(Date.UTC(2099, 11, 31, 21, 0, 0, 0));
// In UTC this is 2099-12-31 21:00:00
// In CET this is 2099-12-31 22:00:00
const secondDate = new Date(Date.UTC(2099, 11, 31, 22, 0, 0, 0));
// In UTC this is 2099-12-31 22:00:00
// In CET this is 2099-12-31 23:00:00
const newDay = new Date(Date.UTC(2099, 11, 31, 23, 0, 0, 0));
// In UTC this is 2099-12-31 23:00:00
// In CET this is 2100-01-01 00:00:00
async function assertLastSeen(date) {
const member = await models.Member.findOne({id: memberId}, {require: true});
assert.equal(member.get('last_seen_at').getTime(), date.getTime());
}
mockManager.mockSetting('timezone', 'CET');
await membersEvents.lastSeenAtUpdater.updateLastSeenAtWithoutKnownLastSeen(memberId, firstDate);
await assertLastSeen(firstDate);
await membersEvents.lastSeenAtUpdater.updateLastSeenAtWithoutKnownLastSeen(memberId, secondDate);
await assertLastSeen(firstDate); // not changed
await membersEvents.lastSeenAtUpdater.updateLastSeenAtWithoutKnownLastSeen(memberId, newDay);
await assertLastSeen(newDay); // changed
});
});