private TokenValueDto getOtherFunds(final TokenValueDto tokenValueDto) { return !hasFNDTokenSymbol(tokenValueDto) ? tokenValueDto : null; }
@Override public FundWithUserDto map(final Refund refund) { final TokenValueDto tokenValueDto = negate(tokenValueDtoMapper.map(refund.getTokenValue())); final String funderNameOrAddress = StringUtils.isNotBlank(refund.getRequestedBy()) ? profileService.getUserProfile(refund::getRequestedBy).getName() : refund.getFunderAddress(); final boolean isFundedByLoggedInUser = isFundedByLoggedInUser(refund.getRequestedBy(), refund.getFunderAddress()); return tokenValueDto == null ? null : FundWithUserDto.builder() .funder(funderNameOrAddress) .funderAddress(refund.getFunderAddress()) .fndFunds(getFndFunds(tokenValueDto)) .otherFunds(getOtherFunds(tokenValueDto)) .isLoggedInUser(isFundedByLoggedInUser) .timestamp(refund.getCreationDate()) .isRefund(true) .build(); }
@Test void map_noRefunderUserId() { final String refunderAddress = "0x45HDF80"; final TokenValue tokenValue = mock(TokenValue.class); final Refund refund = Refund.builder() .funderAddress(refunderAddress) .tokenValue(tokenValue) .requestId(543L) .creationDate(LocalDateTime.now()).blockchainEventId(238L) .build(); final TokenValueDto tokenValueDto = TokenValueDto.builder().tokenSymbol("SOT").totalAmount(new BigDecimal("23")).build(); final UserProfile loggedInUserProfile = UserProfile.builder().id("efsgfbg").etherAddresses(Collections.singletonList("0xrdtdr")).name("sfas").build(); when(tokenValueDtoMapper.map(tokenValue)).thenReturn(tokenValueDto); when(securityContextService.getLoggedInUserProfile()).thenReturn(Optional.of(loggedInUserProfile)); final FundWithUserDto result = mapper.map(refund); assertThat(result.getFunder()).isEqualTo(refunderAddress); assertThat(result.getFunderAddress()).isEqualTo(refunderAddress); assertThat(result.getFndFunds()).isNull(); assertThat(result.getOtherFunds().getTokenSymbol()).isEqualTo(tokenValueDto.getTokenSymbol()); assertThat(result.getOtherFunds().getTokenAddress()).isEqualTo(tokenValueDto.getTokenAddress()); assertThat(result.getOtherFunds().getTotalAmount()).isEqualTo(tokenValueDto.getTotalAmount().negate()); assertThat(result.isLoggedInUser()).isFalse(); assertThat(result.getTimestamp()).isEqualToIgnoringMinutes(LocalDateTime.now()); assertThat(result.isRefund()).isTrue(); } }
@BeforeEach void setUp() { profileService = mock(ProfileService.class); tokenValueDtoMapper = mock(TokenValueDtoMapper.class); securityContextService = mock(SecurityContextService.class); mapper = new RefundToFundWithUserDtoMapper(profileService, tokenValueDtoMapper, securityContextService); }
@Test void map_loggedInUserDifferentAddress() { final String refunderUserId = "gdhfgj"; final String refunderAddress = "0x45HDF80"; final String refunderUserName = "hgjgfk"; final TokenValue tokenValue = mock(TokenValue.class); final Refund refund = Refund.builder() .requestedBy(refunderUserId) .funderAddress(refunderAddress) .tokenValue(tokenValue) .requestId(543L) .creationDate(LocalDateTime.now()).blockchainEventId(238L) .build(); final TokenValueDto tokenValueDto = TokenValueDto.builder().tokenSymbol("SOT").totalAmount(new BigDecimal("23")).build(); final UserProfile refundUserProfile = UserProfile.builder().id(refunderUserId).etherAddresses(Collections.singletonList(refunderAddress)).name(refunderUserName).build(); final UserProfile loggedInUserProfile = UserProfile.builder().id(refunderUserId).etherAddresses(Collections.singletonList("0xrdtdr")).name(refunderUserName).build(); when(tokenValueDtoMapper.map(tokenValue)).thenReturn(tokenValueDto); when(profileService.getUserProfile(any())).thenReturn(refundUserProfile); when(securityContextService.getLoggedInUserProfile()).thenReturn(Optional.of(loggedInUserProfile)); final FundWithUserDto result = mapper.map(refund); assertThat(result.getFunder()).isEqualTo(refunderUserName); assertThat(result.getFunderAddress()).isEqualTo(refunderAddress); assertThat(result.getFndFunds()).isNull(); assertThat(result.getOtherFunds().getTokenSymbol()).isEqualTo(tokenValueDto.getTokenSymbol()); assertThat(result.getOtherFunds().getTokenAddress()).isEqualTo(tokenValueDto.getTokenAddress()); assertThat(result.getOtherFunds().getTotalAmount()).isEqualTo(tokenValueDto.getTotalAmount().negate()); assertThat(result.isLoggedInUser()).isFalse(); assertThat(result.getTimestamp()).isEqualToIgnoringMinutes(LocalDateTime.now()); assertThat(result.isRefund()).isTrue(); }
@Test void map_otherToken() { final String refunderUserId = "gdhfgj"; final String refunderAddress = "0x45HDF80"; final String refunderUserName = "hgjgfk"; final TokenValue tokenValue = mock(TokenValue.class); final Refund refund = Refund.builder() .requestedBy(refunderUserId) .funderAddress(refunderAddress) .tokenValue(tokenValue) .requestId(543L) .creationDate(LocalDateTime.now()).blockchainEventId(238L) .build(); final TokenValueDto tokenValueDto = TokenValueDto.builder().tokenSymbol("SOT").totalAmount(new BigDecimal("40")).build(); final UserProfile refundUserProfile = UserProfile.builder().id(refunderUserId).etherAddresses(Collections.singletonList(refunderAddress)).name(refunderUserName).build(); final UserProfile loggedInUserProfile = UserProfile.builder().id(refunderUserId).etherAddresses(Collections.singletonList(refunderAddress)).name(refunderUserName).build(); when(tokenValueDtoMapper.map(tokenValue)).thenReturn(tokenValueDto); when(profileService.getUserProfile(any())).thenReturn(refundUserProfile); when(securityContextService.getLoggedInUserProfile()).thenReturn(Optional.of(loggedInUserProfile)); final FundWithUserDto result = mapper.map(refund); assertThat(result.getFunder()).isEqualTo(refunderUserName); assertThat(result.getFunderAddress()).isEqualTo(refunderAddress); assertThat(result.getFndFunds()).isNull(); assertThat(result.getOtherFunds().getTokenSymbol()).isEqualTo(tokenValueDto.getTokenSymbol()); assertThat(result.getOtherFunds().getTokenAddress()).isEqualTo(tokenValueDto.getTokenAddress()); assertThat(result.getOtherFunds().getTotalAmount()).isEqualTo(tokenValueDto.getTotalAmount().negate()); assertThat(result.isLoggedInUser()).isTrue(); assertThat(result.getTimestamp()).isEqualToIgnoringMinutes(LocalDateTime.now()); assertThat(result.isRefund()).isTrue(); }
private TokenValueDto getFndFunds(final TokenValueDto tokenValueDto) { return hasFNDTokenSymbol(tokenValueDto) ? tokenValueDto : null; }
@Test void map_FND() { final String refunderUserId = "gdhfgj"; final String refunderAddress = "0x45HDF80"; final String refunderUserName = "hgjgfk"; final TokenValue tokenValue = mock(TokenValue.class); final Refund refund = Refund.builder() .requestedBy(refunderUserId) .funderAddress(refunderAddress) .tokenValue(tokenValue) .requestId(543L) .creationDate(LocalDateTime.now()).blockchainEventId(238L) .build(); final TokenValueDto tokenValueDto = TokenValueDto.builder().tokenSymbol("FND").totalAmount(new BigDecimal("445")).build(); final UserProfile refundUserProfile = UserProfile.builder().id(refunderUserId).etherAddresses(Collections.singletonList(refunderAddress)).name(refunderUserName).build(); final UserProfile loggedInUserProfile = UserProfile.builder().id(refunderUserId).etherAddresses(Collections.singletonList(refunderAddress)).name(refunderUserName).build(); when(tokenValueDtoMapper.map(tokenValue)).thenReturn(tokenValueDto); when(profileService.getUserProfile(any())).thenReturn(refundUserProfile); when(securityContextService.getLoggedInUserProfile()).thenReturn(Optional.of(loggedInUserProfile)); final FundWithUserDto result = mapper.map(refund); assertThat(result.getFunder()).isEqualTo(refunderUserName); assertThat(result.getFunderAddress()).isEqualTo(refunderAddress); assertThat(result.getFndFunds().getTokenSymbol()).isEqualTo(tokenValueDto.getTokenSymbol()); assertThat(result.getFndFunds().getTokenAddress()).isEqualTo(tokenValueDto.getTokenAddress()); assertThat(result.getFndFunds().getTotalAmount()).isEqualTo(tokenValueDto.getTotalAmount().negate()); assertThat(result.getOtherFunds()).isNull(); assertThat(result.isLoggedInUser()).isTrue(); assertThat(result.getTimestamp()).isEqualToIgnoringMinutes(LocalDateTime.now()); assertThat(result.isRefund()).isTrue(); }
@Test void map_loggedInUserDifferentUser() { final String refunderUserId = "gdhfgj"; final String refunderAddress = "0x45HDF80"; final String refunderUserName = "hgjgfk"; final TokenValue tokenValue = mock(TokenValue.class); final Refund refund = Refund.builder() .requestedBy(refunderUserId) .funderAddress(refunderAddress) .tokenValue(tokenValue) .requestId(543L) .creationDate(LocalDateTime.now()).blockchainEventId(238L) .build(); final TokenValueDto tokenValueDto = TokenValueDto.builder().tokenSymbol("SOT").totalAmount(new BigDecimal("23")).build(); final UserProfile refundUserProfile = UserProfile.builder().id(refunderUserId).etherAddresses(Collections.singletonList(refunderAddress)).name(refunderUserName).build(); final UserProfile loggedInUserProfile = UserProfile.builder().id("fgh").etherAddresses(Collections.singletonList("0xrdtdr")).name(refunderUserName).build(); when(tokenValueDtoMapper.map(tokenValue)).thenReturn(tokenValueDto); when(profileService.getUserProfile(any())).thenReturn(refundUserProfile); when(securityContextService.getLoggedInUserProfile()).thenReturn(Optional.of(loggedInUserProfile)); final FundWithUserDto result = mapper.map(refund); assertThat(result.getFunder()).isEqualTo(refunderUserName); assertThat(result.getFunderAddress()).isEqualTo(refunderAddress); assertThat(result.getFndFunds()).isNull(); assertThat(result.getOtherFunds().getTokenSymbol()).isEqualTo(tokenValueDto.getTokenSymbol()); assertThat(result.getOtherFunds().getTokenAddress()).isEqualTo(tokenValueDto.getTokenAddress()); assertThat(result.getOtherFunds().getTotalAmount()).isEqualTo(tokenValueDto.getTotalAmount().negate()); assertThat(result.isLoggedInUser()).isFalse(); assertThat(result.getTimestamp()).isEqualToIgnoringMinutes(LocalDateTime.now()); assertThat(result.isRefund()).isTrue(); }