### Question:
MusicInterestJoiner implements ValueJoiner<TrackPurchase, Album, MusicInterest> { public MusicInterest apply(TrackPurchase trackPurchase, Album album) { return MusicInterest.newBuilder() .setId(album.getId() + "-" + trackPurchase.getId()) .setGenre(album.getGenre()) .setArtist(album.getArtist()) .build(); }  MusicInterest apply(TrackPurchase trackPurchase, Album album);  }### Answer:
@Test public void apply() { MusicInterest returnedMusicInterest; Album theAlbum = Album.newBuilder().setTitle("Album Title").setId(100).setArtist("the artist").setGenre("testing").build(); TrackPurchase theTrackPurchase = TrackPurchase.newBuilder().setId(5000).setAlbumId(100).setPrice(1.25).setSongTitle("song-title").build(); MusicInterest expectedMusicInterest = MusicInterest.newBuilder().setArtist("the artist").setId("100-5000").setGenre("testing").build(); MusicInterestJoiner joiner = new MusicInterestJoiner(); returnedMusicInterest = joiner.apply(theTrackPurchase, theAlbum); assertEquals(returnedMusicInterest, expectedMusicInterest); }