mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-02-03 23:00:14 -05:00
refs https://github.com/TryGhost/Team/issues/828 - When detecting email segments and later creating a member filter out of this data we only care about unique segments otherwise we'd be creating multiple batches with the same segment filter
51 lines
1.9 KiB
JavaScript
51 lines
1.9 KiB
JavaScript
const should = require('should');
|
|
|
|
const {getSegmentsFromHtml} = require('../../../../core/server/services/mega/segment-parser');
|
|
|
|
describe('MEGA: Segment Parser', function () {
|
|
it('extracts a single segments used in HTML', function () {
|
|
const html = '<div data-gh-segment="status:-free"><p>Plain html with no replacements</p></div>';
|
|
|
|
const segments = getSegmentsFromHtml(html);
|
|
|
|
segments.length.should.equal(1);
|
|
segments[0].should.equal('status:-free');
|
|
});
|
|
|
|
it('extracts multiple segments used in HTML', function () {
|
|
const html = `
|
|
<div data-gh-segment="status:-free"><p>Text for paid</p></div>
|
|
<div data-gh-segment="status:free"><p>Text for free</p></div>
|
|
<div data-gh-segment="status:-free,label.slug:VIP"><p>Text for paid VIP</p></div>
|
|
`;
|
|
|
|
const segments = getSegmentsFromHtml(html);
|
|
|
|
segments.length.should.equal(3);
|
|
segments[0].should.equal('status:-free');
|
|
segments[1].should.equal('status:free');
|
|
segments[2].should.equal('status:-free,label.slug:VIP');
|
|
});
|
|
|
|
it('extracts only unique segments', function () {
|
|
const html = `
|
|
<div data-gh-segment="status:-free"><p>Text for paid</p></div>
|
|
<div data-gh-segment="status:free"><p>Text for free</p></div>
|
|
<div data-gh-segment="status:-free"><p>Another message for paid member</p></div>
|
|
`;
|
|
|
|
const segments = getSegmentsFromHtml(html);
|
|
|
|
segments.length.should.equal(2);
|
|
segments[0].should.equal('status:-free');
|
|
segments[1].should.equal('status:free');
|
|
});
|
|
|
|
it('extracts no segments from HTML', function () {
|
|
const html = '<div data-gh-somethingelse="status:-free"><p>Plain html with no replacements</p></div>';
|
|
|
|
const segments = getSegmentsFromHtml(html);
|
|
|
|
segments.length.should.equal(0);
|
|
});
|
|
});
|