@@ -3,9 +3,10 @@ import {pageHitRawPayloadFromRequest} from '../../../src/transformations/page-hi
33import { PageHitRequestType } from '../../../src/schemas' ;
44
55describe ( 'pageHitRawPayloadFromRequest' , ( ) => {
6- function createPageHitRequest ( ) {
6+ function createPageHitRequest ( serverReceivedAt : Date = new Date ( ) ) {
77 return {
88 ip : '192.168.1.1' ,
9+ serverReceivedAt,
910 headers : {
1011 'x-site-uuid' : '12345678-1234-1234-1234-123456789012' ,
1112 'content-type' : 'application/json' ,
@@ -37,44 +38,43 @@ describe('pageHitRawPayloadFromRequest', () => {
3738 }
3839
3940 it ( 'should transform request to PageHitRaw with all fields present' , ( ) => {
40- const request = createPageHitRequest ( ) ;
41+ const serverTime = new Date ( '2024-01-15T10:30:00.000Z' ) ;
42+ const request = createPageHitRequest ( serverTime ) ;
4143 const result = pageHitRawPayloadFromRequest ( request ) ;
4244
43- expect ( result ) . toEqual ( {
44- timestamp : '2024-01-01T00:00:00.000Z' ,
45- action : 'page_hit' ,
46- version : '1' ,
47- site_uuid : '12345678-1234-1234-1234-123456789012' ,
48- payload : {
49- event_id : 'test-event-id' ,
50- member_uuid : 'member-uuid-123' ,
51- member_status : 'free' ,
52- post_uuid : 'post-uuid-456' ,
53- post_type : 'post' ,
54- locale : 'en-US' ,
55- location : 'homepage' ,
56- referrer : 'https://google.com' ,
57- parsedReferrer : {
58- source : 'google' ,
59- medium : 'organic' ,
60- url : 'https://google.com'
61- } ,
62- pathname : '/blog/post' ,
63- href : 'https://example.com/blog/post' ,
64- utm_source : null ,
65- utm_medium : null ,
66- utm_campaign : null ,
67- utm_term : null ,
68- utm_content : null ,
69- meta : {
70- received_timestamp : null
71- }
45+ expect ( result . timestamp ) . toBe ( serverTime . toISOString ( ) ) ;
46+ expect ( result . action ) . toBe ( 'page_hit' ) ;
47+ expect ( result . version ) . toBe ( '1' ) ;
48+ expect ( result . site_uuid ) . toBe ( '12345678-1234-1234-1234-123456789012' ) ;
49+ expect ( result . payload ) . toEqual ( {
50+ event_id : 'test-event-id' ,
51+ member_uuid : 'member-uuid-123' ,
52+ member_status : 'free' ,
53+ post_uuid : 'post-uuid-456' ,
54+ post_type : 'post' ,
55+ locale : 'en-US' ,
56+ location : 'homepage' ,
57+ referrer : 'https://google.com' ,
58+ parsedReferrer : {
59+ source : 'google' ,
60+ medium : 'organic' ,
61+ url : 'https://google.com'
7262 } ,
63+ pathname : '/blog/post' ,
64+ href : 'https://example.com/blog/post' ,
65+ utm_source : null ,
66+ utm_medium : null ,
67+ utm_campaign : null ,
68+ utm_term : null ,
69+ utm_content : null ,
7370 meta : {
74- ip : '192.168.1.1' ,
75- 'user-agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36'
71+ received_timestamp : null
7672 }
7773 } ) ;
74+ expect ( result . meta ) . toEqual ( {
75+ ip : '192.168.1.1' ,
76+ 'user-agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36'
77+ } ) ;
7878 } ) ;
7979
8080 describe ( 'Event ID' , ( ) => {
@@ -287,8 +287,10 @@ describe('pageHitRawPayloadFromRequest', () => {
287287 } ) ;
288288
289289 it ( 'should handle complex real-world request' , ( ) => {
290+ const serverTime = new Date ( '2024-03-15T14:30:25.123Z' ) ;
290291 const request = {
291292 ip : '203.0.113.42' ,
293+ serverReceivedAt : serverTime ,
292294 headers : {
293295 'x-site-uuid' : 'c7929de8-27d7-404e-b714-0fc774f701e6' ,
294296 'content-type' : 'application/json' ,
@@ -320,7 +322,7 @@ describe('pageHitRawPayloadFromRequest', () => {
320322
321323 const result = pageHitRawPayloadFromRequest ( request ) ;
322324
323- expect ( result . timestamp ) . toBe ( '2024-03-15T14:30:25.123Z' ) ;
325+ expect ( result . timestamp ) . toBe ( serverTime . toISOString ( ) ) ;
324326 expect ( result . action ) . toBe ( 'page_hit' ) ;
325327 expect ( result . version ) . toBe ( '1' ) ;
326328 expect ( result . site_uuid ) . toBe ( 'c7929de8-27d7-404e-b714-0fc774f701e6' ) ;
0 commit comments