1+ /**
2+ * Unit tests for utility functions
3+ */
4+ import { getLibraryVersion , getUserAgent } from '../../utils' ;
5+
6+ describe ( 'Utility Functions' , ( ) => {
7+ describe ( 'getLibraryVersion()' , ( ) => {
8+ it ( 'should return a valid semver version string' , ( ) => {
9+ const version = getLibraryVersion ( ) ;
10+
11+ expect ( version ) . toBeDefined ( ) ;
12+ expect ( typeof version ) . toBe ( 'string' ) ;
13+ expect ( version . length ) . toBeGreaterThan ( 0 ) ;
14+
15+ // Check if it matches semver pattern (major.minor.patch)
16+ const semverPattern = / ^ \d + \. \d + \. \d + (?: - [ a - z A - Z 0 - 9 . - ] + ) ? $ / ;
17+ expect ( version ) . toMatch ( semverPattern ) ;
18+ } ) ;
19+
20+ it ( 'should return the version from package.json' , ( ) => {
21+ const version = getLibraryVersion ( ) ;
22+
23+ // The version should match whatever is in package.json
24+ // We don't hardcode the expected version to avoid breaking on version updates
25+ expect ( version ) . toMatch ( / ^ \d + \. \d + \. \d + (?: - [ a - z A - Z 0 - 9 . - ] + ) ? $ / ) ;
26+ expect ( version . length ) . toBeGreaterThan ( 0 ) ;
27+ } ) ;
28+ } ) ;
29+
30+ describe ( 'getUserAgent()' , ( ) => {
31+ it ( 'should return a properly formatted User-Agent string' , ( ) => {
32+ const userAgent = getUserAgent ( ) ;
33+
34+ expect ( userAgent ) . toBeDefined ( ) ;
35+ expect ( typeof userAgent ) . toBe ( 'string' ) ;
36+ expect ( userAgent . length ) . toBeGreaterThan ( 0 ) ;
37+ } ) ;
38+
39+ it ( 'should follow the expected User-Agent format' , ( ) => {
40+ const userAgent = getUserAgent ( ) ;
41+
42+ // Should match: nutrient-dws-client-typescript/VERSION
43+ const expectedPattern = / ^ n u t r i e n t - d w s - c l i e n t - t y p e s c r i p t \/ \d + \. \d + \. \d + (?: - [ a - z A - Z 0 - 9 . - ] + ) ? $ / ;
44+ expect ( userAgent ) . toMatch ( expectedPattern ) ;
45+ } ) ;
46+
47+ it ( 'should include the correct library name' , ( ) => {
48+ const userAgent = getUserAgent ( ) ;
49+
50+ expect ( userAgent ) . toContain ( 'nutrient-dws-client-typescript' ) ;
51+ } ) ;
52+
53+ it ( 'should include the current library version' , ( ) => {
54+ const userAgent = getUserAgent ( ) ;
55+ const version = getLibraryVersion ( ) ;
56+
57+ expect ( userAgent ) . toContain ( version ) ;
58+ } ) ;
59+
60+ it ( 'should have consistent format across multiple calls' , ( ) => {
61+ const userAgent1 = getUserAgent ( ) ;
62+ const userAgent2 = getUserAgent ( ) ;
63+
64+ expect ( userAgent1 ) . toBe ( userAgent2 ) ;
65+ } ) ;
66+
67+ it ( 'should return the expected User-Agent format with current version' , ( ) => {
68+ const userAgent = getUserAgent ( ) ;
69+ const version = getLibraryVersion ( ) ;
70+
71+ expect ( userAgent ) . toBe ( `nutrient-dws-client-typescript/${ version } ` ) ;
72+ } ) ;
73+ } ) ;
74+ } ) ;
0 commit comments