Skip to content

Commit 2620d2a

Browse files
committed
Add tests for trigger changelog generation
The new test cases validate that the changelog generator properly handles: - New trigger additions with object context - Trigger removals with object context - Unchanged triggers being excluded
1 parent 0116012 commit 2620d2a

File tree

1 file changed

+115
-0
lines changed

1 file changed

+115
-0
lines changed

src/core/changelog/__test__/generating-change-log.spec.ts

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
UnparsedApexBundle,
44
UnparsedCustomObjectBundle,
55
UnparsedSourceBundle,
6+
UnparsedTriggerBundle,
67
} from '../../shared/types';
78
import { generateChangeLog } from '../generate-change-log';
89
import { assertEither } from '../../test-helpers/assert-either';
@@ -484,4 +485,118 @@ describe('when generating a changelog', () => {
484485
assertEither(result, (data) => expect((data as ChangeLogPageData).frontmatter).toContain('title: Custom Title'));
485486
});
486487
});
488+
489+
describe('that includes new triggers', () => {
490+
it('should include a section for new triggers', async () => {
491+
const triggerSource = `trigger TestTrigger on Account (before insert) {}`;
492+
493+
const oldBundle: UnparsedSourceBundle[] = [];
494+
const newBundle: UnparsedTriggerBundle[] = [
495+
{
496+
type: 'trigger',
497+
name: 'TestTrigger',
498+
content: triggerSource,
499+
filePath: 'TestTrigger.trigger',
500+
},
501+
];
502+
503+
const result = await generateChangeLog(oldBundle, newBundle, config)();
504+
505+
assertEither(result, (data) => expect((data as ChangeLogPageData).content).toContain('## New Triggers'));
506+
});
507+
508+
it('should include the new trigger name and object', async () => {
509+
const triggerSource = `trigger TestTrigger on Account (before insert) {}`;
510+
511+
const oldBundle: UnparsedSourceBundle[] = [];
512+
const newBundle: UnparsedSourceBundle[] = [
513+
{
514+
type: 'trigger',
515+
name: 'TestTrigger',
516+
content: triggerSource,
517+
filePath: 'TestTrigger.trigger',
518+
},
519+
];
520+
521+
const result = await generateChangeLog(oldBundle, newBundle, config)();
522+
523+
assertEither(result, (data) => {
524+
const content = (data as ChangeLogPageData).content;
525+
expect(content).toContain('TestTrigger on Account');
526+
});
527+
});
528+
});
529+
530+
describe('that includes removed triggers', () => {
531+
it('should include a section for removed triggers', async () => {
532+
const triggerSource = `trigger TestTrigger on Account (before insert) {}`;
533+
534+
const oldBundle: UnparsedSourceBundle[] = [
535+
{
536+
type: 'trigger',
537+
name: 'TestTrigger',
538+
content: triggerSource,
539+
filePath: 'TestTrigger.trigger',
540+
},
541+
];
542+
const newBundle: UnparsedSourceBundle[] = [];
543+
544+
const result = await generateChangeLog(oldBundle, newBundle, config)();
545+
546+
assertEither(result, (data) => expect((data as ChangeLogPageData).content).toContain('## Removed Triggers'));
547+
});
548+
549+
it('should include the removed trigger name and object', async () => {
550+
const triggerSource = `trigger TestTrigger on Account (before insert) {}`;
551+
552+
const oldBundle: UnparsedSourceBundle[] = [
553+
{
554+
type: 'trigger',
555+
name: 'TestTrigger',
556+
content: triggerSource,
557+
filePath: 'TestTrigger.trigger',
558+
},
559+
];
560+
const newBundle: UnparsedSourceBundle[] = [];
561+
562+
const result = await generateChangeLog(oldBundle, newBundle, config)();
563+
564+
assertEither(result, (data) => {
565+
const content = (data as ChangeLogPageData).content;
566+
expect(content).toContain('TestTrigger on Account');
567+
});
568+
});
569+
});
570+
571+
describe('that includes triggers in both versions', () => {
572+
it('should not include unchanged triggers in the changelog', async () => {
573+
const triggerSource = `trigger TestTrigger on Account (before insert) {}`;
574+
575+
const oldBundle: UnparsedSourceBundle[] = [
576+
{
577+
type: 'trigger',
578+
name: 'TestTrigger',
579+
content: triggerSource,
580+
filePath: 'TestTrigger.trigger',
581+
},
582+
];
583+
const newBundle: UnparsedSourceBundle[] = [
584+
{
585+
type: 'trigger',
586+
name: 'TestTrigger',
587+
content: triggerSource,
588+
filePath: 'TestTrigger.trigger',
589+
},
590+
];
591+
592+
const result = await generateChangeLog(oldBundle, newBundle, config)();
593+
594+
assertEither(result, (data) => {
595+
const content = (data as ChangeLogPageData).content;
596+
expect(content).not.toContain('New Triggers');
597+
expect(content).not.toContain('Removed Triggers');
598+
expect(content).not.toContain('TestTrigger');
599+
});
600+
});
601+
});
487602
});

0 commit comments

Comments
 (0)