/* * Copyright (C) 2008-2017, Juick * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ package com.juick.service; import com.juick.Tag; import com.juick.User; import com.juick.configuration.RepositoryConfiguration; import com.juick.server.helpers.AnonymousUser; import org.junit.Before; import org.junit.Test; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; import javax.inject.Inject; import java.util.Collections; import java.util.List; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; /** * Created by aalexeev on 11/25/16. */ @ContextConfiguration(classes = RepositoryConfiguration.class) public class MessageServiceTest extends AbstractJUnit4SpringContextTests { @Inject private MessagesService messagesService; @Inject private UserService userService; @Inject private SubscriptionService subscriptionService; @Inject private TagService tagService; @Inject private TelegramService telegramService; @Inject private JdbcTemplate jdbcTemplate; @Inject private CrosspostService crosspostService; int ugnichId, freefdId, mid; @Before public void createUgniches() { ugnichId = userService.createUser("ugnich", "secret"); freefdId = userService.createUser("freefd", "secret"); } @Test public void getMyFeed() { mid = messagesService.createMessage(ugnichId, "test", null, null); int mid2 = messagesService.createMessage(ugnichId, "test2", null, null); subscriptionService.subscribeUser(userService.getUserByUID(freefdId).orElse(AnonymousUser.INSTANCE), userService.getUserByUID(ugnichId).orElse(AnonymousUser.INSTANCE)); List freefdFeed = messagesService.getMyFeed(freefdId, 0, false); assertThat(freefdFeed.size(), equalTo(2)); int tonyaid = userService.createUser("Tonya", "secret"); int mid3 = messagesService.createMessage(tonyaid, "test3", null, null); messagesService.recommendMessage(mid3, ugnichId); assertThat(messagesService.getMyFeed(freefdId, 0, false).size(), equalTo(2)); assertThat(messagesService.getMyFeed(freefdId, 0, true).size(), equalTo(3)); assertThat(messagesService.getMyFeed(freefdId, mid2, true).size(), equalTo(1)); assertThat(messagesService.getMyFeed(freefdId, mid, false).size(), equalTo(0)); assertThat(messagesService.recommendMessage(mid, ugnichId), equalTo(true)); assertThat(messagesService.getMessage(mid).getLikes(), equalTo(1)); assertThat(messagesService.recommendMessage(mid, ugnichId), equalTo(false)); assertThat(messagesService.getMessage(mid).getLikes(), equalTo(0)); assertThat(messagesService.getAll(ugnichId, 0).size(), equalTo(3)); User ugnich = userService.getUserByUID(ugnichId).orElse(AnonymousUser.INSTANCE); User freefd = userService.getUserByUID(freefdId).orElse(AnonymousUser.INSTANCE); Tag yoTag = tagService.getTag("yoyo", true); int mid = messagesService.createMessage(ugnichId, "yo", null, Collections.singletonList(yoTag)); List subscribers = subscriptionService.getSubscribedUsers(ugnichId, mid); telegramService.createTelegramUser(12345, "freefd"); String loginhash = jdbcTemplate.queryForObject("SELECT loginhash FROM telegram where tg_id=?", String.class, 12345); crosspostService.setTelegramUser(loginhash, freefd.getUid()); List telegramSubscribers = telegramService.getTelegramIdentifiers(subscribers); assertThat(subscribers.size(), equalTo(1)); assertThat(subscribers.size(), equalTo(telegramSubscribers.size())); assertThat(subscribers.get(0).getUid(), equalTo(freefd.getUid())); tagService.blacklistTag(freefd, yoTag); List subscribers2 = subscriptionService.getSubscribedUsers(ugnichId, mid); assertThat(subscribers2.size(), equalTo(0)); assertThat(telegramService.getTelegramIdentifiers(subscribers2).size(), equalTo(0)); tagService.blacklistTag(freefd, yoTag); assertThat(subscriptionService.getSubscribedUsers(ugnichId, mid).size(), equalTo(1)); } }