/*
* Copyright 2017 Hewlett Packard Enterprise Development Company, L.P.
* Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License.
*/
package com.hp.autonomy.frontend.find.idol.dashboards.widgets;
import com.hp.autonomy.frontend.find.core.savedsearches.SavedSearchType;
import com.hp.autonomy.frontend.find.idol.dashboards.widgets.datasources.SavedSearch;
import com.hp.autonomy.frontend.find.idol.dashboards.widgets.datasources.SavedSearchConfig;
import org.apache.commons.io.IOUtils;
import org.springframework.boot.test.json.JsonContent;
import org.springframework.boot.test.json.ObjectContent;
import java.io.IOException;
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.MatcherAssert.assertThat;
public class SunburstWidgetTest extends ComplexWidgetTest<SunburstWidget, SunburstWidgetSettings> {
@Override
protected Class<SunburstWidget> getType() {
return SunburstWidget.class;
}
@Override
protected SunburstWidget constructComponent() {
return SunburstWidget.builder()
.name("Test Widget")
.type("SunburstWidget")
.x(1)
.y(1)
.width(1)
.height(1)
.datasource(SavedSearch.builder()
.source("SavedSearch")
.config(SavedSearchConfig.builder()
.id(123L)
.type(SavedSearchType.QUERY)
.build())
.build())
.widgetSettings(SunburstWidgetSettings.builder()
.firstField(tagNameFactory.buildTagName("CONTENT_TYPE"))
.maxLegendEntries(5)
.build())
.build();
}
@Override
protected String sampleJson() throws IOException {
return IOUtils.toString(
getClass().getResourceAsStream("/com/hp/autonomy/frontend/find/idol/dashboards/widgets/sunburstWidget.json")
);
}
@Override
protected void validateJson(final JsonContent<SunburstWidget> jsonContent) {
jsonContent.assertThat()
.hasJsonPathStringValue("$.name", "Test Widget")
.hasJsonPathStringValue("$.type", "SunburstWidget")
.hasJsonPathNumberValue("$.x", 1)
.hasJsonPathNumberValue("$.y", 1)
.hasJsonPathNumberValue("$.width", 1)
.hasJsonPathNumberValue("$.height", 1)
.hasJsonPathNumberValue("$.datasource.config.id", 123)
.hasJsonPathStringValue("$.datasource.config.type", "QUERY")
.hasJsonPathStringValue("$.widgetSettings.firstField", "CONTENT_TYPE")
.hasJsonPathNumberValue("$.widgetSettings.maxLegendEntries", 5);
}
@Override
protected void validateParsedComponent(final ObjectContent<SunburstWidget> objectContent) {
objectContent.assertThat().isEqualTo(
SunburstWidget.builder()
.name("Sunburst Widget")
.type("SunburstWidget")
.x(0)
.y(4)
.width(5)
.height(2)
.datasource(SavedSearch.builder()
.source("SavedSearch")
.config(SavedSearchConfig.builder()
.id(769L)
.type(SavedSearchType.QUERY)
.build())
.build())
.widgetSettings(SunburstWidgetSettings.builder()
.firstField(tagNameFactory.buildTagName("CONTENT-TYPE"))
.secondField(tagNameFactory.buildTagName("AUTHOR"))
.maxLegendEntries(7)
.widgetSetting("testing", "testing")
.build())
.build()
);
}
@Override
protected void validateMergedComponent(final ObjectContent<SunburstWidget> objectContent) {
objectContent.assertThat().isEqualTo(
SunburstWidget.builder()
.name("Test Widget")
.type("SunburstWidget")
.x(1)
.y(1)
.width(1)
.height(1)
.datasource(SavedSearch.builder()
.source("SavedSearch")
.config(SavedSearchConfig.builder()
.id(123L)
.type(SavedSearchType.QUERY)
.build())
.build())
.widgetSettings(SunburstWidgetSettings.builder()
.firstField(tagNameFactory.buildTagName("CONTENT_TYPE"))
.secondField(tagNameFactory.buildTagName("AUTHOR"))
.maxLegendEntries(5)
.widgetSetting("testing", "testing")
.build())
.build()
);
}
@Override
protected void validateString(final String s) {
assertThat(s, containsString("name"));
}
@Override
SunburstWidget constructComponentWithoutDatasource() {
return SunburstWidget.builder()
.name("Test Widget")
.type("SunburstWidget")
.x(1)
.y(1)
.width(1)
.height(1)
.widgetSettings(SunburstWidgetSettings.builder()
.firstField(tagNameFactory.buildTagName("CONTENT_TYPE"))
.maxLegendEntries(5)
.build())
.build();
}
}