package com.spotify.heroic.analytics.bigtable;
import com.google.api.client.util.Charsets;
import com.google.protobuf.ByteString;
import com.spotify.heroic.common.Series;
import eu.toolchain.async.Transform;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import java.time.LocalDate;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.doReturn;
@RunWith(MockitoJUnitRunner.class)
public class SeriesKeyFilterEncodingTest {
private final SeriesKeyEncoding foo = new SeriesKeyEncoding("foo");
@Mock
Transform<Series, String> toString;
@Mock
Transform<String, Series> fromString;
@Mock
Series series;
final LocalDate date = LocalDate.parse("2016-01-31");
@Test
public void testKeyEncoding() throws Exception {
doReturn("series").when(toString).transform(series);
final ByteString bytes =
foo.encode(new SeriesKeyEncoding.SeriesKey(date, series), toString);
assertEquals(ByteString.copyFrom("foo/2016-01-31/series", Charsets.UTF_8), bytes);
doReturn(series).when(fromString).transform("series");
final SeriesKeyEncoding.SeriesKey k = foo.decode(bytes, fromString);
assertEquals(date, k.getDate());
assertEquals(series, k.getSeries());
assertEquals(ByteString.copyFrom("foo/2016-02-01", Charsets.UTF_8),
foo.rangeKey(date.plusDays(1)));
}
}