fix(tests): Update test assertions and refine service interfaces
This commit is contained in:
@ -7,7 +7,8 @@ import { SenderReputationMonitor } from '../ts/deliverability/classes.senderrepu
|
||||
const cleanupTestData = () => {
|
||||
const reputationDataPath = plugins.path.join(paths.dataDir, 'reputation');
|
||||
if (plugins.fs.existsSync(reputationDataPath)) {
|
||||
plugins.smartfile.memory.unlinkDir(reputationDataPath);
|
||||
// Remove the directory recursively using fs instead of smartfile
|
||||
plugins.fs.rmSync(reputationDataPath, { recursive: true, force: true });
|
||||
}
|
||||
};
|
||||
|
||||
@ -27,11 +28,11 @@ tap.test('should initialize SenderReputationMonitor with default settings', asyn
|
||||
resetSingleton();
|
||||
const reputationMonitor = SenderReputationMonitor.getInstance();
|
||||
|
||||
expect(reputationMonitor).to.be.an('object');
|
||||
expect(reputationMonitor).toBeTruthy();
|
||||
// Check if the object has the expected methods
|
||||
expect(reputationMonitor.recordSendEvent).to.be.a('function');
|
||||
expect(reputationMonitor.getReputationData).to.be.a('function');
|
||||
expect(reputationMonitor.getReputationSummary).to.be.a('function');
|
||||
expect(typeof reputationMonitor.recordSendEvent).toEqual('function');
|
||||
expect(typeof reputationMonitor.getReputationData).toEqual('function');
|
||||
expect(typeof reputationMonitor.getReputationSummary).toEqual('function');
|
||||
});
|
||||
|
||||
// Test initialization with custom settings
|
||||
@ -52,8 +53,8 @@ tap.test('should initialize SenderReputationMonitor with custom settings', async
|
||||
|
||||
// Test retrieving reputation data
|
||||
const data = reputationMonitor.getReputationData('example.com');
|
||||
expect(data).to.be.an('object');
|
||||
expect(data.domain).to.equal('example.com');
|
||||
expect(data).toBeTruthy();
|
||||
expect(data.domain).toEqual('example.com');
|
||||
});
|
||||
|
||||
// Test recording and tracking send events
|
||||
@ -74,12 +75,12 @@ tap.test('should record send events and update metrics', async () => {
|
||||
// Check metrics
|
||||
const metrics = reputationMonitor.getReputationData('example.com');
|
||||
|
||||
expect(metrics).to.be.an('object');
|
||||
expect(metrics.volume.sent).to.equal(100);
|
||||
expect(metrics.volume.delivered).to.equal(95);
|
||||
expect(metrics.volume.hardBounces).to.equal(3);
|
||||
expect(metrics.volume.softBounces).to.equal(2);
|
||||
expect(metrics.complaints.total).to.equal(1);
|
||||
expect(metrics).toBeTruthy();
|
||||
expect(metrics.volume.sent).toEqual(100);
|
||||
expect(metrics.volume.delivered).toEqual(95);
|
||||
expect(metrics.volume.hardBounces).toEqual(3);
|
||||
expect(metrics.volume.softBounces).toEqual(2);
|
||||
expect(metrics.complaints.total).toEqual(1);
|
||||
});
|
||||
|
||||
// Test reputation score calculation
|
||||
@ -105,14 +106,14 @@ tap.test('should calculate reputation scores correctly', async () => {
|
||||
|
||||
// Get reputation summary
|
||||
const summary = reputationMonitor.getReputationSummary();
|
||||
expect(summary).to.be.an('array');
|
||||
expect(summary.length).to.be.at.least(3);
|
||||
expect(Array.isArray(summary)).toBeTrue();
|
||||
expect(summary.length >= 3).toBeTrue();
|
||||
|
||||
// Check that domains are included in the summary
|
||||
const domains = summary.map(item => item.domain);
|
||||
expect(domains).to.include('high.com');
|
||||
expect(domains).to.include('medium.com');
|
||||
expect(domains).to.include('low.com');
|
||||
expect(domains.includes('high.com')).toBeTrue();
|
||||
expect(domains.includes('medium.com')).toBeTrue();
|
||||
expect(domains.includes('low.com')).toBeTrue();
|
||||
});
|
||||
|
||||
// Test adding and removing domains
|
||||
@ -131,15 +132,15 @@ tap.test('should add and remove domains for monitoring', async () => {
|
||||
|
||||
// Check that data was recorded for the new domain
|
||||
const metrics = reputationMonitor.getReputationData('newdomain.com');
|
||||
expect(metrics).to.be.an('object');
|
||||
expect(metrics.volume.sent).to.equal(50);
|
||||
expect(metrics).toBeTruthy();
|
||||
expect(metrics.volume.sent).toEqual(50);
|
||||
|
||||
// Remove a domain
|
||||
reputationMonitor.removeDomain('newdomain.com');
|
||||
|
||||
// Check that data is no longer available
|
||||
const removedMetrics = reputationMonitor.getReputationData('newdomain.com');
|
||||
expect(removedMetrics).to.be.null;
|
||||
expect(removedMetrics === null).toBeTrue();
|
||||
});
|
||||
|
||||
// Test handling open and click events
|
||||
@ -160,11 +161,11 @@ tap.test('should track engagement metrics correctly', async () => {
|
||||
|
||||
// Check engagement metrics
|
||||
const metrics = reputationMonitor.getReputationData('example.com');
|
||||
expect(metrics).to.be.an('object');
|
||||
expect(metrics.engagement.opens).to.equal(500);
|
||||
expect(metrics.engagement.clicks).to.equal(250);
|
||||
expect(metrics.engagement.openRate).to.be.a('number');
|
||||
expect(metrics.engagement.clickRate).to.be.a('number');
|
||||
expect(metrics).toBeTruthy();
|
||||
expect(metrics.engagement.opens).toEqual(500);
|
||||
expect(metrics.engagement.clicks).toEqual(250);
|
||||
expect(typeof metrics.engagement.openRate).toEqual('number');
|
||||
expect(typeof metrics.engagement.clickRate).toEqual('number');
|
||||
});
|
||||
|
||||
// Test historical data tracking
|
||||
@ -186,13 +187,13 @@ tap.test('should store historical reputation data', async () => {
|
||||
const metrics = reputationMonitor.getReputationData('example.com');
|
||||
|
||||
// Check that historical data exists
|
||||
expect(metrics.historical).to.be.an('object');
|
||||
expect(metrics.historical.reputationScores).to.be.an('object');
|
||||
expect(metrics.historical).toBeTruthy();
|
||||
expect(metrics.historical.reputationScores).toBeTruthy();
|
||||
|
||||
// Check that daily send volume is tracked
|
||||
expect(metrics.volume.dailySendVolume).to.be.an('object');
|
||||
expect(metrics.volume.dailySendVolume).toBeTruthy();
|
||||
const todayStr = today.toISOString().split('T')[0];
|
||||
expect(metrics.volume.dailySendVolume[todayStr]).to.equal(1000);
|
||||
expect(metrics.volume.dailySendVolume[todayStr]).toEqual(1000);
|
||||
});
|
||||
|
||||
// Test event recording for different event types
|
||||
@ -216,18 +217,18 @@ tap.test('should correctly handle different event types', async () => {
|
||||
const metrics = reputationMonitor.getReputationData('example.com');
|
||||
|
||||
// Check volume metrics
|
||||
expect(metrics.volume.sent).to.equal(100);
|
||||
expect(metrics.volume.delivered).to.equal(95);
|
||||
expect(metrics.volume.hardBounces).to.equal(3);
|
||||
expect(metrics.volume.softBounces).to.equal(2);
|
||||
expect(metrics.volume.sent).toEqual(100);
|
||||
expect(metrics.volume.delivered).toEqual(95);
|
||||
expect(metrics.volume.hardBounces).toEqual(3);
|
||||
expect(metrics.volume.softBounces).toEqual(2);
|
||||
|
||||
// Check complaint metrics
|
||||
expect(metrics.complaints.total).to.equal(1);
|
||||
expect(metrics.complaints.topDomains[0].domain).to.equal('gmail.com');
|
||||
expect(metrics.complaints.total).toEqual(1);
|
||||
expect(metrics.complaints.topDomains[0].domain).toEqual('gmail.com');
|
||||
|
||||
// Check engagement metrics
|
||||
expect(metrics.engagement.opens).to.equal(50);
|
||||
expect(metrics.engagement.clicks).to.equal(25);
|
||||
expect(metrics.engagement.opens).toEqual(50);
|
||||
expect(metrics.engagement.clicks).toEqual(25);
|
||||
});
|
||||
|
||||
// After all tests, clean up
|
||||
@ -235,4 +236,8 @@ tap.test('cleanup', async () => {
|
||||
cleanupTestData();
|
||||
});
|
||||
|
||||
tap.test('stop', async () => {
|
||||
await tap.stopForcefully();
|
||||
});
|
||||
|
||||
export default tap.start();
|
Reference in New Issue
Block a user