package io.delphiplatform.api.v3.rdb.service.ads;

import org.junit.jupiter.api.Test;

import java.util.List;

import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;

class AdsMetricEnumTest {

    @Test
    void getForAgeAndGender() {
        List<AdsMetricEnum> forAgeAndGender = AdsMetricEnum.getMetrics(AdsReportType.GENDER);
        assertTrue(forAgeAndGender.contains(AdsMetricEnum.IMPRESSIONS));
        assertFalse(forAgeAndGender.contains(AdsMetricEnum.LF_CLICKS));
        assertFalse(forAgeAndGender.contains(AdsMetricEnum.LF_PLATFORM_TO_LINKFIRE_BOUNCE_RATE));

        forAgeAndGender = AdsMetricEnum.getMetrics(AdsReportType.AGE);
        assertTrue(forAgeAndGender.contains(AdsMetricEnum.IMPRESSIONS));
        assertFalse(forAgeAndGender.contains(AdsMetricEnum.LF_CLICKS));
        assertFalse(forAgeAndGender.contains(AdsMetricEnum.LF_PLATFORM_TO_LINKFIRE_BOUNCE_RATE));
    }

    @Test
    void getForLinkfire() {
        List<AdsMetricEnum> forLinkfire = AdsMetricEnum.getMetrics(AdsReportType.LINKFIRE);
        assertTrue(forLinkfire.contains(AdsMetricEnum.LF_CLICKS));
        assertFalse(forLinkfire.contains(AdsMetricEnum.IMPRESSIONS));
        assertFalse(forLinkfire.contains(AdsMetricEnum.LF_PLATFORM_TO_LINKFIRE_BOUNCE_RATE));
    }

    @Test
    void getForCountryAndPlatform() {
        List<AdsMetricEnum> forCountryAndPlatform = AdsMetricEnum.getMetrics(AdsReportType.COUNTRY);
        assertTrue(forCountryAndPlatform.contains(AdsMetricEnum.LF_CLICKS));
        assertTrue(forCountryAndPlatform.contains(AdsMetricEnum.IMPRESSIONS));
        assertFalse(forCountryAndPlatform.contains(AdsMetricEnum.TT_COMMENTS));

        forCountryAndPlatform = AdsMetricEnum.getMetrics(AdsReportType.PLATFORM);
        assertTrue(forCountryAndPlatform.contains(AdsMetricEnum.LF_CLICKS));
        assertTrue(forCountryAndPlatform.contains(AdsMetricEnum.IMPRESSIONS));
        assertFalse(forCountryAndPlatform.contains(AdsMetricEnum.TT_COMMENTS));
    }

    @Test
    void getForAll() {
        List<AdsMetricEnum> forAll = AdsMetricEnum.getMetrics(AdsReportType.BASE);
        assertTrue(forAll.contains(AdsMetricEnum.LF_CLICKS));
        assertTrue(forAll.contains(AdsMetricEnum.IMPRESSIONS));
        assertTrue(forAll.contains(AdsMetricEnum.LF_PLATFORM_TO_LINKFIRE_BOUNCE_RATE));
    }
}
