Skip to content

Commit

Permalink
Merge pull request cake-contrib#42 from cake-contrib/feature/cake-con…
Browse files Browse the repository at this point in the history
…tribgh-41

(cake-contribGH-41) Add options for DxDataGrid template
  • Loading branch information
pascalberger authored Jul 1, 2018
2 parents 9cf6650 + f20c0d7 commit 126fb1a
Show file tree
Hide file tree
Showing 19 changed files with 988 additions and 53 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,9 @@
<Reference Include="Cake.Testing, Version=0.28.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Cake.Testing.0.28.0\lib\net46\Cake.Testing.dll</HintPath>
</Reference>
<Reference Include="HtmlAgilityPack, Version=1.8.4.0, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a, processorArchitecture=MSIL">
<HintPath>..\packages\HtmlAgilityPack.1.8.4\lib\Net45\HtmlAgilityPack.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
Expand Down Expand Up @@ -80,11 +83,16 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="ColumnSortOrderExtensionsTests.cs" />
<Compile Include="DevExtremeThemeExtensionsTests.cs" />
<Compile Include="GenericIssueReportFixture.cs" />
<Compile Include="GenericIssueReportFormatSettingsExtensionsTests.cs" />
<Compile Include="GenericIssueReportFormatSettingsTests.cs" />
<Compile Include="HtmlDxDataGridTemplateTests.cs" />
<Compile Include="GenericIssueReportGeneratorTests.cs" />
<Compile Include="GenericIssueReportTemplateExtensionsTests.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ViewBagHelperTests.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Cake.Issues.Reporting.Generic\Cake.Issues.Reporting.Generic.csproj">
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
namespace Cake.Issues.Reporting.Generic.Tests
{
using Shouldly;
using Xunit;

public sealed class ColumnSortOrderExtensionsTests
{
public sealed class TheToShortStringMethod
{
[Theory]
[InlineData(ColumnSortOrder.Ascending)]
[InlineData(ColumnSortOrder.Descending)]
public void Should_Return_Identifier(ColumnSortOrder sortOrder)
{
// Given

// When
var result = sortOrder.ToShortString();

// Then
result.ShouldNotBeNullOrWhiteSpace();
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
namespace Cake.Issues.Reporting.Generic.Tests
{
using Shouldly;
using Xunit;

public sealed class DevExtremeThemeExtensionsTests
{
public sealed class TheGetCssFileNameMethod
{
[Theory]
[InlineData(DevExtremeTheme.Light)]
[InlineData(DevExtremeTheme.Dark)]
[InlineData(DevExtremeTheme.Contrast)]
[InlineData(DevExtremeTheme.Carmine)]
[InlineData(DevExtremeTheme.DarkMoon)]
[InlineData(DevExtremeTheme.SoftBlue)]
[InlineData(DevExtremeTheme.DarkViolet)]
[InlineData(DevExtremeTheme.GreenMist)]
[InlineData(DevExtremeTheme.LightCompact)]
[InlineData(DevExtremeTheme.DarkCompact)]
[InlineData(DevExtremeTheme.ContrastCompact)]
[InlineData(DevExtremeTheme.MaterialBlueLight)]
[InlineData(DevExtremeTheme.MaterialLimeLight)]
[InlineData(DevExtremeTheme.MaterialOrangeLight)]
[InlineData(DevExtremeTheme.MaterialPurpleLight)]
[InlineData(DevExtremeTheme.MaterialTealLight)]
public void Should_Return_FileName(DevExtremeTheme theme)
{
// Given

// When
var result = theme.GetCssFileName();

// Then
result.ShouldNotBeNullOrWhiteSpace();
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
namespace Cake.Issues.Reporting.Generic.Tests
{
using Cake.Issues.Testing;
using Shouldly;
using Xunit;

public sealed class GenericIssueReportFormatSettingsExtensionsTests
{
public sealed class TheWithOptionWithStringKeyMethod
{
[Fact]
public void Should_Throw_If_Settings_Are_Null()
{
// Given
GenericIssueReportFormatSettings settings = null;

// When
var result = Record.Exception(() =>
settings.WithOption("Foo", "Bar"));

// Then
result.IsArgumentNullException("settings");
}

[Fact]
public void Should_Add_Option()
{
// Given
var key = "Foo";
var value = "Bar";
var settings = GenericIssueReportFormatSettings.FromContent("Foo");

// When
var result = settings.WithOption(key, value);

// Then
result.Options.Count.ShouldBe(1);
result.Options.ShouldContainKeyAndValue(key, value);
}
}

public sealed class TheWithOptionWithEnumgKeyMethod
{
[Fact]
public void Should_Throw_If_Settings_Are_Null()
{
// Given
GenericIssueReportFormatSettings settings = null;

// When
var result = Record.Exception(() =>
settings.WithOption(HtmlDxDataGridOption.Theme, "Bar"));

// Then
result.IsArgumentNullException("settings");
}

[Fact]
public void Should_Add_Option()
{
// Given
var key = HtmlDxDataGridOption.Title;
var value = "Bar";
var settings = GenericIssueReportFormatSettings.FromContent("Foo");

// When
var result = settings.WithOption(key, value);

// Then
result.Options.Count.ShouldBe(1);
result.Options.ShouldContainKeyAndValue(key.ToString(), value);
}
}
}
}
131 changes: 131 additions & 0 deletions src/Cake.Issues.Reporting.Generic.Tests/HtmlDxDataGridTemplateTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
namespace Cake.Issues.Reporting.Generic.Tests
{
using System.Collections.Generic;
using System.Linq;
using HtmlAgilityPack;
using Shouldly;
using Xunit;

public sealed class HtmlDxDataGridTemplateTests
{
public sealed class TheTitleOption
{
[Fact]
public void Should_Set_Title()
{
// Given
var title = "Foo";
var fixture = new GenericIssueReportFixture(GenericIssueReportTemplate.HtmlDxDataGrid);
fixture.GenericIssueReportFormatSettings
.WithOption(HtmlDxDataGridOption.Title, title);

// When
var result = fixture.CreateReport(new List<IIssue>());

// Then
var doc = new HtmlDocument();
doc.LoadHtml(result);
var titleElements = doc.DocumentNode.Descendants("title");
titleElements.ShouldHaveSingleItem();
titleElements.Single().InnerText.ShouldBe(title);
}

[Fact]
public void Should_Set_Heading()
{
// Given
var title = "Foo";
var fixture = new GenericIssueReportFixture(GenericIssueReportTemplate.HtmlDxDataGrid);
fixture.GenericIssueReportFormatSettings
.WithOption(HtmlDxDataGridOption.Title, title);

// When
var result = fixture.CreateReport(new List<IIssue>());

// Then
var doc = new HtmlDocument();
doc.LoadHtml(result);
var headingElements = doc.DocumentNode.Descendants("h1");
headingElements.ShouldHaveSingleItem();
headingElements.Single().InnerText.ShouldBe(title);
}
}

public sealed class TheThemeOption
{
[Theory]
[InlineData(DevExtremeTheme.Light)]
[InlineData(DevExtremeTheme.Dark)]
[InlineData(DevExtremeTheme.Contrast)]
[InlineData(DevExtremeTheme.Carmine)]
[InlineData(DevExtremeTheme.DarkMoon)]
[InlineData(DevExtremeTheme.SoftBlue)]
[InlineData(DevExtremeTheme.DarkViolet)]
[InlineData(DevExtremeTheme.GreenMist)]
[InlineData(DevExtremeTheme.LightCompact)]
[InlineData(DevExtremeTheme.DarkCompact)]
[InlineData(DevExtremeTheme.ContrastCompact)]
[InlineData(DevExtremeTheme.MaterialBlueLight)]
[InlineData(DevExtremeTheme.MaterialLimeLight)]
[InlineData(DevExtremeTheme.MaterialOrangeLight)]
[InlineData(DevExtremeTheme.MaterialPurpleLight)]
[InlineData(DevExtremeTheme.MaterialTealLight)]
public void Should_Set_Theme(DevExtremeTheme theme)
{
// Given
var fixture = new GenericIssueReportFixture(GenericIssueReportTemplate.HtmlDxDataGrid);
fixture.GenericIssueReportFormatSettings
.WithOption(HtmlDxDataGridOption.Theme, theme);

// When
var result = fixture.CreateReport(new List<IIssue>());

// Then
var doc = new HtmlDocument();
doc.LoadHtml(result);
var stylesheetElements = doc.DocumentNode.SelectNodes("//link[@rel='stylesheet']");
stylesheetElements.Count().ShouldBe(2);
stylesheetElements.ShouldContain(x => x.Attributes["href"].Value.EndsWith(DevExtremeThemeExtensions.GetCssFileName(theme)));
}
}

public sealed class TheShowHeaderOption
{
[Fact]
public void Should_Show_Header_If_True()
{
// Given
var fixture = new GenericIssueReportFixture(GenericIssueReportTemplate.HtmlDxDataGrid);
fixture.GenericIssueReportFormatSettings
.WithOption(HtmlDxDataGridOption.ShowHeader, true);

// When
var result = fixture.CreateReport(new List<IIssue>());

// Then
var doc = new HtmlDocument();
doc.LoadHtml(result);
var headingElements = doc.DocumentNode.Descendants("h1");
headingElements.ShouldHaveSingleItem();
}

[Fact]
public void Should_Not_Show_Header_If_False()
{
// Given
var fixture = new GenericIssueReportFixture(GenericIssueReportTemplate.HtmlDxDataGrid);
fixture.GenericIssueReportFormatSettings
.WithOption(HtmlDxDataGridOption.ShowHeader, false);

// When
var result = fixture.CreateReport(new List<IIssue>());

// Then
var doc = new HtmlDocument();
doc.LoadHtml(result);
var headingElements = doc.DocumentNode.Descendants("h1");
headingElements.ShouldBeEmpty();
}
}
}
}
39 changes: 39 additions & 0 deletions src/Cake.Issues.Reporting.Generic.Tests/ViewBagHelperTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
namespace Cake.Issues.Reporting.Generic.Tests
{
using Shouldly;
using Xunit;

public sealed class ViewBagHelperTests
{
public sealed class TheValueOrDefaultMethod
{
[Fact]
public void Should_Return_Value_If_Not_Null()
{
// Given
var value = "foo";
var defaultValue = "bar";

// When
var result = ViewBagHelper.ValueOrDefault(value, defaultValue);

// Then
result.ShouldBe(value);
}

[Fact]
public void Should_Return_Default_If_Value_Is_Null()
{
// Given
string value = null;
var defaultValue = "bar";

// When
var result = ViewBagHelper.ValueOrDefault(value, defaultValue);

// Then
result.ShouldBe(defaultValue);
}
}
}
}
1 change: 1 addition & 0 deletions src/Cake.Issues.Reporting.Generic.Tests/packages.config
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
<package id="Cake.Issues.Reporting" version="0.3.0" targetFramework="net461" />
<package id="Cake.Issues.Testing" version="0.3.0" targetFramework="net461" />
<package id="Cake.Testing" version="0.28.0" targetFramework="net461" />
<package id="HtmlAgilityPack" version="1.8.4" targetFramework="net461" />
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net461" />
<package id="Shouldly" version="3.0.0" targetFramework="net46" />
<package id="StyleCop.Analyzers" version="1.0.2" targetFramework="net46" developmentDependency="true" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,11 +70,18 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="ColumnSortOrder.cs" />
<Compile Include="ColumnSortOrderExtensions.cs" />
<Compile Include="DevExtremeTheme.cs" />
<Compile Include="DevExtremeThemeExtensions.cs" />
<Compile Include="HtmlDxDataGridOption.cs" />
<Compile Include="GenericIssueReportFormatAliases.cs" />
<Compile Include="GenericIssueReportFormatSettingsExtensions.cs" />
<Compile Include="GenericIssueReportGenerator.cs" />
<Compile Include="GenericIssueReportFormatSettings.cs" />
<Compile Include="IIssueExtension.cs" />
<Compile Include="ReportColumn.cs" />
<Compile Include="ViewBagHelper.cs" />
<Compile Include="RazorEngineReferenceResolver.cs" />
<Compile Include="GenericIssueReportTemplate.cs" />
<Compile Include="GenericIssueReportTemplateExtensions.cs" />
Expand Down
18 changes: 18 additions & 0 deletions src/Cake.Issues.Reporting.Generic/ColumnSortOrder.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
namespace Cake.Issues.Reporting.Generic
{
/// <summary>
/// Possible sort orders for columns.
/// </summary>
public enum ColumnSortOrder
{
/// <summary>
/// Ascending sorting.
/// </summary>
Ascending,

/// <summary>
/// Descending sorting.
/// </summary>
Descending
}
}
Loading

0 comments on commit 126fb1a

Please sign in to comment.