Skip to content

Commit 7bfac19

Browse files
committed
Add trigger tests for changelog processing
1 parent 2620d2a commit 7bfac19

File tree

1 file changed

+228
-0
lines changed

1 file changed

+228
-0
lines changed

src/core/changelog/__test__/processing-changelog.spec.ts

Lines changed: 228 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -687,4 +687,232 @@ describe('when generating a changelog', () => {
687687
]);
688688
});
689689
});
690+
691+
describe('with trigger code', () => {
692+
it('has no new triggers when both the old and new versions are empty', () => {
693+
const oldVersion = { types: [] };
694+
const newVersion = { types: [] };
695+
696+
const changeLog = processChangelog(oldVersion, newVersion);
697+
698+
expect(changeLog.newTriggers).toEqual([]);
699+
});
700+
701+
it('has no removed triggers when both the old and new versions are empty', () => {
702+
const oldVersion = { types: [] };
703+
const newVersion = { types: [] };
704+
705+
const changeLog = processChangelog(oldVersion, newVersion);
706+
707+
expect(changeLog.removedTriggers).toEqual([]);
708+
});
709+
710+
it('has no new triggers when both versions have the same trigger', () => {
711+
const triggerMetadata = {
712+
type_name: 'trigger' as const,
713+
name: 'TestTrigger',
714+
object_name: 'Account',
715+
events: ['beforeinsert'],
716+
};
717+
718+
const oldVersion = { types: [triggerMetadata] };
719+
const newVersion = { types: [triggerMetadata] };
720+
721+
const changeLog = processChangelog(oldVersion, newVersion);
722+
723+
expect(changeLog.newTriggers).toEqual([]);
724+
});
725+
726+
it('has no removed triggers when both versions have the same trigger', () => {
727+
const triggerMetadata = {
728+
type_name: 'trigger' as const,
729+
name: 'TestTrigger',
730+
object_name: 'Account',
731+
events: ['beforeinsert'],
732+
};
733+
734+
const oldVersion = { types: [triggerMetadata] };
735+
const newVersion = { types: [triggerMetadata] };
736+
737+
const changeLog = processChangelog(oldVersion, newVersion);
738+
739+
expect(changeLog.removedTriggers).toEqual([]);
740+
});
741+
742+
it('lists new triggers', () => {
743+
const oldVersion = { types: [] };
744+
const newTrigger = {
745+
type_name: 'trigger' as const,
746+
name: 'TestTrigger',
747+
object_name: 'Account',
748+
events: ['beforeinsert'],
749+
};
750+
const newVersion = { types: [newTrigger] };
751+
752+
const changeLog = processChangelog(oldVersion, newVersion);
753+
754+
expect(changeLog.newTriggers).toEqual([
755+
{
756+
triggerName: 'TestTrigger',
757+
objectName: 'Account',
758+
},
759+
]);
760+
});
761+
762+
it('lists removed triggers', () => {
763+
const oldTrigger = {
764+
type_name: 'trigger' as const,
765+
name: 'TestTrigger',
766+
object_name: 'Account',
767+
events: ['beforeinsert'],
768+
};
769+
const oldVersion = { types: [oldTrigger] };
770+
const newVersion = { types: [] };
771+
772+
const changeLog = processChangelog(oldVersion, newVersion);
773+
774+
expect(changeLog.removedTriggers).toEqual([
775+
{
776+
triggerName: 'TestTrigger',
777+
objectName: 'Account',
778+
},
779+
]);
780+
});
781+
782+
it('lists multiple new triggers', () => {
783+
const oldVersion = { types: [] };
784+
const newTriggers = [
785+
{
786+
type_name: 'trigger' as const,
787+
name: 'AccountTrigger',
788+
object_name: 'Account',
789+
events: ['beforeinsert'],
790+
},
791+
{
792+
type_name: 'trigger' as const,
793+
name: 'ContactTrigger',
794+
object_name: 'Contact',
795+
events: ['beforeinsert'],
796+
},
797+
];
798+
const newVersion = { types: newTriggers };
799+
800+
const changeLog = processChangelog(oldVersion, newVersion);
801+
802+
expect(changeLog.newTriggers).toEqual([
803+
{
804+
triggerName: 'AccountTrigger',
805+
objectName: 'Account',
806+
},
807+
{
808+
triggerName: 'ContactTrigger',
809+
objectName: 'Contact',
810+
},
811+
]);
812+
});
813+
814+
it('lists multiple removed triggers', () => {
815+
const oldTriggers = [
816+
{
817+
type_name: 'trigger' as const,
818+
name: 'AccountTrigger',
819+
object_name: 'Account',
820+
events: ['beforeinsert'],
821+
},
822+
{
823+
type_name: 'trigger' as const,
824+
name: 'ContactTrigger',
825+
object_name: 'Contact',
826+
events: ['beforeinsert'],
827+
},
828+
];
829+
const oldVersion = { types: oldTriggers };
830+
const newVersion = { types: [] };
831+
832+
const changeLog = processChangelog(oldVersion, newVersion);
833+
834+
expect(changeLog.removedTriggers).toEqual([
835+
{
836+
triggerName: 'AccountTrigger',
837+
objectName: 'Account',
838+
},
839+
{
840+
triggerName: 'ContactTrigger',
841+
objectName: 'Contact',
842+
},
843+
]);
844+
});
845+
846+
it('handles mixed trigger changes', () => {
847+
const oldTriggers = [
848+
{
849+
type_name: 'trigger' as const,
850+
name: 'AccountTrigger',
851+
object_name: 'Account',
852+
events: ['beforeinsert'],
853+
},
854+
{
855+
type_name: 'trigger' as const,
856+
name: 'OldContactTrigger',
857+
object_name: 'Contact',
858+
events: ['beforeinsert'],
859+
},
860+
];
861+
const newTriggers = [
862+
{
863+
type_name: 'trigger' as const,
864+
name: 'AccountTrigger',
865+
object_name: 'Account',
866+
events: ['beforeinsert'],
867+
},
868+
{
869+
type_name: 'trigger' as const,
870+
name: 'NewOpportunityTrigger',
871+
object_name: 'Opportunity',
872+
events: ['beforeinsert'],
873+
},
874+
];
875+
876+
const oldVersion = { types: oldTriggers };
877+
const newVersion = { types: newTriggers };
878+
879+
const changeLog = processChangelog(oldVersion, newVersion);
880+
881+
expect(changeLog.newTriggers).toEqual([
882+
{
883+
triggerName: 'NewOpportunityTrigger',
884+
objectName: 'Opportunity',
885+
},
886+
]);
887+
expect(changeLog.removedTriggers).toEqual([
888+
{
889+
triggerName: 'OldContactTrigger',
890+
objectName: 'Contact',
891+
},
892+
]);
893+
});
894+
895+
it('is case insensitive when comparing trigger names', () => {
896+
const oldTrigger = {
897+
type_name: 'trigger' as const,
898+
name: 'TestTrigger',
899+
object_name: 'Account',
900+
events: ['beforeinsert'],
901+
};
902+
const newTrigger = {
903+
type_name: 'trigger' as const,
904+
name: 'testtrigger',
905+
object_name: 'Account',
906+
events: ['beforeinsert'],
907+
};
908+
909+
const oldVersion = { types: [oldTrigger] };
910+
const newVersion = { types: [newTrigger] };
911+
912+
const changeLog = processChangelog(oldVersion, newVersion);
913+
914+
expect(changeLog.newTriggers).toEqual([]);
915+
expect(changeLog.removedTriggers).toEqual([]);
916+
});
917+
});
690918
});

0 commit comments

Comments
 (0)