RESOStandards / web-api-commander

Client tools and libraries to work with and test RESO Web APIs.
https://commander.reso.org
Other
37 stars 18 forks source link

"@orderby-timestamp-asc-filter-int-gt" and "@orderby-timestamp-asc" fail when processing null values #60

Closed dgmyrek closed 3 years ago

dgmyrek commented 3 years ago

This appears to impact both of the tests noted in the issue title. Here's a copy/paste of test execution for one of them.

@orderby-timestamp-asc-filter-int-gt @2.4.4 Scenario: orderby-timestamp-asc-filter-int-gt - Query Support: $orderby timestamp asc # src/main/java/org/reso/certification/features/web-api/web-api-server.core.1.0.2.feature:110 Given a RESOScript file was provided # org.reso.certification.stepdefs.WebAPIServer.runBackground(WebAPIServer.java:1089) And Client Settings and Parameters were read from the file # org.reso.certification.stepdefs.WebAPIServer.runBackground(WebAPIServer.java:1097) And a test container was successfully created from the given RESOScript # org.reso.certification.stepdefs.WebAPIServer.runBackground(WebAPIServer.java:1105) And the test container uses an authorization_code or client_credentials for authentication # org.reso.certification.stepdefs.WebAPIServer.runBackground(WebAPIServer.java:1119) Given valid metadata have been retrieved # org.reso.certification.stepdefs.WebAPIServer.(WebAPIServer.java:1000) Request ID: orderby-timestamp-asc-filter-int-gt Request URI: https://api.flexmls.com/Reso/OData/Property?$top=20&$select=ListingKey,BedroomsTotal,OriginalEntryTimestamp&$orderby=OriginalEntryTimestamp%20asc&$filter=BedroomsTotal%20gt%201 Request succeeded...4354 bytes received. When a GET request is made to the resolved Url in "orderby-timestamp-asc-filter-int-gt" # org.reso.certification.stepdefs.WebAPIServer.(WebAPIServer.java:251) Asserted Response Code: 200, Server Response Code: 200 Then the server responds with a status code of 200 # org.reso.certification.stepdefs.WebAPIServer.(WebAPIServer.java:266) Reported OData-Version header value: '4.0' And the server has an OData-Version header value of "4.0" or "4.01" # org.reso.certification.stepdefs.WebAPIServer.(WebAPIServer.java:982) Response is valid JSON! And the response is valid JSON # org.reso.certification.stepdefs.WebAPIServer.(WebAPIServer.java:314) Results count is: 20 And the response has results # org.reso.certification.stepdefs.WebAPIServer.(WebAPIServer.java:345) Searching metadata for fields in given select list: [ListingKey, BedroomsTotal, OriginalEntryTimestamp] And resource metadata for "Parameter_EndpointResource" contains the fields in the given select list # org.reso.certification.stepdefs.WebAPIServer.(WebAPIServer.java:737) select list is: [ListingKey, BedroomsTotal, OriginalEntryTimestamp] Number of Results: 20 Number of Fields: 3 Fields with Data: 58 Percent Fill: 96.7% And data are present for fields contained within the given select list # org.reso.certification.stepdefs.WebAPIServer.(WebAPIServer.java:140) And DateTimeOffset data in "Parameter_TimestampField" is sorted in "asc" order # org.reso.certification.stepdefs.WebAPIServer.(WebAPIServer.java:611) java.lang.AssertionError: ERROR: java.lang.NullPointerException

The problem only seems to occur when a null value is encountered in the Parameter_TimestampField. Since an ascending sort is applied by the test we have no way around this one; we order nulls first.

darnjo commented 3 years ago

Hi @dgmyrek. Thanks for reporting this. We have null-handling code in other cases besides timestamps, but it looks like I need to add some additional handling in this case as well. I have a big PR coming with a bunch of changes (to improve Jenkins automation), and I'll create a branch off that work for this issue and take care of it sooner rather than later...If you don't hear something within the next week, please follow up. It should be sooner than that.

dgmyrek commented 3 years ago

Sounds great Josh, thanks!