import { XmlDocument } from 'xmldoc'; import { bumpPackageVersion } from './index.ts'; const simpleContent = '0.0.1'; const minimumContent = '1'; const prereleaseContent = '1.0.0-1'; const issue23526InitialContent = '4.9.0'; const issue23526ExpectedContent = '4.10.0'; describe('modules/manager/nuget/update', () => { describe('bumpPackageVersion', () => { it('bumps csproj version', () => { const { bumpedContent } = bumpPackageVersion( simpleContent, '0.0.1', 'patch', ); const project = new XmlDocument(bumpedContent!); expect(project.valueWithPath('PropertyGroup.Version')).toBe('0.0.2'); }); it('does not bump version twice', () => { const { bumpedContent } = bumpPackageVersion( simpleContent, '0.0.1', 'patch', ); const { bumpedContent: bumpedContent2 } = bumpPackageVersion( bumpedContent!, '0.0.1', 'patch', ); expect(bumpedContent).toEqual(bumpedContent2); }); it('issue 23526 does not bump version incorrectly', () => { const { bumpedContent } = bumpPackageVersion( issue23526InitialContent, '4.9.0', 'minor', ); const { bumpedContent: bumpedContent2 } = bumpPackageVersion( bumpedContent!, '4.9.0', 'minor', ); expect(bumpedContent2).toEqual(issue23526ExpectedContent); }); it('does not bump version if version is not a semantic version', () => { const { bumpedContent } = bumpPackageVersion( minimumContent, '1', 'patch', ); const project = new XmlDocument(bumpedContent!); expect(project.valueWithPath('PropertyGroup.Version')).toBe('1'); }); it('does not bump version if extract found no version', () => { const { bumpedContent } = bumpPackageVersion(minimumContent, '', 'patch'); expect(bumpedContent).toEqual(minimumContent); }); it('does not bump version if csproj has no version', () => { const originalContent = 'net6.0'; const { bumpedContent } = bumpPackageVersion( originalContent, '0.0.1', 'patch', ); expect(bumpedContent).toEqual(originalContent); }); it('returns content if bumping errors', () => { const { bumpedContent } = bumpPackageVersion( simpleContent, '0.0.1', true as any, ); expect(bumpedContent).toEqual(simpleContent); }); it('bumps csproj version with prerelease semver level', () => { const { bumpedContent } = bumpPackageVersion( prereleaseContent, '1.0.0-1', 'prerelease', ); const project = new XmlDocument(bumpedContent!); expect(project.valueWithPath('PropertyGroup.Version')).toBe('1.0.0-2'); }); it('bumps csproj version prefix', () => { const content = '1.0.0'; const { bumpedContent } = bumpPackageVersion(content, '1.0.0', 'patch'); const project = new XmlDocument(bumpedContent!); expect(project.valueWithPath('PropertyGroup.VersionPrefix')).toBe( '1.0.1', ); }); }); });