11import { existsSync , readFileSync } from 'fs' ;
2+ import { GitClient } from '../../utils/git/git-client' ;
23import { SemVer } from 'semver' ;
34import { dedent } from '../../utils/testing/dedent' ;
45import { getMockGitClient } from '../publish/test/test-utils/git-client-mock' ;
56import { Changelog , splitMarker } from './changelog' ;
67
78describe ( 'Changelog' , ( ) => {
89 let changelog : Changelog ;
10+ let gitClient : GitClient ;
911
1012 beforeEach ( ( ) => {
11- const gitClient = getMockGitClient (
13+ gitClient = getMockGitClient (
1214 { owner : 'angular' , name : 'dev-infra-test' , mainBranchName : 'main' } ,
1315 /* useSandboxGitClient */ false ,
1416 ) ;
15- changelog = new Changelog ( gitClient ) ;
17+ spyOn ( GitClient , 'get' ) . and . returnValue ( gitClient ) ;
18+ changelog = Changelog . getChangelogFilePaths ( ) ;
1619 } ) ;
1720
1821 it ( 'throws an error if it cannot find the anchor containing the version for an entry' , ( ) => {
19- expect ( ( ) => changelog . prependEntryToChangelog ( 'does not have version <a> tag' ) ) . toThrow ( ) ;
22+ expect ( ( ) => Changelog . prependEntryToChangelogFile ( 'does not have version <a> tag' ) ) . toThrow ( ) ;
2023 } ) ;
2124
2225 it ( 'throws an error if it cannot determine the version for an entry' , ( ) => {
23- expect ( ( ) => changelog . prependEntryToChangelog ( createChangelogEntry ( 'NotSemVer' ) ) ) . toThrow ( ) ;
26+ expect ( ( ) =>
27+ Changelog . prependEntryToChangelogFile ( createChangelogEntry ( 'NotSemVer' ) ) ,
28+ ) . toThrow ( ) ;
2429 } ) ;
2530
2631 it ( 'concatenates the changelog entries into the changelog file with the split marker between' , ( ) => {
27- changelog . prependEntryToChangelog ( createChangelogEntry ( '1.0.0' ) ) ;
28- changelog . prependEntryToChangelog ( createChangelogEntry ( '2.0.0' ) ) ;
29- changelog . prependEntryToChangelog ( createChangelogEntry ( '3.0.0' ) ) ;
32+ Changelog . prependEntryToChangelogFile ( createChangelogEntry ( '1.0.0' ) ) ;
33+ Changelog . prependEntryToChangelogFile ( createChangelogEntry ( '2.0.0' ) ) ;
34+ Changelog . prependEntryToChangelogFile ( createChangelogEntry ( '3.0.0' ) ) ;
3035
3136 expect ( readFileAsString ( changelog . filePath ) ) . toBe (
3237 dedent `
@@ -42,7 +47,7 @@ describe('Changelog', () => {
4247 ` . trim ( ) ,
4348 ) ;
4449
45- changelog . moveEntriesPriorToVersionToArchive ( new SemVer ( '3.0.0' ) ) ;
50+ Changelog . moveEntriesPriorToVersionToArchive ( new SemVer ( '3.0.0' ) ) ;
4651
4752 expect ( readFileAsString ( changelog . archiveFilePath ) ) . toBe (
4853 dedent `
@@ -61,19 +66,19 @@ describe('Changelog', () => {
6166 it ( 'creates a new changelog file if one does not exist.' , ( ) => {
6267 expect ( existsSync ( changelog . filePath ) ) . toBe ( false ) ;
6368
64- changelog . prependEntryToChangelog ( createChangelogEntry ( '0.0.0' ) ) ;
69+ Changelog . prependEntryToChangelogFile ( createChangelogEntry ( '0.0.0' ) ) ;
6570 expect ( existsSync ( changelog . filePath ) ) . toBe ( true ) ;
6671 } ) ;
6772
6873 it ( 'should not include a split marker when only one changelog entry is in the changelog.' , ( ) => {
69- changelog . prependEntryToChangelog ( createChangelogEntry ( '0.0.0' ) ) ;
74+ Changelog . prependEntryToChangelogFile ( createChangelogEntry ( '0.0.0' ) ) ;
7075
7176 expect ( readFileAsString ( changelog . filePath ) ) . not . toContain ( splitMarker ) ;
7277 } ) ;
7378
7479 it ( 'separates multiple changelog entries using a standard split marker' , ( ) => {
7580 for ( let i = 0 ; i < 2 ; i ++ ) {
76- changelog . prependEntryToChangelog ( createChangelogEntry ( `0.0.${ i } ` ) ) ;
81+ Changelog . prependEntryToChangelogFile ( createChangelogEntry ( `0.0.${ i } ` ) ) ;
7782 }
7883
7984 expect ( readFileAsString ( changelog . filePath ) ) . toContain ( splitMarker ) ;
@@ -82,22 +87,31 @@ describe('Changelog', () => {
8287
8388 describe ( 'adds entries to the changelog archive' , ( ) => {
8489 it ( 'only updates or creates the changelog archive if necessary' , ( ) => {
85- changelog . prependEntryToChangelog ( createChangelogEntry ( '1.0.0' ) ) ;
90+ Changelog . prependEntryToChangelogFile ( createChangelogEntry ( '1.0.0' ) ) ;
8691 expect ( existsSync ( changelog . archiveFilePath ) ) . toBe ( false ) ;
8792
88- changelog . moveEntriesPriorToVersionToArchive ( new SemVer ( '1.0.0' ) ) ;
93+ Changelog . moveEntriesPriorToVersionToArchive ( new SemVer ( '1.0.0' ) ) ;
8994 expect ( existsSync ( changelog . archiveFilePath ) ) . toBe ( false ) ;
9095
91- changelog . moveEntriesPriorToVersionToArchive ( new SemVer ( '2.0.0' ) ) ;
96+ Changelog . moveEntriesPriorToVersionToArchive ( new SemVer ( '2.0.0' ) ) ;
9297 expect ( existsSync ( changelog . archiveFilePath ) ) . toBe ( true ) ;
9398 } ) ;
9499
95100 it ( 'from the primary changelog older than a provided version' , ( ) => {
96- changelog . prependEntryToChangelog ( createChangelogEntry ( '1.0.0' , 'This is version 1' ) ) ;
97- changelog . prependEntryToChangelog ( createChangelogEntry ( '2.0.0' , 'This is version 2' ) ) ;
98- changelog . prependEntryToChangelog ( createChangelogEntry ( '3.0.0' , 'This is version 3' ) ) ;
99-
100- changelog . moveEntriesPriorToVersionToArchive ( new SemVer ( '3.0.0' ) ) ;
101+ Changelog . prependEntryToChangelogFile (
102+ createChangelogEntry ( '1.0.0' , 'This is version 1' ) ,
103+ gitClient ,
104+ ) ;
105+ Changelog . prependEntryToChangelogFile (
106+ createChangelogEntry ( '2.0.0' , 'This is version 2' ) ,
107+ gitClient ,
108+ ) ;
109+ Changelog . prependEntryToChangelogFile (
110+ createChangelogEntry ( '3.0.0' , 'This is version 3' ) ,
111+ gitClient ,
112+ ) ;
113+
114+ Changelog . moveEntriesPriorToVersionToArchive ( new SemVer ( '3.0.0' ) ) ;
101115 expect ( readFileAsString ( changelog . archiveFilePath ) ) . toContain ( 'version 1' ) ;
102116 expect ( readFileAsString ( changelog . archiveFilePath ) ) . toContain ( 'version 2' ) ;
103117 expect ( readFileAsString ( changelog . archiveFilePath ) ) . not . toContain ( 'version 3' ) ;
0 commit comments