mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-09-21 15:56:10 +08:00
fix(signatures): Correct regex to properly replace existing signature
- Fixes #1561 - Add more specs
This commit is contained in:
parent
80942db92b
commit
19f4efb50c
|
@ -1,6 +1,7 @@
|
|||
export default {
|
||||
applySignature(body, signature) {
|
||||
const signatureRegex = /<div class="nylas-n1-signature">.*<\/div>/;
|
||||
// https://regex101.com/r/nC0qL2/1
|
||||
const signatureRegex = /<div class="nylas-n1-signature">[^]*<\/div>/;
|
||||
|
||||
let signatureHTML = '<div class="nylas-n1-signature">' + signature + '</div>';
|
||||
let insertionPoint = body.search(signatureRegex);
|
||||
|
|
|
@ -26,24 +26,34 @@ describe("SignatureComposerExtension", ()=> {
|
|||
});
|
||||
|
||||
it("should replace the signature if a signature is already present", ()=> {
|
||||
const a = new Message({
|
||||
draft: true,
|
||||
body: 'This is a test! <div class="nylas-n1-signature"><div>SIG</div></div><blockquote>Hello world</blockquote>',
|
||||
const scenarios = [
|
||||
{
|
||||
// With blockquote
|
||||
body: 'This is a test! <div class="nylas-n1-signature"><div>SIG</div></div><blockquote>Hello world</blockquote>',
|
||||
expected: `This is a test! <div class="nylas-n1-signature">${this.signature}</div><blockquote>Hello world</blockquote>`,
|
||||
},
|
||||
{
|
||||
// Populated signature div
|
||||
body: 'This is a test! <div class="nylas-n1-signature"><div>SIG</div></div>',
|
||||
expected: `This is a test! <div class="nylas-n1-signature">${this.signature}</div>`,
|
||||
},
|
||||
{
|
||||
// Empty signature div
|
||||
body: 'This is a test! <div class="nylas-n1-signature"></div>',
|
||||
expected: `This is a test! <div class="nylas-n1-signature">${this.signature}</div>`,
|
||||
},
|
||||
{
|
||||
// With newlines
|
||||
body: 'This is a test! <div class="nylas-n1-signature">\n<br>\n<div>SIG</div>\n</div>',
|
||||
expected: `This is a test! <div class="nylas-n1-signature">${this.signature}</div>`,
|
||||
},
|
||||
]
|
||||
|
||||
scenarios.forEach((scenario)=> {
|
||||
const message = new Message({draft: true, body: scenario.body})
|
||||
SignatureComposerExtension.prepareNewDraft({draft: message});
|
||||
expect(message.body).toEqual(scenario.expected)
|
||||
})
|
||||
const b = new Message({
|
||||
draft: true,
|
||||
body: 'This is a test! <div class="nylas-n1-signature"><div>SIG</div></div>',
|
||||
})
|
||||
const c = new Message({
|
||||
draft: true,
|
||||
body: 'This is a test! <div class="nylas-n1-signature"></div>',
|
||||
})
|
||||
SignatureComposerExtension.prepareNewDraft({draft: a});
|
||||
expect(a.body).toEqual(`This is a test! <div class="nylas-n1-signature">${this.signature}</div><blockquote>Hello world</blockquote>`);
|
||||
SignatureComposerExtension.prepareNewDraft({draft: b});
|
||||
expect(b.body).toEqual(`This is a test! <div class="nylas-n1-signature">${this.signature}</div>`);
|
||||
SignatureComposerExtension.prepareNewDraft({draft: c});
|
||||
expect(c.body).toEqual(`This is a test! <div class="nylas-n1-signature">${this.signature}</div>`);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in a new issue