package com.orchard.models;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.kafka.connect.data.Struct;
import org.junit.jupiter.api.Test;

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


public class StreamsStatsTests {
    StreamsStats streamStats = new StreamsStats();
    String streamStatsJson =
      "{\"streams28DaysPrev\":1,\"streams7DaysPrev\":2,\"streams1DayPrev\":3,\"streams1Day\":5,\"streams28Days\":28,\"streams7Days\":7,\"streamsAllTime\":100}";

    public StreamsStatsTests() {
        streamStats.streams1Day = 5;
        streamStats.streams1DayPrev = 3;
        streamStats.streams7Days = 7;
        streamStats.streams7DaysPrev = 2;
        streamStats.streams28Days = 28;
        streamStats.streams28DaysPrev = 1;
        streamStats.streamsAllTime = 100;
    }

    @Test
    public void shouldReturnValidKafkaStruct() throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();
        StreamsStats streamStatsParsed = mapper.readValue(streamStatsJson, StreamsStats.class);
        Struct kafkaStruct = streamStats.ToKafkaStruct();
        assertEquals(streamStatsParsed.streams1Day, kafkaStruct.getInt64("streams1Day"));
        assertEquals(streamStatsParsed.streams1DayPrev, kafkaStruct.getInt64("streams1DayPrev"));
        assertEquals(streamStatsParsed.streams7Days, kafkaStruct.getInt64("streams7Days"));
        assertEquals(streamStatsParsed.streams7DaysPrev, kafkaStruct.getInt64("streams7DaysPrev"));
        assertEquals(streamStatsParsed.streams28Days, kafkaStruct.getInt64("streams28Days"));
        assertEquals(streamStatsParsed.streams28DaysPrev, kafkaStruct.getInt64("streams28DaysPrev"));
        assertEquals(streamStatsParsed.streamsAllTime, kafkaStruct.getInt64("streamsAllTime"));
    }
}
