diff --git a/src/Reveal.Sdk.Dom.Tests/Visualizations/Extensions/IAxisExtensionsFixture.cs b/src/Reveal.Sdk.Dom.Tests/Visualizations/Extensions/IAxisExtensionsFixture.cs new file mode 100644 index 00000000..435811f0 --- /dev/null +++ b/src/Reveal.Sdk.Dom.Tests/Visualizations/Extensions/IAxisExtensionsFixture.cs @@ -0,0 +1,155 @@ +using Reveal.Sdk.Dom.Visualizations; +using System.Collections.Generic; +using System.Linq; +using Xunit; + +namespace Reveal.Sdk.Dom.Tests.Visualizations.Extensions +{ + public class IAxisExtensionsFixture + { + [Fact] + public void SetXAxis_UpdateXAxis_WithFieldName() + { + // Arrange + var visualization = new MockIAxis(); + var fieldName = "TestFieldName"; + var expectedXAxes = new List() { new MeasureColumn() { DataField = new NumberDataField(fieldName) } }; + + // Act + visualization.SetXAxis(fieldName); + + // Assert + Assert.Equivalent(expectedXAxes, visualization.XAxes); + } + + [Fact] + public void SetXAxis_UpdateXAxis_WithNumberDataField() + { + // Arrange + var visualization = new MockIAxis(); + var fieldName = "TestFieldName"; + var field = new NumberDataField(fieldName); + var expectedXAxes = new List() { new MeasureColumn() { DataField = field } }; + + // Act + visualization.SetXAxis(field); + + // Assert + Assert.Equivalent(expectedXAxes, visualization.XAxes); + } + + [Fact] + public void SetXAxes_UpdateXAxis_WithListFieldNames() + { + // Arrange + var visualization = new MockIAxis(); + var fieldNames = new List() + { + "FirstFieldName", + "SecondFieldName" + }; + var expectedXAxes = fieldNames.Select(fieldName => new MeasureColumn() { DataField = new NumberDataField(fieldName) }); + + // Act + visualization.SetXAxes(fieldNames.ToArray()); + + // Assert + Assert.Equivalent(expectedXAxes, visualization.XAxes); + } + + [Fact] + public void SetXAxes_UpdateXAxis_WithListNumberDataFields() + { + // Arrange + var visualization = new MockIAxis(); + var fields = new List() + { + new NumberDataField("FirstFieldName"), + new NumberDataField("SecondFieldName") + }; + var expectedXAxes = fields.Select(x => new MeasureColumn() { DataField = x }); + + // Act + visualization.SetXAxes(fields.ToArray()); + + // Assert + Assert.Equivalent(expectedXAxes, visualization.XAxes); + } + + [Fact] + public void SetYAxis_UpdateYAxis_WithFieldName() + { + // Arrange + var visualization = new MockIAxis(); + var fieldName = "TestFieldName"; + var expectedYAxes = new List() { new MeasureColumn() { DataField = new NumberDataField(fieldName) } }; + + // Act + visualization.SetYAxis(fieldName); + + // Assert + Assert.Equivalent(expectedYAxes, visualization.YAxes); + } + + [Fact] + public void SetYAxis_UpdateYAxis_WithNumberDataField() + { + // Arrange + var visualization = new MockIAxis(); + var fieldName = "TestFieldName"; + var field = new NumberDataField(fieldName); + var expectedYAxes = new List() { new MeasureColumn() { DataField = field } }; + + // Act + visualization.SetYAxis(field); + + // Assert + Assert.Equivalent(expectedYAxes, visualization.YAxes); + } + + [Fact] + public void SetYAxes_UpdateYAxis_WithListFieldNames() + { + // Arrange + var visualization = new MockIAxis(); + var fieldNames = new List() + { + "FirstFieldName", + "SecondFieldName" + }; + var expectedYAxes = fieldNames.Select(fieldName => new MeasureColumn() { DataField = new NumberDataField(fieldName) }); + + // Act + visualization.SetYAxes(fieldNames.ToArray()); + + // Assert + Assert.Equivalent(expectedYAxes, visualization.YAxes); + } + + [Fact] + public void SetYAxes_UpdateYAxis_WithListNumberDataFields() + { + // Arrange + var visualization = new MockIAxis(); + var fields = new List() + { + new NumberDataField("FirstFieldName"), + new NumberDataField("SecondFieldName") + }; + var expectedYAxes = fields.Select(x => new MeasureColumn() { DataField = x }); + + // Act + visualization.SetYAxes(fields.ToArray()); + + // Assert + Assert.Equivalent(expectedYAxes, visualization.YAxes); + } + + private class MockIAxis : IAxis + { + public List XAxes { get; } = new List() { new MeasureColumn() { DataField = new NumberDataField("InitialX") } }; + + public List YAxes { get; } = new List() { new MeasureColumn() { DataField = new NumberDataField("InitialY") } }; + } + } +} diff --git a/src/Reveal.Sdk.Dom.Tests/Visualizations/Extensions/ICategoriesExtensionsFixture.cs b/src/Reveal.Sdk.Dom.Tests/Visualizations/Extensions/ICategoriesExtensionsFixture.cs new file mode 100644 index 00000000..d359f57c --- /dev/null +++ b/src/Reveal.Sdk.Dom.Tests/Visualizations/Extensions/ICategoriesExtensionsFixture.cs @@ -0,0 +1,99 @@ +using Moq; +using Reveal.Sdk.Dom.Visualizations; +using System.Collections.Generic; +using System.Linq; +using Xunit; + +namespace Reveal.Sdk.Dom.Tests.Visualizations.Extensions +{ + public class ICategoriesExtensionsFixture + { + [Fact] + public void SetCategory_UpdateCategories_WithFieldName() + { + // Arrange + var visualization = new MockICategories(); + var fieldName = "TestField"; + var expectedCategories = new List { + new DimensionColumn() + { + DataField = new TextDataField(fieldName), + } + }; + + // Act + visualization.SetCategory(fieldName); + + // Assert + Assert.Equivalent(expectedCategories, visualization.Categories); + } + + [Fact] + public void SetCategory_UpdateCategories_WithDimensionDataField() + { + // Arrange + var visualization = new MockICategories(); + var fieldName = "TestField"; + var mockDimensionDataField = new Mock(fieldName); + var field = mockDimensionDataField.Object; + var expectedCategories = new List { + new DimensionColumn() + { + DataField = field, + } + }; + + // Act + visualization.SetCategory(field); + + // Assert + Assert.Equivalent(expectedCategories, visualization.Categories); + } + + [Fact] + public void SetCategories_UpdateCategories_WithListFieldNames() + { + // Arrange + var visualization = new MockICategories(); + var fieldNames = new List { "FirstFieldName", "SecondFieldName" }; + var expectedCategories = fieldNames.Select(x => new DimensionColumn { DataField = new TextDataField(x) }); + + // Act + visualization.SetCategories(fieldNames.ToArray()); + + // Assert + Assert.Equivalent(expectedCategories, visualization.Categories); + } + + [Fact] + public void SetCategories_UpdateCategories_WithListDimensionDataFields() + { + // Arrange + var visualization = new MockICategories(); + + var fields = new List(); + var expectedCategories = new List(); + + var mockDimensionDataField1 = new Mock("FirstFieldName"); + var f1 = mockDimensionDataField1.Object; + fields.Add(f1); + expectedCategories.Add(new DimensionColumn() { DataField = f1 }); + + var mockDimensionDataField2 = new Mock("SecondFieldName"); + var f2 = mockDimensionDataField2.Object; + fields.Add(f2); + expectedCategories.Add(new DimensionColumn() { DataField = f2 }); + + // Act + visualization.SetCategories(fields.ToArray()); + + // Assert + Assert.Equivalent(expectedCategories, visualization.Categories); + } + + private class MockICategories : ICategories + { + public List Categories { get; } = new List(); + } + } +} diff --git a/src/Reveal.Sdk.Dom.Tests/Visualizations/Extensions/ICategoryExtensionsFixture.cs b/src/Reveal.Sdk.Dom.Tests/Visualizations/Extensions/ICategoryExtensionsFixture.cs new file mode 100644 index 00000000..96f2b9c2 --- /dev/null +++ b/src/Reveal.Sdk.Dom.Tests/Visualizations/Extensions/ICategoryExtensionsFixture.cs @@ -0,0 +1,52 @@ +using Moq; +using Reveal.Sdk.Dom.Visualizations; +using Xunit; + +namespace Reveal.Sdk.Dom.Tests.Visualizations.Extensions +{ + public class ICategoryExtensionsFixture + { + [Fact] + public void SetCategory_UpdateCategory_WithFieldName() + { + // Arrange + var visualization = new MockICategory(); + var fieldName = "TestField"; + var expectedCategory = new DimensionColumn() + { + DataField = new TextDataField(fieldName) + }; + + // Act + visualization.SetCategory(fieldName); + + // Assert + Assert.Equivalent(expectedCategory, visualization.Category); + } + + [Fact] + public void SetCategory_UpdateCategory_WithDimensionDataField() + { + // Arrange + var visualization = new MockICategory(); + var fieldName = "TestField"; + var mockDimensionDataField = new Mock(fieldName); + var field = mockDimensionDataField.Object; + var expectedCategory = new DimensionColumn() + { + DataField = field + }; + + // Act + visualization.SetCategory(field); + + // Assert + Assert.Equivalent(expectedCategory, visualization.Category); + } + + private class MockICategory : ICategory + { + public DimensionColumn Category { get; set; } + } + } +} diff --git a/src/Reveal.Sdk.Dom.Tests/Visualizations/Extensions/IColumnsExtensionsFixture.cs b/src/Reveal.Sdk.Dom.Tests/Visualizations/Extensions/IColumnsExtensionsFixture.cs new file mode 100644 index 00000000..8aa1f908 --- /dev/null +++ b/src/Reveal.Sdk.Dom.Tests/Visualizations/Extensions/IColumnsExtensionsFixture.cs @@ -0,0 +1,101 @@ +using Moq; +using Reveal.Sdk.Dom.Visualizations; +using System.Collections.Generic; +using System.Linq; +using Xunit; + +namespace Reveal.Sdk.Dom.Tests.Visualizations.Extensions +{ + public class IColumnsExtensionsFixture + { + [Fact] + public void SetColumn_UpdateColumn_WithFieldName() + { + // Arrange + var visualization = new MockIColumns(); + var fieldName = "TestField"; + var expectedColumns = new List + { + new DimensionColumn() + { + DataField = new TextDataField(fieldName), + } + }; + + // Act + visualization.SetColumn(fieldName); + + // Assert + Assert.Equivalent(expectedColumns, visualization.Columns); + } + + [Fact] + public void SetColumn_UpdateColumn_WithDimensionDataField() + { + // Arrange + var visualization = new MockIColumns(); + + var mockDimensionDataField = new Mock("TestField"); + var field = mockDimensionDataField.Object; + var expectedColumns = new List + { + new DimensionColumn() + { + DataField = field + } + }; + + // Act + visualization.SetColumn(field); + + // Assert + Assert.Equivalent(expectedColumns, visualization.Columns); + } + + [Fact] + public void SetColumns_UpdateColumns_WithListFieldNames() + { + // Arrange + var visualization = new MockIColumns(); + var fieldNames = new List() { "FirstFieldName", "SecondFieldName" }; + var expectedColumns = fieldNames.Select(x => new DimensionColumn() { DataField = new TextDataField(x) }); + + // Act + visualization.SetColumns(fieldNames.ToArray()); + + // Assert + Assert.Equivalent(expectedColumns, visualization.Columns); + } + + [Fact] + public void SetColumns_UpdateColumns_WithListDimensionDataFields() + { + // Arrange + var visualization = new MockIColumns(); + + var fields = new List(); + var expectedColumns = new List(); + + var mockDimensionDataField1 = new Mock("FirstField"); + var field1 = mockDimensionDataField1.Object; + fields.Add(field1); + expectedColumns.Add(new DimensionColumn() { DataField = field1 }); + + var mockDimensionDataField2 = new Mock("SecondField"); + var field2 = mockDimensionDataField2.Object; + fields.Add(field2); + expectedColumns.Add(new DimensionColumn() { DataField = field2 }); + + // Act + visualization.SetColumns(fields.ToArray()); + + // Assert + Assert.Equivalent(expectedColumns, visualization.Columns); + } + + private class MockIColumns : IColumns + { + public List Columns { get; } = new List(); + } + } +} diff --git a/src/Reveal.Sdk.Dom.Tests/Visualizations/Extensions/IDataDefinitionExtensionsFixture.cs b/src/Reveal.Sdk.Dom.Tests/Visualizations/Extensions/IDataDefinitionExtensionsFixture.cs new file mode 100644 index 00000000..eb5a1f82 --- /dev/null +++ b/src/Reveal.Sdk.Dom.Tests/Visualizations/Extensions/IDataDefinitionExtensionsFixture.cs @@ -0,0 +1,64 @@ +using Reveal.Sdk.Dom.Visualizations; +using Xunit; + +namespace Reveal.Sdk.Dom.Tests.Visualizations.Extensions +{ + public class IDataDefinitionExtensionsFixture + { + [Fact] + public void AsTabular_ReturnTabularDataDefinition_InputIsTabularDataDefinitionType() + { + // Arrange + var tabular = new TabularDataDefinition(); + var dataDefinition = (IDataDefinition)tabular; + + // Act + var actualDataDefinition = dataDefinition.AsTabular(); + + // Assert + Assert.Equal(tabular, actualDataDefinition); + } + + [Fact] + public void AsTabular_ReturnNull_InputIsNotTabularDataDefinitionType() + { + // Arrange + var tabular = new XmlaDataDefinition(); + var dataDefinition = (IDataDefinition)tabular; + + // Act + var actualDataDefinition = dataDefinition.AsTabular(); + + // Assert + Assert.Null(actualDataDefinition); + } + + [Fact] + public void AsXmla_ReturnXmlaDataDefinition_InputIsXmlaDataDefinitionType() + { + // Arrange + var xmlaDataDefinition = new XmlaDataDefinition(); + var dataDefinition = (IDataDefinition)xmlaDataDefinition; + + // Act + var actualDataDefinition = dataDefinition.AsXmla(); + + // Assert + Assert.Equal(xmlaDataDefinition, actualDataDefinition); + } + + [Fact] + public void AsXmla_ReturnNull_InputIsNotXmlaDataDefinitionType() + { + // Arrange + var tabular = new TabularDataDefinition(); + var dataDefinition = (IDataDefinition)tabular; + + // Act + var actualDataDefinition = dataDefinition.AsXmla(); + + // Assert + Assert.Null(actualDataDefinition); + } + } +} diff --git a/src/Reveal.Sdk.Dom.Tests/Visualizations/Extensions/IDateExtensionsFixture.cs b/src/Reveal.Sdk.Dom.Tests/Visualizations/Extensions/IDateExtensionsFixture.cs new file mode 100644 index 00000000..792dd4ed --- /dev/null +++ b/src/Reveal.Sdk.Dom.Tests/Visualizations/Extensions/IDateExtensionsFixture.cs @@ -0,0 +1,49 @@ +using Reveal.Sdk.Dom.Visualizations; +using Xunit; + +namespace Reveal.Sdk.Dom.Tests.Visualizations.Extensions +{ + public class IDateExtensionsFixture + { + [Fact] + public void SetDate_UpdateFieldDate_WithFieldName() + { + // Arrange + var visualization = new MockIDateVisualization() + { + Date = new DimensionColumn() { DataField = new DateDataField("InitialField") } + }; + var fieldName = "TestField"; + var expectedDateFieldValue = new DimensionColumn { DataField = new DateDataField(fieldName) }; + + // Act + visualization.SetDate(fieldName); + + // Assert + Assert.Equivalent(expectedDateFieldValue, visualization.Date); + } + + [Fact] + public void SetDate_UpdateFieldDate_WithDateDataField() + { + // Arrange + var visualization = new MockIDateVisualization() + { + Date = new DimensionColumn() { DataField = new DateDataField("InitialField") } + }; + var field = new DateDataField("TestField"); + var expectedDateFieldValue = new DimensionColumn { DataField = field }; + + // Act + visualization.SetDate(field); + + // Assert + Assert.Equivalent(expectedDateFieldValue, visualization.Date); + } + + private class MockIDateVisualization : IDate + { + public DimensionColumn Date { get; set; } + } + } +} diff --git a/src/Reveal.Sdk.Dom.Tests/Visualizations/Extensions/ILabelExtensionsFixture.cs b/src/Reveal.Sdk.Dom.Tests/Visualizations/Extensions/ILabelExtensionsFixture.cs new file mode 100644 index 00000000..a9634e16 --- /dev/null +++ b/src/Reveal.Sdk.Dom.Tests/Visualizations/Extensions/ILabelExtensionsFixture.cs @@ -0,0 +1,57 @@ +using Moq; +using Reveal.Sdk.Dom.Visualizations; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Xunit; + +namespace Reveal.Sdk.Dom.Tests.Visualizations.Extensions +{ + public class ILabelExtensionsFixture + { + [Fact] + public void SetLabel_UpdateLabel_WithFieldName() { + // Arrange + var visualization = new MockILabelVisualization(); + + var fieldName = "TestField"; + var expectedLabels = new DimensionColumn() + { + DataField = new TextDataField(fieldName) + }; + + // Act + visualization.SetLabel(fieldName); + + // Assert + Assert.Equivalent(expectedLabels, visualization.Label); + } + + [Fact] + public void SetLabel_UpdateLabel_WithDimensionDataField() + { + // Arrange + var visualization = new MockILabelVisualization(); + + var mockDimensionDataField = new Mock("TestDataField"); + var field = mockDimensionDataField.Object; + var expectedLabels = new DimensionColumn() + { + DataField = field + }; + + // Act + visualization.SetLabel(field); + + // Assert + Assert.Equivalent(expectedLabels, visualization.Label); + } + + private class MockILabelVisualization : ILabel + { + public DimensionColumn Label { get; set; } + } + } +}