package de.thpeetz.kontor.media.services;

import de.thpeetz.kontor.media.TestConstants;
import de.thpeetz.kontor.media.data.MediaArticle;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

import static org.junit.jupiter.api.Assertions.*;

@Slf4j
@SpringBootTest
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
class MediaArticleServiceTest {

    @Autowired
    MediaArticleService mediaArticleService;

    @Test
    @Order(1)
    void findAllMediaArticles() {
        assertTrue(mediaArticleService.findAllMediaArticles(null).isEmpty());
    }

    @Test
    @Order(2)
    void saveMediaArticle() {
        int mediaArticleCount = mediaArticleService.findAllMediaArticles(null).size();
        MediaArticle mediaArticle = new MediaArticle();
        mediaArticle.setUrl(TestConstants.URL);
        mediaArticleService.saveMediaArticle(mediaArticle);
        assertEquals(++mediaArticleCount, mediaArticleService.findAllMediaArticles(null).size());
    }

    @Test
    @Order(3)
    void deleteMediaArticle() {
        int mediaArticleCount = mediaArticleService.findAllMediaArticles(null).size();
        List<MediaArticle> mediaArticleList = mediaArticleService.findAllMediaArticles(TestConstants.URL);
        assertEquals(1, mediaArticleService.findAllMediaArticles(null).size());
        mediaArticleService.deleteMediaArticle(mediaArticleList.get(0));
        assertEquals(--mediaArticleCount, mediaArticleService.findAllMediaArticles(null).size());
    }
}
