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