package com.emonster.taroaichat.domain;

import static com.emonster.taroaichat.domain.ChatMessageTestSamples.*;
import static com.emonster.taroaichat.domain.TarotSessionTestSamples.*;
import static com.emonster.taroaichat.domain.UserProfileTestSamples.*;
import static org.assertj.core.api.Assertions.assertThat;

import com.emonster.taroaichat.web.rest.TestUtil;
import java.util.HashSet;
import java.util.Set;
import org.junit.jupiter.api.Test;

class TarotSessionTest {

    @Test
    void equalsVerifier() throws Exception {
        TestUtil.equalsVerifier(TarotSession.class);
        TarotSession tarotSession1 = getTarotSessionSample1();
        TarotSession tarotSession2 = new TarotSession();
        assertThat(tarotSession1).isNotEqualTo(tarotSession2);

        tarotSession2.setId(tarotSession1.getId());
        assertThat(tarotSession1).isEqualTo(tarotSession2);

        tarotSession2 = getTarotSessionSample2();
        assertThat(tarotSession1).isNotEqualTo(tarotSession2);
    }

    @Test
    void chatMessageTest() {
        TarotSession tarotSession = getTarotSessionRandomSampleGenerator();
        ChatMessage chatMessageBack = getChatMessageRandomSampleGenerator();

        tarotSession.addChatMessage(chatMessageBack);
        assertThat(tarotSession.getChatMessages()).containsOnly(chatMessageBack);
        assertThat(chatMessageBack.getSession()).isEqualTo(tarotSession);

        tarotSession.removeChatMessage(chatMessageBack);
        assertThat(tarotSession.getChatMessages()).doesNotContain(chatMessageBack);
        assertThat(chatMessageBack.getSession()).isNull();

        tarotSession.chatMessages(new HashSet<>(Set.of(chatMessageBack)));
        assertThat(tarotSession.getChatMessages()).containsOnly(chatMessageBack);
        assertThat(chatMessageBack.getSession()).isEqualTo(tarotSession);

        tarotSession.setChatMessages(new HashSet<>());
        assertThat(tarotSession.getChatMessages()).doesNotContain(chatMessageBack);
        assertThat(chatMessageBack.getSession()).isNull();
    }

    @Test
    void userProfileTest() {
        TarotSession tarotSession = getTarotSessionRandomSampleGenerator();
        UserProfile userProfileBack = getUserProfileRandomSampleGenerator();

        tarotSession.setUserProfile(userProfileBack);
        assertThat(tarotSession.getUserProfile()).isEqualTo(userProfileBack);

        tarotSession.userProfile(null);
        assertThat(tarotSession.getUserProfile()).isNull();
    }
}
