package io.kaif.service.impl; import static java.util.Arrays.asList; import static org.junit.Assert.*; import java.util.stream.IntStream; import org.junit.Before; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import io.kaif.flake.FlakeId; import io.kaif.model.account.Account; import io.kaif.model.feed.FeedAsset; import io.kaif.test.DbIntegrationTests; public class FeedServiceImplTest extends DbIntegrationTests { @Autowired private FeedServiceImpl service; Account account; @Before public void setUp() throws Exception { account = savedAccountCitizen("userX"); } @Test public void createReply() throws Exception { FlakeId debateId = nextFlakeId(); FeedAsset asset = service.createReplyFeed(debateId, account.getAccountId()); assertEquals(asList(asset), service.listFeeds(account, null)); FeedAsset loaded = service.listFeeds(account, null).get(0); assertEquals(FeedAsset.AssetType.DEBATE_FROM_REPLY, loaded.getAssetType()); assertEquals(debateId, loaded.getAssetId()); } @Test public void acknowledge() throws Exception { FlakeId debateId = nextFlakeId(); service.acknowledge(account, debateId); assertEquals("ack does nothing when no feed", 0, service.listFeeds(account, null).size()); FeedAsset asset = service.createReplyFeed(debateId, account.getAccountId()); assertFalse(asset.isAcked()); service.acknowledge(account, asset.getAssetId()); assertTrue(service.listFeeds(account, null).get(0).isAcked()); } @Test public void countUnread() throws Exception { assertEquals(0, service.countUnread(account)); FeedAsset a1 = service.createReplyFeed(nextFlakeId(), account.getAccountId()); FeedAsset a2 = service.createReplyFeed(nextFlakeId(), account.getAccountId()); assertEquals(2, service.countUnread(account)); service.acknowledge(account, a1.getAssetId()); assertEquals(1, service.countUnread(account)); service.acknowledge(account, a2.getAssetId()); assertEquals(0, service.countUnread(account)); IntStream.range(0, 20) .forEach(i -> service.createReplyFeed(nextFlakeId(), account.getAccountId())); assertEquals(11, service.countUnread(account)); } }