private TokenValueDto getFndFunds(final TokenValueDto tokenValueDto) { return hasFNDTokenSymbol(tokenValueDto) ? tokenValueDto : null; }
@Override public FundWithUserDto map(final Fund fund) { final TokenValueDto tokenValueDto = tokenValueDtoMapper.map(fund.getTokenValue()); final String funderNameOrAddress = StringUtils.isNotBlank(fund.getFunderUserId()) ? profileService.getUserProfile(fund::getFunderUserId).getName() : fund.getFunderAddress(); final boolean isFundedByLoggedInUser = isFundedByLoggedInUser(fund.getFunderUserId(), fund.getFunderAddress()); return tokenValueDto == null ? null : FundWithUserDto.builder() .funder(funderNameOrAddress) .funderAddress(fund.getFunderAddress()) .fndFunds(getFndFunds(tokenValueDto)) .otherFunds(getOtherFunds(tokenValueDto)) .isLoggedInUser(isFundedByLoggedInUser) .timestamp(fund.getTimestamp()) .isRefund(false) .build(); }
@Test void map_noFunderUserId() { final String funderAddress = "0x45HDF80"; final TokenValue tokenValue = mock(TokenValue.class); final Fund fund = Fund.builder() .funderAddress(funderAddress) .tokenValue(tokenValue) .requestId(543L) .timestamp(LocalDateTime.now()).blockchainEventId(238L) .build(); final TokenValueDto tokenValueDto = TokenValueDto.builder().tokenSymbol("SOT").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(fund); assertThat(result.getFunder()).isEqualTo(funderAddress.toLowerCase()); assertThat(result.getFunderAddress()).isEqualTo(funderAddress.toLowerCase()); assertThat(result.getFndFunds()).isNull(); assertThat(result.getOtherFunds()).isSameAs(tokenValueDto); assertThat(result.isLoggedInUser()).isFalse(); assertThat(result.getTimestamp()).isEqualToIgnoringMinutes(LocalDateTime.now()); assertThat(result.isRefund()).isFalse(); } }
@BeforeEach void setUp() { profileService = mock(ProfileService.class); tokenValueDtoMapper = mock(TokenValueDtoMapper.class); securityContextService = mock(SecurityContextService.class); mapper = new FundToFundWithUserDtoMapper(profileService, tokenValueDtoMapper, securityContextService); }
@Test void map_otherToken() { final String funderUserId = "gdhfgj"; final String funderAddress = "0x45HDF80"; final String funderUserName = "hgjgfk"; final TokenValue tokenValue = mock(TokenValue.class); final Fund fund = Fund.builder() .funderUserId(funderUserId) .funderAddress(funderAddress) .tokenValue(tokenValue) .requestId(543L) .timestamp(LocalDateTime.now()).blockchainEventId(238L) .build(); final TokenValueDto tokenValueDto = TokenValueDto.builder().tokenSymbol("SOT").build(); final UserProfile fundUserProfile = UserProfile.builder().id(funderUserId).etherAddresses(Collections.singletonList(funderAddress)).name(funderUserName).build(); final UserProfile loggedInUserProfile = UserProfile.builder().id(funderUserId).etherAddresses(Collections.singletonList(funderAddress)).name(funderUserName).build(); when(tokenValueDtoMapper.map(tokenValue)).thenReturn(tokenValueDto); when(profileService.getUserProfile(any())).thenReturn(fundUserProfile); when(securityContextService.getLoggedInUserProfile()).thenReturn(Optional.of(loggedInUserProfile)); final FundWithUserDto result = mapper.map(fund); assertThat(result.getFunder()).isEqualTo(funderUserName); assertThat(result.getFunderAddress()).isEqualTo(funderAddress.toLowerCase()); assertThat(result.getFndFunds()).isNull(); assertThat(result.getOtherFunds()).isSameAs(tokenValueDto); assertThat(result.isLoggedInUser()).isTrue(); assertThat(result.getTimestamp()).isEqualToIgnoringMinutes(LocalDateTime.now()); assertThat(result.isRefund()).isFalse(); }
@Test void map_loggedInUserDifferentAddress() { final String funderUserId = "gdhfgj"; final String funderAddress = "0x45HDF80"; final String funderUserName = "hgjgfk"; final TokenValue tokenValue = mock(TokenValue.class); final Fund fund = Fund.builder() .funderUserId(funderUserId) .funderAddress(funderAddress) .tokenValue(tokenValue) .requestId(543L) .timestamp(LocalDateTime.now()).blockchainEventId(238L) .build(); final TokenValueDto tokenValueDto = TokenValueDto.builder().tokenSymbol("SOT").build(); final UserProfile fundUserProfile = UserProfile.builder().id(funderUserId).etherAddresses(Collections.singletonList(funderAddress)).name(funderUserName).build(); final UserProfile loggedInUserProfile = UserProfile.builder().id(funderUserId).etherAddresses(Collections.singletonList("0xrdtdr")).name(funderUserName).build(); when(tokenValueDtoMapper.map(tokenValue)).thenReturn(tokenValueDto); when(profileService.getUserProfile(any())).thenReturn(fundUserProfile); when(securityContextService.getLoggedInUserProfile()).thenReturn(Optional.of(loggedInUserProfile)); final FundWithUserDto result = mapper.map(fund); assertThat(result.getFunder()).isEqualTo(funderUserName); assertThat(result.getFunderAddress()).isEqualTo(funderAddress.toLowerCase()); assertThat(result.getFndFunds()).isNull(); assertThat(result.getOtherFunds()).isSameAs(tokenValueDto); assertThat(result.isLoggedInUser()).isFalse(); assertThat(result.getTimestamp()).isEqualToIgnoringMinutes(LocalDateTime.now()); assertThat(result.isRefund()).isFalse(); }
private TokenValueDto getOtherFunds(final TokenValueDto tokenValueDto) { return !hasFNDTokenSymbol(tokenValueDto) ? tokenValueDto : null; }
@Test void map_loggedInUserDifferentUser() { final String funderUserId = "gdhfgj"; final String funderAddress = "0x45HDF80"; final String funderUserName = "hgjgfk"; final TokenValue tokenValue = mock(TokenValue.class); final Fund fund = Fund.builder() .funderUserId(funderUserId) .funderAddress(funderAddress) .tokenValue(tokenValue) .requestId(543L) .timestamp(LocalDateTime.now()).blockchainEventId(238L) .build(); final TokenValueDto tokenValueDto = TokenValueDto.builder().tokenSymbol("SOT").build(); final UserProfile fundUserProfile = UserProfile.builder().id(funderUserId).etherAddresses(Collections.singletonList(funderAddress)).name(funderUserName).build(); final UserProfile loggedInUserProfile = UserProfile.builder().id("fgh").etherAddresses(Collections.singletonList("0xrdtdr")).name(funderUserName).build(); when(tokenValueDtoMapper.map(tokenValue)).thenReturn(tokenValueDto); when(profileService.getUserProfile(any())).thenReturn(fundUserProfile); when(securityContextService.getLoggedInUserProfile()).thenReturn(Optional.of(loggedInUserProfile)); final FundWithUserDto result = mapper.map(fund); assertThat(result.getFunder()).isEqualTo(funderUserName); assertThat(result.getFunderAddress()).isEqualTo(funderAddress.toLowerCase()); assertThat(result.getFndFunds()).isNull(); assertThat(result.getOtherFunds()).isSameAs(tokenValueDto); assertThat(result.isLoggedInUser()).isFalse(); assertThat(result.getTimestamp()).isEqualToIgnoringMinutes(LocalDateTime.now()); assertThat(result.isRefund()).isFalse(); }
@Test void map_FND() { final String funderUserId = "gdhfgj"; final String funderAddress = "0x45HDF80"; final String funderUserName = "hgjgfk"; final TokenValue tokenValue = mock(TokenValue.class); final Fund fund = Fund.builder() .funderUserId(funderUserId) .funderAddress(funderAddress) .tokenValue(tokenValue) .requestId(543L) .timestamp(LocalDateTime.now()).blockchainEventId(238L) .build(); final TokenValueDto tokenValueDto = TokenValueDto.builder().tokenSymbol("FND").build(); final UserProfile fundUserProfile = UserProfile.builder().id(funderUserId).etherAddresses(Collections.singletonList(funderAddress)).name(funderUserName).build(); final UserProfile loggedInUserProfile = UserProfile.builder().id(funderUserId).etherAddresses(Collections.singletonList(funderAddress)).name(funderUserName).build(); when(tokenValueDtoMapper.map(tokenValue)).thenReturn(tokenValueDto); when(profileService.getUserProfile(any())).thenReturn(fundUserProfile); when(securityContextService.getLoggedInUserProfile()).thenReturn(Optional.of(loggedInUserProfile)); final FundWithUserDto result = mapper.map(fund); assertThat(result.getFunder()).isEqualTo(funderUserName); assertThat(result.getFunderAddress()).isEqualTo(funderAddress.toLowerCase()); assertThat(result.getFndFunds()).isSameAs(tokenValueDto); assertThat(result.getOtherFunds()).isNull(); assertThat(result.isLoggedInUser()).isTrue(); assertThat(result.getTimestamp()).isEqualToIgnoringMinutes(LocalDateTime.now()); assertThat(result.isRefund()).isFalse(); }