Skip to content

Conversation

@osulzhenko
Copy link
Collaborator

@osulzhenko osulzhenko commented Oct 14, 2025

🔧 Type of changes

  • new bid adapter
  • bid adapter update
  • new feature
  • new analytics adapter
  • new module
  • module update
  • bugfix
  • documentation
  • configuration
  • dependency update
  • tech debt (test coverage, refactorings, etc.)

✨ What's the context?

What's the context for the changes?

🧠 Rationale behind the change

Why did you choose to make these changes? Were there any trade-offs you had to consider?

🔎 New Bid Adapter Checklist

  • verify email contact works
  • NO fully dynamic hostnames
  • geographic host parameters are NOT required
  • direct use of HTTP is prohibited - implement an existing Bidder interface that will do all the job
  • if the ORTB is just forwarded to the endpoint, use the generic adapter - define the new adapter as the alias of the generic adapter
  • cover an adapter configuration with an integration test

🧪 Test plan

How do you know the changes are safe to ship to production?

🏎 Quality check

  • Are your changes following our code style guidelines?
  • Are there any breaking changes in your code?
  • Does your test coverage exceed 90%?
  • Are there any erroneous console logs, debuggers or leftover code in your changes?

@osulzhenko osulzhenko self-assigned this Oct 14, 2025
@osulzhenko osulzhenko added the work in progress Signals not finished work label Oct 14, 2025
@osulzhenko osulzhenko marked this pull request as draft October 14, 2025 18:28
@osulzhenko osulzhenko requested a review from marki1an October 23, 2025 15:51
@osulzhenko osulzhenko removed the work in progress Signals not finished work label Oct 29, 2025
@osulzhenko osulzhenko marked this pull request as ready for review October 29, 2025 12:03
@marki1an marki1an added the tests Functional or other tests label Nov 3, 2025
Copy link
Collaborator

@marki1an marki1an left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add validation for get parameters

@JsonProperty("sarid")
String storedAuctionResponseId

@JsonProperty("mimes")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, really needed here JsonProperty

@JsonProperty("oh")
Integer originalHeight

@JsonProperty("sizes")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here

@JsonProperty("ms")
Object sizesLegacy

@JsonProperty("slot")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Check for similar occurrences

List<Integer> api

@JsonProperty("battr")
List<Integer> battr
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Better naming for it blockAttributes

Integer podSequence

@JsonProperty("proto")
List<Integer> proto
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please rename to protocols

and: "Bidder request should contain mimes from param"
def bidderRequest = bidder.getBidderRequest(request.id)
assert bidderRequest.imp.size() == 1
assert bidderRequest.imp.first.getProperty(impMediaType.value).mimes == [mimes]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd like to propose creating a utility method to get this field, since we will often use it, and it will be faster than using getProperty.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add in where block null value when mimes not defined.

Comment applicable to all tests

Comment on lines 48 to 52
impMediaType << [
MediaType.BANNER,
MediaType.VIDEO,
MediaType.AUDIO
]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In one line, please

it.mimes = [mimes]
}

"Default stored request"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mino: missing and:

}
}

def "PBS should apply ow and oh for banner imp from general get request when it's specified"() {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can merge with PBS should apply width and height for banner imp from general get request when it's specified

Comment on lines +73 to +75
and: "Default bid response"
def bidResponse = BidResponse.getDefaultBidResponse(request)
bidder.setResponse(request.id, bidResponse)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can remove bid response since it's present in BaseSpec

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please take a look at this comment

Comment on lines +73 to +75
and: "Default bid response"
def bidResponse = BidResponse.getDefaultBidResponse(request)
bidder.setResponse(request.id, bidResponse)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please take a look at this comment

given: "Default General get request"
def validMemis = PBSUtils.randomString
def generalGetRequest = GeneralGetRequest.default.tap {
it.mimes = (invalidMimes + validMemis)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about "$invalid $valid"?


def "PBS should apply width and height for banner imp from general get request when banner width and height are square dimensions"() {
given: "Default General get request"
def side = PBSUtils.getRandomNumber(0, 10)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why side?


def "PBS should apply sizes banner imp from general get request when banner width and height are square dimensions"() {
given: "Default General get request"
def side = PBSUtils.getRandomNumber(0, 10)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here: Why side

Comment on lines 443 to 446
impMediaType << [
MediaType.VIDEO,
MediaType.AUDIO
]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
impMediaType << [
MediaType.VIDEO,
MediaType.AUDIO
]
impMediaType << [MediaType.VIDEO, MediaType.AUDIO]

]
}

def "PBS should apply api from general get request when it's specified"() {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if not specified?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be nice to see all tests with a negative scenario when not specified

Comment on lines +465 to +467
and: "Default bid response"
def bidResponse = BidResponse.getDefaultBidResponse(request)
bidder.setResponse(request.id, bidResponse)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please remove it

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same for others

assert bidderRequest.imp.first.video.linearity == linearityParam
}

def "PBS should apply minbr from general get request when it's specified"() {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PBS should apply minbr and maxbr from general get request when it's specified

assert !response.ext?.errors
assert !response.ext?.warnings

and: "Bidder request should contain boxingallowed from param"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo: "playbackmethod"

assert !response.ext?.errors
assert !response.ext?.warnings

and: "Bidder request should contain boxingallowed from param"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here

@osulzhenko osulzhenko changed the base branch from master to get-interface November 20, 2025 08:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

tests Functional or other tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants