1- import { Names , Repos , Types , Type , Popularity , Languages } from '../src/SDKMeta' ;
1+ import { Names , Repos , Types , Type , Popularity , Languages , Releases , ReleaseHelpers } from '../src/SDKMeta' ;
22
33test ( 'names' , ( ) => {
44 expect ( Names [ 'node-server' ] ) . toBe ( 'Node.js Server SDK' ) ;
@@ -17,8 +17,53 @@ test('types', () => {
1717 expect ( Types [ 'node-server' ] ) . toBe ( 'server-side' ) ;
1818} ) ;
1919
20-
21-
2220test ( 'popularity' , ( ) => {
2321 expect ( Popularity [ 'node-server' ] ) . toBe ( 2 ) ;
2422} ) ;
23+
24+ test ( 'releases' , ( ) => {
25+ const firstNodeReleaseDate = new Date ( "2015-05-13T16:55:00Z" ) ;
26+ const firstNodeReleaseEOL = new Date ( "2016-09-12T00:00:00Z" ) ;
27+
28+ expect ( Releases [ 'node-server' ] . length ) . toBeGreaterThanOrEqual ( 1 ) ;
29+
30+ const firstRelease = ReleaseHelpers . Earliest ( Releases [ 'node-server' ] ) ;
31+ expect ( firstRelease . Major ) . toBe ( 1 ) ;
32+ expect ( firstRelease . Minor ) . toBe ( 0 ) ;
33+ expect ( ReleaseHelpers . IsLatest ( firstRelease ) ) . toBe ( false ) ;
34+
35+ expect ( firstRelease . Date ) . toEqual ( firstNodeReleaseDate ) ;
36+ expect ( firstRelease . EOL ) . not . toBeNull ( ) ;
37+ expect ( firstRelease . EOL ) . toEqual ( firstNodeReleaseEOL ) ;
38+
39+ const latestRelease = ReleaseHelpers . Latest ( Releases [ 'node-server' ] ) ;
40+ expect ( latestRelease . Major ) . toBeGreaterThanOrEqual ( 9 ) ;
41+ expect ( latestRelease . Minor ) . toBeGreaterThanOrEqual ( 4 ) ;
42+ expect ( latestRelease . EOL ) . toBeNull ( ) ;
43+ expect ( ReleaseHelpers . IsLatest ( latestRelease ) ) . toBe ( true ) ;
44+ } )
45+
46+ test ( 'eol calculations' , ( ) => {
47+ const releases = Releases [ 'node-server' ] ;
48+ const earliest = ReleaseHelpers . Earliest ( releases ) ;
49+ const latest = ReleaseHelpers . Latest ( releases ) ;
50+ const earliestEOL = new Date ( "2016-09-12T00:00:00Z" ) ;
51+
52+ // Checking that the latest release is not yet EOL
53+ expect ( ReleaseHelpers . IsEOL ( latest , new Date ( ) ) ) . toBe ( false ) ;
54+ // Checking that the earliest release becomes EOL if we pass in a "current" date of its EOL + 1 second
55+ expect ( ReleaseHelpers . IsEOL ( earliest , new Date ( earliestEOL . getTime ( ) + 1000 ) ) ) . toBe ( true ) ;
56+
57+ // Check the "approaching EOL" logic for the earliest release by passing in different values of "current" date.
58+ const minute = 60 * 1000 ;
59+ const hour = 60 * minute ;
60+ const hour_and_1_minute = 61 * minute ;
61+ const fifty_nine_minutes = 59 * minute ;
62+ const thirty_minutes = 30 * minute ;
63+
64+ expect ( ReleaseHelpers . IsApproachingEOL ( earliest , new Date ( earliestEOL . getTime ( ) - hour_and_1_minute ) , hour ) ) . toBe ( false ) ;
65+ expect ( ReleaseHelpers . IsApproachingEOL ( earliest , new Date ( earliestEOL . getTime ( ) - hour ) , hour ) ) . toBe ( false ) ;
66+ expect ( ReleaseHelpers . IsApproachingEOL ( earliest , new Date ( earliestEOL . getTime ( ) - fifty_nine_minutes ) , hour ) ) . toBe ( true ) ;
67+ expect ( ReleaseHelpers . IsApproachingEOL ( earliest , new Date ( earliestEOL . getTime ( ) - thirty_minutes ) , hour ) ) . toBe ( true ) ;
68+ expect ( ReleaseHelpers . IsApproachingEOL ( earliest , new Date ( earliestEOL . getTime ( ) - minute ) , hour ) ) . toBe ( true ) ;
69+ } )
0 commit comments