@@ -547,40 +547,53 @@ public void shouldFetchAccountFromStoredAndReturnFailedFutureIfStoredLookupIsFai
547547 }
548548
549549 @ Test
550- public void shouldFetchAccountFromStoredAndReturnEmptyAccountIfStoredLookupIsFailed () {
551- // given
552- final BidRequest receivedBidRequest = givenBidRequest (identity ());
553- given (storedRequestProcessor .processAuctionRequest (any (), any ()))
554- .willReturn (Future .failedFuture (new RuntimeException ("error" )));
555-
550+ public void fetchAccountWithoutStoredRequestLookupShouldNeverCallStoredProcessor () {
556551 // when
557- final Future < Account > result = target .fetchAccount (
552+ target .fetchAccountWithoutStoredRequestLookup (
558553 AuctionContext .builder ()
559554 .httpRequest (httpRequest )
560- .bidRequest (receivedBidRequest )
555+ .bidRequest (givenBidRequest ( identity ()) )
561556 .timeoutContext (TimeoutContext .of (0 , null , 0 ))
562557 .build ());
563558
564559 // then
565- verify (storedRequestProcessor ).processAuctionRequest ("" , receivedBidRequest );
566- verifyNoInteractions (applicationSettings );
567-
568- assertThat (result .failed ()).isTrue ();
569- assertThat (result .cause ()).hasMessage ("error" );
560+ verifyNoInteractions (storedRequestProcessor );
570561 }
571562
572563 @ Test
573- public void fetchAccountWithoutStoredRequestLookupShouldNeverCallStoredProcessor () {
564+ public void shouldFetchAccountFromProfileIfStoredLookupIsTrueAndAccountIsNotFoundPreviously () {
565+ // given
566+ final BidRequest receivedBidRequest = givenBidRequest (identity ());
567+
568+ final String accountId = "accountId" ;
569+ final BidRequest mergedBidRequest = givenBidRequest (builder -> builder
570+ .site (Site .builder ()
571+ .publisher (Publisher .builder ().id (accountId ).build ())
572+ .build ()));
573+
574+ given (storedRequestProcessor .processAuctionRequest (any (), any ()))
575+ .willAnswer (invocation -> Future .succeededFuture (
576+ AuctionStoredResult .of (false , invocation .getArgument (1 ))));
577+ given (profilesProcessor .process (any (), any ()))
578+ .willReturn (Future .succeededFuture (mergedBidRequest ));
579+
580+ final Account fetchedAccount = Account .builder ().id (accountId ).status (AccountStatus .active ).build ();
581+ given (applicationSettings .getAccountById (eq (accountId ), any ()))
582+ .willReturn (Future .succeededFuture (fetchedAccount ));
583+
574584 // when
575- target .fetchAccountWithoutStoredRequestLookup (
585+ final Future < Account > result = target .fetchAccount (
576586 AuctionContext .builder ()
577587 .httpRequest (httpRequest )
578- .bidRequest (givenBidRequest ( identity ()) )
588+ .bidRequest (receivedBidRequest )
579589 .timeoutContext (TimeoutContext .of (0 , null , 0 ))
580590 .build ());
581591
582592 // then
583- verifyNoInteractions (storedRequestProcessor );
593+ verify (storedRequestProcessor ).processAuctionRequest ("" , receivedBidRequest );
594+ verify (applicationSettings ).getAccountById (eq (accountId ), any ());
595+
596+ assertThat (result .result ()).isEqualTo (fetchedAccount );
584597 }
585598
586599 @ Test
0 commit comments