Package com.sishuok.es.personal.message.service

Source Code of com.sishuok.es.personal.message.service.MessageApiIT

/**
* Copyright (c) 2005-2012 https://github.com/zhangkaitao
*
* Licensed under the Apache License, Version 2.0 (the "License");
*/
package com.sishuok.es.personal.message.service;

import com.sishuok.es.common.entity.search.SearchOperator;
import com.sishuok.es.common.entity.search.Searchable;
import com.sishuok.es.common.spring.utils.AopProxyUtils;
import com.sishuok.es.personal.message.BaseMessageIT;
import com.sishuok.es.personal.message.entity.Message;
import com.sishuok.es.personal.message.entity.MessageContent;
import com.sishuok.es.personal.message.entity.MessageState;
import com.sishuok.es.personal.message.entity.MessageType;
import com.sishuok.es.sys.user.entity.User;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.domain.Page;

import java.util.Date;
import java.util.List;
import java.util.concurrent.ExecutionException;

/**
* <p>User: Zhang Kaitao
* <p>Date: 13-5-24 下午6:17
* <p>Version: 1.0
*/
public class MessageApiIT extends BaseMessageIT {

    private Logger log = LoggerFactory.getLogger(MessageApiIT.class);

    @Before
    public void setUp() {
        super.setUp();
        deleteAll(messageService.findAll());
        clear();

        //移除异步支持
        if(AopProxyUtils.isAsync(messageApi)) {
            AopProxyUtils.removeAsync(messageApi);
        }
    }

    @Test
    public void testSaveDraft() {

        Message message = new Message();
        message.setSenderId(senderId);
        message.setReceiverId(receiverId);
        message.setTitle("abcded");
        MessageContent content = new MessageContent();
        content.setContent("abcde");
        message.setContent(content);
        messageApi.saveDraft(message);


        Page<Message> page = messageApi.findUserMessage(senderId, MessageState.draft_box, null);
        Assert.assertTrue(page.getTotalElements() == 1);

        page = messageApi.findUserMessage(receiverId, MessageState.draft_box, null);
        Assert.assertTrue(page.getTotalElements() == 0);
    }

    @Test
    public void testSend() {

        Long expectedCount = messageService.count() + 1;

        Message message = new Message();
        message.setSenderId(senderId);
        message.setReceiverId(receiverId);
        message.setTitle("abcded");
        MessageContent content = new MessageContent();
        content.setContent("abcde");
        message.setContent(content);
        messageApi.send(message);

        Long actualCount = messageService.count();
        Assert.assertEquals(expectedCount, actualCount);

        Page<Message> page = messageApi.findUserMessage(receiverId, MessageState.in_box, null);
        Assert.assertTrue(page.getTotalElements() >= 1);
        Assert.assertTrue(messageApi.countUnread(receiverId) >= 1);
    }


    @Test
    public void testSendWithParent() {

        Long expectedCount = 3 + messageService.count();

        Message message1 = new Message();
        message1.setSenderId(senderId);
        message1.setReceiverId(receiverId);
        message1.setTitle("abcded");
        MessageContent content1 = new MessageContent();
        content1.setContent("abcde");
        message1.setContent(content1);
        messageApi.send(message1);

        Message message2 = new Message();
        message2.setSenderId(senderId);
        message2.setReceiverId(receiverId);
        message2.setTitle("abcded");
        MessageContent content2 = new MessageContent();
        content2.setContent("abcde");
        message2.setContent(content2);
        message2.setParentId(message1.getId());
        messageApi.send(message2);


        Message message3 = new Message();
        message3.setSenderId(senderId);
        message3.setReceiverId(receiverId);
        message3.setTitle("abcded");
        MessageContent content3 = new MessageContent();
        content3.setContent("abcde");
        message3.setContent(content3);
        message3.setParentId(message2.getId());
        messageApi.send(message3);


        Long actualCount = messageService.count();
        Assert.assertEquals(expectedCount, actualCount);


        Assert.assertEquals(message1.getId() + "/" + message2.getId() + "/", message3.getParentIds());


        Page<Message> page = messageApi.findUserMessage(receiverId, MessageState.in_box, null);
        Assert.assertTrue(page.getTotalElements() >= 1);
        Assert.assertTrue(messageApi.countUnread(receiverId) >= 1);
    }


    @Test
    public void testSendSystemMessageSuccess() {


        Long expectedCount = 3 + messageService.count();

        Message message = new Message();
        message.setSenderId(senderId);
        message.setTitle("abcded");
        MessageContent content = new MessageContent();
        content.setContent("abcde");
        message.setContent(content);
        Long[] userIds = new Long[]{1L, 2L, 3L};

        messageApi.sendSystemMessage(userIds, message);

        Long actualCount = messageService.count();
        Assert.assertEquals(expectedCount, actualCount);

        Searchable searchable = Searchable.newSearchable();
        searchable.addSearchFilter("receiverId", SearchOperator.in, userIds);
        List<Message> list = messageService.findAllWithNoPageNoSort(searchable);
        Assert.assertEquals(userIds.length, list.size());
        Assert.assertEquals(MessageType.system_message, list.get(0).getType());

        Page<Message> page = messageApi.findUserMessage(receiverId, MessageState.in_box, null);
        Assert.assertTrue(page.getTotalElements() >= 1);
        Assert.assertTrue(messageApi.countUnread(receiverId) >= 1);
    }


    @Test
    public void testSendSystemMessageToAllUserSuccess() throws ExecutionException, InterruptedException {

        User user1 = createDefaultUser();

        Long expectedCount = userService.count();

        Message message = new Message();
        message.setSenderId(senderId);
        message.setTitle("abcded");
        MessageContent content = new MessageContent();
        content.setContent("abcde");
        message.setContent(content);

        if(AopProxyUtils.isAsync(messageApi)) {
            AopProxyUtils.removeAsync(messageApi);
        }

        messageApi.sendSystemMessageToAllUser(message);

        Long actualCount = messageService.count();
        Assert.assertEquals(expectedCount, actualCount);

        Long[] userIds = new Long[]{user1.getId()};
        Searchable searchable = Searchable.newSearchable();
        searchable.addSearchFilter("receiverId", SearchOperator.in, userIds);
        List<Message> list = messageService.findAllWithNoPageNoSort(searchable);
        Assert.assertEquals(userIds.length, list.size());
        Assert.assertEquals(MessageType.system_message, list.get(0).getType());
    }


    @Test
    public void testRecycleSenderSingleMessage() {
        Long expectedTrashBoxCount =
                messageApi.findUserMessage(senderId, MessageState.trash_box, null).getTotalElements() + 1;
        Long expectedUnreadCount = messageApi.countUnread(receiverId) + 1;

        Message message = sendDefaultMessage();
        messageApi.recycle(senderId, message.getId());

        Assert.assertEquals(MessageState.trash_box, message.getSenderState());
        Assert.assertEquals(MessageState.in_box, message.getReceiverState());

        Long actualTrashBoxCount = messageApi.findUserMessage(senderId, MessageState.trash_box, null).getTotalElements();
        Long actualUnreadCount = messageApi.countUnread(receiverId);
        Assert.assertEquals(expectedTrashBoxCount, actualTrashBoxCount);
        Assert.assertEquals(expectedUnreadCount, actualUnreadCount);
    }


    @Test
    public void testRecycleReceiverSingleMessage() {
        Long expectedTrashBoxCount =
                messageApi.findUserMessage(receiverId, MessageState.trash_box, null).getTotalElements() + 1;
        Long expectedUnreadCount = messageApi.countUnread(receiverId);

        Message message = sendDefaultMessage();
        messageApi.recycle(receiverId, message.getId());

        Assert.assertEquals(MessageState.out_box, message.getSenderState());
        Assert.assertEquals(MessageState.trash_box, message.getReceiverState());

        Long actualTrashBoxCount = messageApi.findUserMessage(receiverId, MessageState.trash_box, null).getTotalElements();
        Long actualUnreadCount = messageApi.countUnread(receiverId);

        Assert.assertEquals(expectedTrashBoxCount, actualTrashBoxCount);
        Assert.assertEquals(expectedUnreadCount, actualUnreadCount);
    }


    @Test
    public void testBatchRecycleSenderMessage() {
        Long expectedTrashBoxCount = 3 + messageApi.findUserMessage(senderId, MessageState.trash_box, null).getTotalElements();
        Long expectedUnreadCount = 3 + messageApi.countUnread(receiverId);

        Message message1 = sendDefaultMessage();
        Message message2 = sendDefaultMessage();
        Message message3 = sendDefaultMessage();
        Long[] messageIds = new Long[]{message1.getId(), message2.getId(), message3.getId()};

        messageApi.recycle(senderId, messageIds);

        message1 = messageService.findOne(message1.getId());
        Assert.assertEquals(MessageState.trash_box, message1.getSenderState());
        Assert.assertEquals(MessageState.in_box, message1.getReceiverState());

        Long actualTrashBoxCount = messageApi.findUserMessage(senderId, MessageState.trash_box, null).getTotalElements();
        Long actualUnreadCount = messageApi.countUnread(receiverId);
        Assert.assertEquals(expectedTrashBoxCount, actualTrashBoxCount);
        Assert.assertEquals(expectedUnreadCount, actualUnreadCount);
    }


    @Test
    public void testBatchRecycleReceiverMessage() {
        Long expectedTrashBoxCount = 3 + messageApi.findUserMessage(receiverId, MessageState.trash_box, null).getTotalElements();
        Long expectedUnreadCount = messageApi.countUnread(receiverId);

        Message message1 = sendDefaultMessage();
        Message message2 = sendDefaultMessage();
        Message message3 = sendDefaultMessage();
        Long[] messageIds = new Long[]{message1.getId(), message2.getId(), message3.getId()};

        messageApi.recycle(receiverId, messageIds);

        message1 = messageService.findOne(message1.getId());
        Assert.assertEquals(MessageState.out_box, message1.getSenderState());
        Assert.assertEquals(MessageState.trash_box, message1.getReceiverState());

        Long actualTrashBoxCount = messageApi.findUserMessage(receiverId, MessageState.trash_box, null).getTotalElements();
        Long actualUnreadCount = messageApi.countUnread(receiverId);

        Assert.assertEquals(expectedTrashBoxCount, actualTrashBoxCount);
        Assert.assertEquals(expectedUnreadCount, actualUnreadCount);
    }


    @Test
    public void testStoreSenderSingleMessage() {
        Long expectedStoreBoxCount =
                messageApi.findUserMessage(senderId, MessageState.trash_box, null).getTotalElements() + 1;
        Long expectedUnreadCount = messageApi.countUnread(receiverId) + 1;

        Message message = sendDefaultMessage();
        messageApi.store(senderId, message.getId());

        Assert.assertEquals(MessageState.store_box, message.getSenderState());
        Assert.assertEquals(MessageState.in_box, message.getReceiverState());

        Long actualStoreBoxCount = messageApi.findUserMessage(senderId, MessageState.store_box, null).getTotalElements();
        Long actualUnreadCount = messageApi.countUnread(receiverId);
        Assert.assertEquals(expectedStoreBoxCount, actualStoreBoxCount);
        Assert.assertEquals(expectedUnreadCount, actualUnreadCount);
    }


    @Test
    public void testStoreReceiverSingleMessage() {
        Long expectedStoreBoxCount =
                messageApi.findUserMessage(receiverId, MessageState.trash_box, null).getTotalElements() + 1;
        Long expectedUnreadCount = messageApi.countUnread(receiverId);

        Message message = sendDefaultMessage();
        messageApi.store(receiverId, message.getId());

        Assert.assertEquals(MessageState.out_box, message.getSenderState());
        Assert.assertEquals(MessageState.store_box, message.getReceiverState());

        Long actualStoreBoxCount = messageApi.findUserMessage(receiverId, MessageState.store_box, null).getTotalElements();
        Long actualUnreadCount = messageApi.countUnread(receiverId);

        Assert.assertEquals(expectedStoreBoxCount, actualStoreBoxCount);
        Assert.assertEquals(expectedUnreadCount, actualUnreadCount);
    }


    @Test
    public void testBatchStoreSenderMessage() {
        Long expectedStoreBoxCount = 3 + messageApi.findUserMessage(senderId, MessageState.store_box, null).getTotalElements();
        Long expectedUnreadCount = 3 + messageApi.countUnread(receiverId);

        Message message1 = sendDefaultMessage();
        Message message2 = sendDefaultMessage();
        Message message3 = sendDefaultMessage();
        Long[] messageIds = new Long[]{message1.getId(), message2.getId(), message3.getId()};

        messageApi.store(senderId, messageIds);

        message1 = messageService.findOne(message1.getId());
        Assert.assertEquals(MessageState.store_box, message1.getSenderState());
        Assert.assertEquals(MessageState.in_box, message1.getReceiverState());

        Long actualStoreBoxCount = messageApi.findUserMessage(senderId, MessageState.store_box, null).getTotalElements();
        Long actualUnreadCount = messageApi.countUnread(receiverId);
        Assert.assertEquals(expectedStoreBoxCount, actualStoreBoxCount);
        Assert.assertEquals(expectedUnreadCount, actualUnreadCount);
    }


    @Test
    public void testBatchStoreReceiverMessage() {
        Long expectedStoreBoxCount = 3 + messageApi.findUserMessage(receiverId, MessageState.trash_box, null).getTotalElements();
        Long expectedUnreadCount = messageApi.countUnread(receiverId);

        Message message1 = sendDefaultMessage();
        Message message2 = sendDefaultMessage();
        Message message3 = sendDefaultMessage();
        Long[] messageIds = new Long[]{message1.getId(), message2.getId(), message3.getId()};

        messageApi.store(receiverId, messageIds);

        message1 = messageService.findOne(message1.getId());
        Assert.assertEquals(MessageState.out_box, message1.getSenderState());
        Assert.assertEquals(MessageState.store_box, message1.getReceiverState());

        Long actualStoreBoxCount = messageApi.findUserMessage(receiverId, MessageState.store_box, null).getTotalElements();
        Long actualUnreadCount = messageApi.countUnread(receiverId);

        Assert.assertEquals(expectedStoreBoxCount, actualStoreBoxCount);
        Assert.assertEquals(expectedUnreadCount, actualUnreadCount);
    }


    @Test
    public void testDeleteSenderSingleMessage() {
        Long expectedDeleteBoxCount =
                messageApi.findUserMessage(senderId, MessageState.trash_box, null).getTotalElements() + 1;
        Long expectedUnreadCount = messageApi.countUnread(receiverId) + 1;

        Message message = sendDefaultMessage();
        messageApi.delete(senderId, message.getId());

        Assert.assertEquals(MessageState.delete_box, message.getSenderState());
        Assert.assertEquals(MessageState.in_box, message.getReceiverState());

        Long actualDeleteBoxCount = messageApi.findUserMessage(senderId, MessageState.delete_box, null).getTotalElements();
        Long actualUnreadCount = messageApi.countUnread(receiverId);
        Assert.assertEquals(expectedDeleteBoxCount, actualDeleteBoxCount);
        Assert.assertEquals(expectedUnreadCount, actualUnreadCount);
    }


    @Test
    public void testDeleteReceiverSingleMessage() {
        Long expectedDeleteBoxCount =
                messageApi.findUserMessage(receiverId, MessageState.delete_box, null).getTotalElements() + 1;
        Long expectedUnreadCount = messageApi.countUnread(receiverId);

        Message message = sendDefaultMessage();
        messageApi.delete(receiverId, message.getId());

        Assert.assertEquals(MessageState.out_box, message.getSenderState());
        Assert.assertEquals(MessageState.delete_box, message.getReceiverState());

        Long actualDeleteBoxCount = messageApi.findUserMessage(receiverId, MessageState.delete_box, null).getTotalElements();
        Long actualUnreadCount = messageApi.countUnread(receiverId);

        Assert.assertEquals(expectedDeleteBoxCount, actualDeleteBoxCount);
        Assert.assertEquals(expectedUnreadCount, actualUnreadCount);
    }


    @Test
    public void testBatchDeleteSenderMessage() {
        Long expectedDeleteBoxCount = 3 + messageApi.findUserMessage(senderId, MessageState.delete_box, null).getTotalElements();
        Long expectedUnreadCount = 3 + messageApi.countUnread(receiverId);

        Message message1 = sendDefaultMessage();
        Message message2 = sendDefaultMessage();
        Message message3 = sendDefaultMessage();
        Long[] messageIds = new Long[]{message1.getId(), message2.getId(), message3.getId()};

        messageApi.delete(senderId, messageIds);

        message1 = messageService.findOne(message1.getId());
        Assert.assertEquals(MessageState.delete_box, message1.getSenderState());
        Assert.assertEquals(MessageState.in_box, message1.getReceiverState());

        Long actualDeleteBoxCount = messageApi.findUserMessage(senderId, MessageState.delete_box, null).getTotalElements();
        Long actualUnreadCount = messageApi.countUnread(receiverId);
        Assert.assertEquals(expectedDeleteBoxCount, actualDeleteBoxCount);
        Assert.assertEquals(expectedUnreadCount, actualUnreadCount);
    }


    @Test
    public void testBatchDeleteReceiverMessage() {
        Long expectedDeleteBoxCount = 3 + messageApi.findUserMessage(receiverId, MessageState.delete_box, null).getTotalElements();
        Long expectedUnreadCount = messageApi.countUnread(receiverId);

        Message message1 = sendDefaultMessage();
        Message message2 = sendDefaultMessage();
        Message message3 = sendDefaultMessage();
        Long[] messageIds = new Long[]{message1.getId(), message2.getId(), message3.getId()};

        messageApi.delete(receiverId, messageIds);

        message1 = messageService.findOne(message1.getId());
        Assert.assertEquals(MessageState.out_box, message1.getSenderState());
        Assert.assertEquals(MessageState.delete_box, message1.getReceiverState());

        Long actualDeleteBoxCount = messageApi.findUserMessage(receiverId, MessageState.delete_box, null).getTotalElements();
        Long actualUnreadCount = messageApi.countUnread(receiverId);

        Assert.assertEquals(expectedDeleteBoxCount, actualDeleteBoxCount);
        Assert.assertEquals(expectedUnreadCount, actualUnreadCount);
    }

    @Test
    public void testClearDraftBox() {
        Long expectedDraftBoxCount =
                messageApi.findUserMessage(senderId, MessageState.draft_box, null).getTotalElements() + 1;
        Long expectedTrashBoxCount =
                messageApi.findUserMessage(senderId, MessageState.trash_box, null).getTotalElements() + 1;

        Message message = new Message();
        message.setSenderId(senderId);
        message.setReceiverId(receiverId);
        message.setTitle("ded");
        MessageContent content = new MessageContent();
        content.setContent("abcde");
        message.setContent(content);
        message.setSenderState(MessageState.draft_box);

        messageService.save(message);

        Long actualDraftBoxCount = messageApi.findUserMessage(senderId, MessageState.draft_box, null).getTotalElements();
        Assert.assertEquals(expectedDraftBoxCount, actualDraftBoxCount);

        messageApi.clearDraftBox(senderId);

        actualDraftBoxCount = messageApi.findUserMessage(senderId, MessageState.draft_box, null).getTotalElements();
        Assert.assertEquals(Long.valueOf(0L), actualDraftBoxCount);

        Long actualTrashBoxCount = messageApi.findUserMessage(senderId, MessageState.trash_box, null).getTotalElements();
        Assert.assertEquals(expectedTrashBoxCount, actualTrashBoxCount);

    }

    @Test
    public void testClearInBox() {
        Long expectedInBoxCount =
                messageApi.findUserMessage(receiverId, MessageState.in_box, null).getTotalElements() + 1;
        Long expectedTrashBoxCount =
                messageApi.findUserMessage(receiverId, MessageState.trash_box, null).getTotalElements() + 1;

        Message message = new Message();
        message.setSenderId(senderId);
        message.setReceiverId(receiverId);
        message.setTitle("ded");
        MessageContent content = new MessageContent();
        content.setContent("abcde");
        message.setContent(content);
        messageApi.send(message);

        Long actualInBoxCount = messageApi.findUserMessage(receiverId, MessageState.in_box, null).getTotalElements();
        Assert.assertEquals(expectedInBoxCount, actualInBoxCount);

        messageApi.clearInBox(receiverId);

        actualInBoxCount = messageApi.findUserMessage(receiverId, MessageState.in_box, null).getTotalElements();
        Assert.assertEquals(Long.valueOf(0L), actualInBoxCount);

        Long actualTrashBoxCount = messageApi.findUserMessage(receiverId, MessageState.trash_box, null).getTotalElements();
        Assert.assertEquals(expectedTrashBoxCount, actualTrashBoxCount);

    }


    @Test
    public void testClearOutBox() {
        Long expectedOutBoxCount =
                messageApi.findUserMessage(senderId, MessageState.out_box, null).getTotalElements() + 1;
        Long expectedTrashBoxCount =
                messageApi.findUserMessage(senderId, MessageState.trash_box, null).getTotalElements() + 1;

        Message message = new Message();
        message.setSenderId(senderId);
        message.setReceiverId(receiverId);
        message.setTitle("ded");
        MessageContent content = new MessageContent();
        content.setContent("abcde");
        message.setContent(content);
        messageApi.send(message);

        Long actualOutBoxCount = messageApi.findUserMessage(senderId, MessageState.out_box, null).getTotalElements();
        Assert.assertEquals(expectedOutBoxCount, actualOutBoxCount);

        messageApi.clearOutBox(senderId);

        actualOutBoxCount = messageApi.findUserMessage(senderId, MessageState.out_box, null).getTotalElements();
        Assert.assertEquals(Long.valueOf(0L), actualOutBoxCount);

        Long actualTrashBoxCount = messageApi.findUserMessage(senderId, MessageState.trash_box, null).getTotalElements();
        Assert.assertEquals(expectedTrashBoxCount, actualTrashBoxCount);

    }


    @Test
    public void testClearStoreBox() {
        Long expectedStoreBoxCount =
                messageApi.findUserMessage(senderId, MessageState.store_box, null).getTotalElements() + 1;
        Long expectedTrashBoxCount =
                messageApi.findUserMessage(senderId, MessageState.trash_box, null).getTotalElements() + 1;

        Message message = new Message();
        message.setSenderId(senderId);
        message.setReceiverId(receiverId);
        message.setTitle("ded");
        MessageContent content = new MessageContent();
        content.setContent("abcde");
        message.setContent(content);
        messageApi.send(message);

        messageApi.store(senderId, message.getId());

        Long actualStoreBoxCount = messageApi.findUserMessage(senderId, MessageState.store_box, null).getTotalElements();
        Assert.assertEquals(expectedStoreBoxCount, actualStoreBoxCount);

        messageApi.clearStoreBox(senderId);

        actualStoreBoxCount = messageApi.findUserMessage(senderId, MessageState.store_box, null).getTotalElements();
        Assert.assertEquals(Long.valueOf(0L), actualStoreBoxCount);

        Long actualTrashBoxCount = messageApi.findUserMessage(senderId, MessageState.trash_box, null).getTotalElements();
        Assert.assertEquals(expectedTrashBoxCount, actualTrashBoxCount);

    }


    @Test
    public void testClearTrashBox() throws InterruptedException {
        Long expectedTrashBoxCount =
                messageApi.findUserMessage(senderId, MessageState.trash_box, null).getTotalElements() + 1;
        Long expectedDeleteBoxCount = messageApi.findUserMessage(senderId, MessageState.delete_box, null).getTotalElements() + 1;

        Date lastDate = new Date();
        Thread.sleep(1500L)//暂停1500毫秒 保证时间差(因为mysql只支持到秒。。)

        Message message = new Message();
        message.setSenderId(senderId);
        message.setReceiverId(receiverId);
        message.setTitle("ded");
        MessageContent content = new MessageContent();
        content.setContent("abcde");
        message.setContent(content);
        messageApi.send(message);

        clear();
        message = messageService.findOne(message.getId());

        Assert.assertTrue(message.getSendDate().getTime() > lastDate.getTime());
        Assert.assertTrue(message.getSendDate().getTime() == message.getSenderStateChangeDate().getTime());
        Assert.assertTrue(message.getSendDate().getTime() == message.getReceiverStateChangeDate().getTime());

        lastDate = message.getSendDate();

        Thread.sleep(1500L);
        messageApi.recycle(senderId, message.getId());
        clear();

        message = messageService.findOne(message.getId());
        Assert.assertTrue(message.getSendDate().getTime() == message.getReceiverStateChangeDate().getTime());
        Assert.assertFalse(message.getSendDate().getTime() == message.getSenderStateChangeDate().getTime());
        Assert.assertTrue(message.getSenderStateChangeDate().getTime() > lastDate.getTime());

        lastDate = message.getSenderStateChangeDate();

        Long actualTrashBoxCount = messageApi.findUserMessage(senderId, MessageState.trash_box, null).getTotalElements();
        Assert.assertEquals(expectedTrashBoxCount, actualTrashBoxCount);

        Thread.sleep(1500L);
        messageApi.clearTrashBox(senderId);
        clear();

        message = messageService.findOne(message.getId());
        Assert.assertTrue(message.getSendDate().getTime() == message.getReceiverStateChangeDate().getTime());
        Assert.assertFalse(message.getSendDate().getTime() == message.getSenderStateChangeDate().getTime());
        Assert.assertTrue(message.getSenderStateChangeDate().getTime() > lastDate.getTime());

        actualTrashBoxCount = messageApi.findUserMessage(senderId, MessageState.trash_box, null).getTotalElements();
        Assert.assertEquals(Long.valueOf(0L), actualTrashBoxCount);

        Long actuaDeleteBoxCount = messageApi.findUserMessage(senderId, MessageState.delete_box, null).getTotalElements();
        Assert.assertEquals(expectedDeleteBoxCount, actuaDeleteBoxCount);

    }


    @Test
    public void testMarkRead() {

        Message message = sendDefaultMessage();

        Assert.assertEquals(Boolean.FALSE, message.getRead());

        messageApi.markRead(message);
        clear();
        message = messageService.findOne(message.getId());

        Assert.assertEquals(Boolean.TRUE, message.getRead());

    }

    @Test
    public void testMarkReplied() {

        Message message = sendDefaultMessage();

        Assert.assertEquals(Boolean.FALSE, message.getReplied());

        messageApi.markReplied(message);
        clear();
        message = messageService.findOne(message.getId());

        Assert.assertEquals(Boolean.TRUE, message.getReplied());

    }


    @Test
    public void testFindAncestorsAndDescendants1() {
        Message m1 = new Message();
        m1.setSenderId(senderId);
        m1.setReceiverId(receiverId);
        m1.setTitle("ded");
        MessageContent content1 = new MessageContent();
        content1.setContent("abcde");
        m1.setContent(content1);
        messageApi.send(m1);

        Message m2 = new Message();
        m2.setSenderId(senderId);
        m2.setReceiverId(receiverId);
        m2.setTitle("ded");
        MessageContent content2 = new MessageContent();
        content2.setContent("abcde");
        m2.setContent(content2);
        m2.setParentId(m1.getId());
        m2.setParentIds(m1.makeSelfAsParentIds());
        messageApi.send(m2);

        Message m3 = new Message();
        m3.setSenderId(senderId);
        m3.setReceiverId(receiverId);
        m3.setTitle("ded");
        MessageContent content3 = new MessageContent();
        content3.setContent("abcde");
        m3.setContent(content3);
        m3.setParentId(m2.getId());
        m3.setParentIds(m2.makeSelfAsParentIds());
        messageApi.send(m3);

        List<Message> messages = messageApi.findAncestorsAndDescendants(m2);

        Assert.assertTrue(messages.contains(m1));
        Assert.assertTrue(messages.contains(m3));
        Assert.assertFalse(messages.contains(m2));

    }


    @Test
    public void testFindAncestorsAndDescendants2() {
        Message m1 = new Message();
        m1.setSenderId(senderId);
        m1.setReceiverId(receiverId);
        m1.setTitle("ded");
        MessageContent content1 = new MessageContent();
        content1.setContent("abcde");
        m1.setContent(content1);
        messageApi.send(m1);

        Message m2 = new Message();
        m2.setSenderId(senderId);
        m2.setReceiverId(receiverId);
        m2.setTitle("ded");
        MessageContent content2 = new MessageContent();
        content2.setContent("abcde");
        m2.setContent(content2);
        m2.setParentId(m1.getId());
        m2.setParentIds(m1.makeSelfAsParentIds());
        messageApi.send(m2);

        Message m3 = new Message();
        m3.setSenderId(senderId);
        m3.setReceiverId(receiverId);
        m3.setTitle("ded");
        MessageContent content3 = new MessageContent();
        content3.setContent("abcde");
        m3.setContent(content3);
        m3.setParentId(m2.getId());
        m3.setParentIds(m2.makeSelfAsParentIds());
        messageApi.send(m3);

        List<Message> messages = messageApi.findAncestorsAndDescendants(m1);

        Assert.assertTrue(messages.contains(m2));
        Assert.assertTrue(messages.contains(m3));
        Assert.assertFalse(messages.contains(m1));

    }


    @Test
    public void testFindAncestorsAndDescendants3() {
        Message m1 = new Message();
        m1.setSenderId(senderId);
        m1.setReceiverId(receiverId);
        m1.setTitle("ded");
        MessageContent content1 = new MessageContent();
        content1.setContent("abcde");
        m1.setContent(content1);
        messageApi.send(m1);

        Message m2 = new Message();
        m2.setSenderId(senderId);
        m2.setReceiverId(receiverId);
        m2.setTitle("ded");
        MessageContent content2 = new MessageContent();
        content2.setContent("abcde");
        m2.setContent(content2);
        m2.setParentId(m1.getId());
        m2.setParentIds(m1.makeSelfAsParentIds());
        messageApi.send(m2);

        Message m3 = new Message();
        m3.setSenderId(senderId);
        m3.setReceiverId(receiverId);
        m3.setTitle("ded");
        MessageContent content3 = new MessageContent();
        content3.setContent("abcde");
        m3.setContent(content3);
        m3.setParentId(m2.getId());
        m3.setParentIds(m2.makeSelfAsParentIds());
        messageApi.send(m3);

        List<Message> messages = messageApi.findAncestorsAndDescendants(m3);

        Assert.assertTrue(messages.contains(m1));
        Assert.assertTrue(messages.contains(m2));
        Assert.assertFalse(messages.contains(m3));

    }


}
TOP

Related Classes of com.sishuok.es.personal.message.service.MessageApiIT

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.