import {Message} from 'nylas-exports'; import SignatureComposerExtension from '../lib/signature-composer-extension'; import SignatureStore from '../lib/signature-store'; describe("SignatureComposerExtension", ()=> { describe("prepareNewDraft", ()=> { describe("when a signature is defined", ()=> { beforeEach(()=> { this.signature = '
This is my signature.
'; spyOn(NylasEnv.config, 'get').andCallFake(()=> this.signature); }); it("should insert the signature at the end of the message or before the first blockquote and have a newline", ()=> { const a = new Message({ draft: true, accountId: TEST_ACCOUNT_ID, body: 'This is a test!
Hello world
', }); const b = new Message({ draft: true, accountId: TEST_ACCOUNT_ID, body: 'This is a another test.', }); SignatureComposerExtension.prepareNewDraft({draft: a}); expect(a.body).toEqual('This is a test!
This is my signature.
Hello world
'); SignatureComposerExtension.prepareNewDraft({draft: b}); expect(b.body).toEqual('This is a another test.

This is my signature.
'); }); it("should replace the signature if a signature is already present", ()=> { const scenarios = [ { // With blockquote body: 'This is a test!
SIG
Hello world
', expected: `This is a test!
${this.signature}
Hello world
`, }, { // Populated signature div body: 'This is a test!
SIG
', expected: `This is a test!
${this.signature}
`, }, { // Empty signature div body: 'This is a test!
', expected: `This is a test!
${this.signature}
`, }, { // With newlines body: 'This is a test!
\n
\n
SIG
\n
', expected: `This is a test!
${this.signature}
`, }, ] scenarios.forEach((scenario)=> { const message = new Message({ draft: true, body: scenario.body, accountId: TEST_ACCOUNT_ID, }) SignatureComposerExtension.prepareNewDraft({draft: message}); expect(message.body).toEqual(scenario.expected) }) }); }); describe("when no signature is present in the config file", ()=> { beforeEach(()=> { spyOn(NylasEnv.config, 'get').andCallFake(()=> undefined); }); it("should insert the default signature", ()=> { const a = new Message({ draft: true, accountId: TEST_ACCOUNT_ID, body: 'This is a test!
Hello world
', }); SignatureComposerExtension.prepareNewDraft({draft: a}); expect(a.body).toEqual(`This is a test!
${SignatureStore.DefaultSignature}
Hello world
`); }); }); describe("when a blank signature is present in the config file", ()=> { beforeEach(()=> { spyOn(NylasEnv.config, 'get').andCallFake(()=> ""); }); it("should insert nothing", ()=> { const a = new Message({ draft: true, accountId: TEST_ACCOUNT_ID, body: 'This is a test!
Hello world
', }); SignatureComposerExtension.prepareNewDraft({draft: a}); expect(a.body).toEqual(`This is a test!
Hello world
`); }); }); }); });