Home > Net >  Groovy: Date and Time comparisons with a slight delay
Groovy: Date and Time comparisons with a slight delay

Time:10-01

So I have the following script:

import groovy.time.TimeCategory

def dueDate = context.expand( '${Test 4 - create user task#Response#$[\'_embedded\'][\'userTaskDtoList\'][0][\'dueDate\']}' )

def date = new Date(messageExchange.getTimestamp())

use(groovy.time.TimeCategory){
    after24Hours = (date   24.hours).format("yyyy-MM-dd'T'HH:mm:ss'Z'", TimeZone.getTimeZone('UTC')) }

assert dueDate == after24Hours

What I'm trying to do with this is take the date and time from a REST request (dueDate - which comes in UTC format and with a 24h delay) and create a new date and time from the timestamp of the moment when that request has been sent, which is registered from my system. I then convert that time to UTC to accommodate the format from dueDate and add 24h to it. At the end I verify that the date and time from dueDate and after24Hours is the same.

The output does return the same time but in certain cases if there is a delay between the time the request is being sent and the time is received then the assertion will fail. This depends on the server, usually there is a difference of like 1 millisecond but I'm thinking that if the server will be slower at some point this will definitely be bigger.

What could I do to allow some margin of error in the assertion, maybe like a few seconds or even a couple of minutes?

CodePudding user response:

What could I do to allow some margin of error in the assertion, maybe like a few seconds or even a couple of minutes?

Instead of asserting that they are equal, you could assert that the difference between them is less than a threshold that you get to define.

CodePudding user response:

If you use something like AssertJ, and I'd recommend you do, then you can do something like the following:

assertThat(dueDate).isCloseTo(after24Hours, within(1, ChronoUnit.MINUTE));

This will give a small margin to the comparison of the dates, and should fix your issue.

  • Related