Skip to content

Commit 9cf6360

Browse files
committed
unit test for TableSchemaBuilder
1 parent 0fe9e47 commit 9cf6360

File tree

10 files changed

+441
-90
lines changed

10 files changed

+441
-90
lines changed

AzureFunctions.Extensions.GoogleBigQuery.ComponentTests/AzureFunctions.Extensions.GoogleBigQuery.ComponentTests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
</ItemGroup>
1414

1515
<ItemGroup>
16+
<ProjectReference Include="..\AzureFunctions.Extensions.GoogleBigQuery.TestsCommon\AzureFunctions.Extensions.GoogleBigQuery.TestsCommon.csproj" />
1617
<ProjectReference Include="..\AzureFunctions.Extensions.GoogleBigQuery\AzureFunctions.Extensions.GoogleBigQuery.csproj" />
1718
</ItemGroup>
1819

AzureFunctions.Extensions.GoogleBigQuery.ComponentTests/BigQueryServiceTests.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using AzureFunctions.Extensions.GoogleBigQuery.TestsCommon;
12
using Microsoft.VisualStudio.TestTools.UnitTesting;
23
using System;
34

@@ -10,11 +11,9 @@ public void InsertRecord_NullablesNulls() {
1011

1112
//Arrange
1213
TestBigQueryRow testBigQueryRow = new TestBigQueryRow(DateTime.UtcNow, "insertId_1") {
13-
IntValue = 1,
14-
IntNullableValue = null
14+
1515
};
16-
17-
16+
1817
//Act
1918

2019
//Assert

AzureFunctions.Extensions.GoogleBigQuery.ComponentTests/TestBigQueryRow.cs

Lines changed: 0 additions & 39 deletions
This file was deleted.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>netstandard2.0</TargetFramework>
5+
</PropertyGroup>
6+
7+
<ItemGroup>
8+
<ProjectReference Include="..\AzureFunctions.Extensions.GoogleBigQuery\AzureFunctions.Extensions.GoogleBigQuery.csproj" />
9+
</ItemGroup>
10+
11+
</Project>
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.ComponentModel;
4+
using System.ComponentModel.DataAnnotations;
5+
using System.ComponentModel.DataAnnotations.Schema;
6+
7+
namespace AzureFunctions.Extensions.GoogleBigQuery.TestsCommon {
8+
public class TestBigQueryRow : GoogleBigQueryRow {
9+
10+
public TestBigQueryRow(DateTime date, string insertId) : base(date, insertId) { }
11+
12+
//bool
13+
[Description("my description for this column")]
14+
[Column, Required]
15+
public bool Bool { get; set; }
16+
[Column] public System.Boolean Boolean { get; set; }
17+
[Column] public bool? BoolNullable { get; set; }
18+
[Column] public System.Boolean? BooleanNullable { get; set; }
19+
[Column] public IEnumerable<bool> BoolEnumerable { get; set; }
20+
[Column] public IEnumerable<System.Boolean> BooleanEnumerable { get; set; }
21+
22+
//byte
23+
[Column] public byte Byte1 { get; set; }
24+
[Column] public System.Byte Byte2 { get; set; }
25+
[Column] public byte? Byte1Nullable { get; set; }
26+
[Column] public System.Byte? Byte2Nullable { get; set; }
27+
[Column] public IEnumerable<byte> Byte1Enumerable { get; set; }
28+
[Column] public IEnumerable<System.Byte> Byte2Enumerable { get; set; }
29+
[Column] public byte[] Byte1Array { get; set; }
30+
31+
//char
32+
[Column] public System.Char Char { get; set; }
33+
[Column] public System.Char? CharNullable { get; set; }
34+
[Column] public IEnumerable<System.Char> CharEnumerable { get; set; }
35+
36+
//decimal
37+
[Column] public System.Decimal Decimal { get; set; }
38+
[Column] public System.Decimal? DecimalNullable { get; set; }
39+
[Column] public IEnumerable<System.Decimal> DecimalEnumerable { get; set; }
40+
41+
//date
42+
[Column] public System.DateTime DateTime { get; set; }
43+
[Column] public System.DateTimeOffset DateTimeOffset { get; set; }
44+
[Column] public System.DateTime? DateTimeNullable { get; set; }
45+
[Column] public System.DateTimeOffset? DateTimeOffsetNullable { get; set; }
46+
[Column] public IEnumerable<System.DateTime> DateTimeEnumerable { get; set; }
47+
[Column] public IEnumerable<System.DateTimeOffset> DateTimeOffsetEnumerable { get; set; }
48+
49+
//double
50+
[Column] public double Double1 { get; set; }
51+
[Column] public System.Double Double2 { get; set; }
52+
[Column] public double? Double1Nullable { get; set; }
53+
[Column] public System.Double? Double2Nullable { get; set; }
54+
[Column] public IEnumerable<double> Double1Enumerable { get; set; }
55+
[Column] public IEnumerable<System.Double> Double2Enumerable { get; set; }
56+
57+
//float
58+
[Column] public float Float { get; set; }
59+
[Column] public System.Single Single { get; set; }
60+
[Column] public float? FloatNullable { get; set; }
61+
[Column] public System.Single? SingleNullable { get; set; }
62+
[Column] public IEnumerable<float> FloatEnumerable { get; set; }
63+
[Column] public IEnumerable<System.Single> SingleEnumerable { get; set; }
64+
65+
//guid
66+
[Column] public System.Guid Guid { get; set; }
67+
[Column] public System.Guid? GuidNullable { get; set; }
68+
[Column] public IEnumerable<System.Guid> GuidEnumerable { get; set; }
69+
70+
//integer
71+
[Column] public int Int { get; set; }
72+
[Column] public System.Int16 Int16 { get; set; }
73+
[Column] public System.Int32 Int32 { get; set; }
74+
[Column] public System.Int64 Int64 { get; set; }
75+
[Column] public System.UInt16 UInt16 { get; set; }
76+
[Column] public System.UInt32 UInt32 { get; set; }
77+
[Column] public System.UInt64 UInt64 { get; set; }
78+
[Column] public int? IntNullable { get; set; }
79+
[Column] public System.Int16? Int16Nullable { get; set; }
80+
[Column] public System.Int32? Int32Nullable { get; set; }
81+
[Column] public System.Int64? Int64Nullable { get; set; }
82+
[Column] public System.UInt16? UInt16Nullable { get; set; }
83+
[Column] public System.UInt32? UInt32Nullable { get; set; }
84+
[Column] public System.UInt64? UInt64Nullable { get; set; }
85+
[Column] public IEnumerable<int> IntEnumerable { get; set; }
86+
[Column] public IEnumerable<System.Int16> Int16Enumerable { get; set; }
87+
[Column] public IEnumerable<System.Int32> Int32Enumerable { get; set; }
88+
[Column] public IEnumerable<System.Int64> Int64Enumerable { get; set; }
89+
[Column] public IEnumerable<System.UInt16> UInt16Enumerable { get; set; }
90+
[Column] public IEnumerable<System.UInt32> UInt32Enumerable { get; set; }
91+
[Column] public IEnumerable<System.UInt64> UInt64Enumerable { get; set; }
92+
93+
//string
94+
[Column] public string String1 { get; set; }
95+
[Column] public String String2 { get; set; }
96+
[Column] public IEnumerable<string> String1Enumerable { get; set; }
97+
[Column] public IEnumerable<String> String2Enumerable { get; set; }
98+
99+
//sub entities
100+
[Column] public SimpleEntity1 Record1 { get; set; }
101+
[Column] public IEnumerable<SimpleEntity1> Record2 { get; set; }
102+
[Column] public SimpleEntity1[] Record3 { get; set; }
103+
104+
//not valid case
105+
[Column, Required]
106+
public int? incongruency { get; set; }
107+
108+
}
109+
110+
public class SimpleEntity1 {
111+
112+
[Column] public int MySubProperty1 { get; set; }
113+
[Column] public string MySubProperty2 { get; set; }
114+
115+
}
116+
117+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>netcoreapp2.0</TargetFramework>
5+
6+
<IsPackable>false</IsPackable>
7+
</PropertyGroup>
8+
9+
<ItemGroup>
10+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
11+
<PackageReference Include="MSTest.TestAdapter" Version="1.2.0" />
12+
<PackageReference Include="MSTest.TestFramework" Version="1.2.0" />
13+
</ItemGroup>
14+
15+
<ItemGroup>
16+
<ProjectReference Include="..\AzureFunctions.Extensions.GoogleBigQuery.TestsCommon\AzureFunctions.Extensions.GoogleBigQuery.TestsCommon.csproj" />
17+
<ProjectReference Include="..\AzureFunctions.Extensions.GoogleBigQuery\AzureFunctions.Extensions.GoogleBigQuery.csproj" />
18+
</ItemGroup>
19+
20+
</Project>
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
using AzureFunctions.Extensions.GoogleBigQuery.TestsCommon;
2+
using Microsoft.VisualStudio.TestTools.UnitTesting;
3+
4+
namespace AzureFunctions.Extensions.GoogleBigQuery.UnitTests {
5+
[TestClass]
6+
public class TableSchemaBuilderServiceTests {
7+
8+
[TestMethod]
9+
public void GetTableSchema_TestBigQueryRow() {
10+
11+
//Act
12+
var (tabelSchema, properties) = TableSchemaBuilderService.GetTableSchema(typeof(TestBigQueryRow));
13+
14+
//Assert
15+
Assert.IsNotNull(tabelSchema);
16+
Assert.AreEqual(69, tabelSchema.Fields.Count);
17+
18+
Assert.AreEqual("my description for this column", tabelSchema.Fields[0].Description);
19+
Assert.AreEqual("Bool", tabelSchema.Fields[0].Name);
20+
Assert.AreEqual("REQUIRED", tabelSchema.Fields[0].Mode);
21+
Assert.AreEqual("BOOLEAN", tabelSchema.Fields[0].Type);
22+
Assert.IsNull(tabelSchema.Fields[0].Fields);
23+
24+
//...
25+
26+
Assert.IsNull(tabelSchema.Fields[65].Description);
27+
Assert.AreEqual("Record1", tabelSchema.Fields[65].Name);
28+
Assert.AreEqual("NULLABLE", tabelSchema.Fields[65].Mode);
29+
Assert.AreEqual("RECORD", tabelSchema.Fields[65].Type);
30+
Assert.IsNotNull(tabelSchema.Fields[65].Fields);
31+
32+
var subFields65 = tabelSchema.Fields[65].Fields;
33+
Assert.AreEqual(2, subFields65.Count);
34+
Assert.IsNull(subFields65[0].Description);
35+
Assert.AreEqual("MySubProperty1", subFields65[0].Name);
36+
Assert.AreEqual("NULLABLE", subFields65[0].Mode);
37+
Assert.AreEqual("INTEGER", subFields65[0].Type);
38+
Assert.IsNull(subFields65[0].Fields);
39+
Assert.AreEqual("MySubProperty2", subFields65[1].Name);
40+
Assert.AreEqual("NULLABLE", subFields65[1].Mode);
41+
Assert.AreEqual("STRING", subFields65[1].Type);
42+
Assert.IsNull(subFields65[1].Fields);
43+
44+
Assert.IsNull(tabelSchema.Fields[66].Description);
45+
Assert.AreEqual("Record2", tabelSchema.Fields[66].Name);
46+
Assert.AreEqual("REPEATED", tabelSchema.Fields[66].Mode);
47+
Assert.AreEqual("RECORD", tabelSchema.Fields[66].Type);
48+
Assert.IsNotNull(tabelSchema.Fields[66].Fields);
49+
50+
var subFields66 = tabelSchema.Fields[66].Fields;
51+
Assert.AreEqual(2, subFields66.Count);
52+
53+
Assert.IsNull(tabelSchema.Fields[67].Description);
54+
Assert.AreEqual("Record3", tabelSchema.Fields[67].Name);
55+
Assert.AreEqual("REPEATED", tabelSchema.Fields[67].Mode);
56+
Assert.AreEqual("RECORD", tabelSchema.Fields[67].Type);
57+
Assert.IsNotNull(tabelSchema.Fields[67].Fields);
58+
59+
var subFields67 = tabelSchema.Fields[67].Fields;
60+
Assert.AreEqual(2, subFields67.Count);
61+
62+
Assert.IsNull(tabelSchema.Fields[68].Description);
63+
Assert.AreEqual("incongruency", tabelSchema.Fields[68].Name);
64+
Assert.AreEqual("NULLABLE", tabelSchema.Fields[68].Mode);
65+
Assert.AreEqual("INTEGER", tabelSchema.Fields[68].Type);
66+
Assert.IsNull(tabelSchema.Fields[68].Fields);
67+
68+
}
69+
70+
}
71+
}

AzureFunctions.Extensions.GoogleBigQuery.sln

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,13 @@ VisualStudioVersion = 15.0.27130.2010
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AzureFunctions.Extensions.GoogleBigQuery", "AzureFunctions.Extensions.GoogleBigQuery\AzureFunctions.Extensions.GoogleBigQuery.csproj", "{B781E2D4-4180-4BFA-96F3-EE4CB7E43E0D}"
77
EndProject
8-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureFunctions.Extensions.GoogleBigQuery.ComponentTests", "AzureFunctions.Extensions.GoogleBigQuery.ComponentTests\AzureFunctions.Extensions.GoogleBigQuery.ComponentTests.csproj", "{06CDE008-8819-4EEB-90C1-BDA83029D09A}"
8+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AzureFunctions.Extensions.GoogleBigQuery.ComponentTests", "AzureFunctions.Extensions.GoogleBigQuery.ComponentTests\AzureFunctions.Extensions.GoogleBigQuery.ComponentTests.csproj", "{06CDE008-8819-4EEB-90C1-BDA83029D09A}"
99
EndProject
10-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureFunctions.Extensions.GoogleBigQuery.DemoProject1", "AzureFunctions.Extensions.GoogleBigQuery.DemoProject1\AzureFunctions.Extensions.GoogleBigQuery.DemoProject1.csproj", "{B117DF3E-C655-420C-B1F1-A30854B76334}"
10+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AzureFunctions.Extensions.GoogleBigQuery.DemoProject1", "AzureFunctions.Extensions.GoogleBigQuery.DemoProject1\AzureFunctions.Extensions.GoogleBigQuery.DemoProject1.csproj", "{B117DF3E-C655-420C-B1F1-A30854B76334}"
11+
EndProject
12+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureFunctions.Extensions.GoogleBigQuery.TestsCommon", "AzureFunctions.Extensions.GoogleBigQuery.TestsCommon\AzureFunctions.Extensions.GoogleBigQuery.TestsCommon.csproj", "{DC9B4723-4D19-4DEE-B0E2-49025FEC252E}"
13+
EndProject
14+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureFunctions.Extensions.GoogleBigQuery.UnitTests", "AzureFunctions.Extensions.GoogleBigQuery.UnitTests\AzureFunctions.Extensions.GoogleBigQuery.UnitTests.csproj", "{452CBDD6-B6DF-4C80-A76E-8501D98456C8}"
1115
EndProject
1216
Global
1317
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -27,6 +31,14 @@ Global
2731
{B117DF3E-C655-420C-B1F1-A30854B76334}.Debug|Any CPU.Build.0 = Debug|Any CPU
2832
{B117DF3E-C655-420C-B1F1-A30854B76334}.Release|Any CPU.ActiveCfg = Release|Any CPU
2933
{B117DF3E-C655-420C-B1F1-A30854B76334}.Release|Any CPU.Build.0 = Release|Any CPU
34+
{DC9B4723-4D19-4DEE-B0E2-49025FEC252E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
35+
{DC9B4723-4D19-4DEE-B0E2-49025FEC252E}.Debug|Any CPU.Build.0 = Debug|Any CPU
36+
{DC9B4723-4D19-4DEE-B0E2-49025FEC252E}.Release|Any CPU.ActiveCfg = Release|Any CPU
37+
{DC9B4723-4D19-4DEE-B0E2-49025FEC252E}.Release|Any CPU.Build.0 = Release|Any CPU
38+
{452CBDD6-B6DF-4C80-A76E-8501D98456C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
39+
{452CBDD6-B6DF-4C80-A76E-8501D98456C8}.Debug|Any CPU.Build.0 = Debug|Any CPU
40+
{452CBDD6-B6DF-4C80-A76E-8501D98456C8}.Release|Any CPU.ActiveCfg = Release|Any CPU
41+
{452CBDD6-B6DF-4C80-A76E-8501D98456C8}.Release|Any CPU.Build.0 = Release|Any CPU
3042
EndGlobalSection
3143
GlobalSection(SolutionProperties) = preSolution
3244
HideSolutionNode = FALSE

0 commit comments

Comments
 (0)