package io.delphiplatform.api.v3.bigtable.processing;

import com.google.common.collect.Lists;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.openapitools.jackson.nullable.JsonNullable;

import io.delphiplatform.api.v3.model.Gender;
import io.delphiplatform.api.v3.model.StreamModel;

class StreamsMergingServiceTest {

    private StreamsMergingService mergingService = new StreamsMergingService();

    @Test
    void mergeGender_mergeSeveralWithUndefined() {
        JsonNullable<Gender> genderJsonNullable = mergingService.mergeGender(Lists.newArrayList(
            new StreamModel().genders(new Gender().female(100L)),
            new StreamModel().genders(new Gender().female(10L)),
            new StreamModel().genders(new Gender().female(1L)),
            new StreamModel()
        ));

        Assertions.assertEquals(111L, genderJsonNullable.get().getFemale());
    }

    @Test
    void mergeGender_zeroIsConvertedToNull() {
        JsonNullable<Gender> genderJsonNullable = mergingService.mergeGender(Lists.newArrayList(
            new StreamModel().genders(new Gender().female(0L)),
            new StreamModel().genders(new Gender().female(0L)),
            new StreamModel().genders(new Gender().female(null)),
            new StreamModel()
        ));

        Assertions.assertNull(genderJsonNullable.get().getFemale());
    }

}