fix(signatures): Correct regex to properly replace existing signature

- Fixes #1561
- Add more specs
This commit is contained in:
Juan Tejada 2016-03-09 12:05:28 -08:00
parent 80942db92b
commit 19f4efb50c
2 changed files with 29 additions and 18 deletions

View file

@ -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);

View file

@ -26,24 +26,34 @@ describe("SignatureComposerExtension", ()=> {
});
it("should replace the signature if a signature is already present", ()=> {
const a = new Message({
draft: true,
const scenarios = [
{
// With blockquote
body: 'This is a test! <div class="nylas-n1-signature"><div>SIG</div></div><blockquote>Hello world</blockquote>',
})
const b = new Message({
draft: true,
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>',
})
const c = new Message({
draft: true,
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)
})
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>`);
});
});