Skip to content

Commit

Permalink
Updated tests so that if user secrets isn't set they won't run.
Browse files Browse the repository at this point in the history
  • Loading branch information
khanjal committed Dec 20, 2024
1 parent 36796f8 commit 7e5770c
Show file tree
Hide file tree
Showing 25 changed files with 296 additions and 26 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ var data = await googleSheetManager.GetSheets();
You can retrieve specific sheets and information by calling ````GetSheets()```` and passing in the sheet enums you want.

```csharp
var sheets = [SheetEnum.Trips, SheetEnum.Shifts]
var sheets = [SheetEnum.Sheet1, SheetEnum.Sheet2]
var data = await googleSheetManager.GetSheets(sheets);
```

Expand Down
20 changes: 20 additions & 0 deletions RaptorSheets.Core/Helpers/GoogleCredentialHelpers.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
namespace RaptorSheets.Core.Helpers;

public static class GoogleCredentialHelpers
{
public static bool IsCredentialFilled(Dictionary<string, string> credentials)
{
if (credentials["type"] != string.Empty && credentials["privateKeyId"] != string.Empty && credentials["privateKey"] != string.Empty && credentials["clientEmail"] != string.Empty && credentials["clientId"] != string.Empty)
return true;

return false;
}

public static bool IsCredentialAndSpreadsheetId(Dictionary<string, string> credentials, string spreadsheetId)
{
if (IsCredentialFilled(credentials) && !string.IsNullOrEmpty(spreadsheetId))
return true;

return false;
}
}
4 changes: 4 additions & 0 deletions RaptorSheets.Gig.Tests/Data/GoogleDataFixture.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using Google.Apis.Sheets.v4.Data;
using RaptorSheets.Core.Extensions;
using RaptorSheets.Core.Helpers;
using RaptorSheets.Core.Services;
using RaptorSheets.Gig.Enums;
using RaptorSheets.Test.Helpers;
Expand All @@ -13,6 +14,9 @@ public async Task InitializeAsync()
var spreadsheetId = TestConfigurationHelpers.GetGigSpreadsheet();
var credential = TestConfigurationHelpers.GetJsonCredential();

if (!GoogleCredentialHelpers.IsCredentialFilled(credential))
return;

var googleSheetService = new GoogleSheetService(credential, spreadsheetId);
var sheets = Enum.GetValues(typeof(SheetEnum)).Cast<SheetEnum>().ToList();
var result = await googleSheetService.GetBatchData(sheets.Select(x => x.GetDescription()).ToList());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ public class CheckSheetHeaderTests

readonly GoogleDataFixture fixture;
private static IList<MatchedValueRange>? _matchedValueRanges;
private readonly bool _runTest = GoogleCredentialHelpers.IsCredentialAndSpreadsheetId(TestConfigurationHelpers.GetJsonCredential(), TestConfigurationHelpers.GetGigSpreadsheet());

public CheckSheetHeaderTests(GoogleDataFixture fixture)
{
Expand All @@ -44,6 +45,9 @@ public CheckSheetHeaderTests(GoogleDataFixture fixture)
[MemberData(nameof(Sheets))]
public void GivenFullHeaders_ThenReturnNoMessages(SheetModel sheet, SheetEnum sheetEnum)
{
if (!_runTest)
return;

var values = _matchedValueRanges?.Where(x => x.DataFilters[0].A1Range == sheetEnum.GetDescription()).First().ValueRange.Values.ToList();
var messages = HeaderHelpers.CheckSheetHeaders(values!, sheet);

Expand All @@ -54,6 +58,9 @@ public void GivenFullHeaders_ThenReturnNoMessages(SheetModel sheet, SheetEnum sh
[MemberData(nameof(Sheets))]
public void GivenMissingHeaders_ThenReturnErrorMessages(SheetModel sheet, SheetEnum sheetEnum)
{
if (!_runTest)
return;

var values = _matchedValueRanges?.Where(x => x.DataFilters[0].A1Range == sheetEnum.GetDescription()).First().ValueRange.Values;

var headerValues = new List<IList<object>>
Expand All @@ -71,6 +78,9 @@ public void GivenMissingHeaders_ThenReturnErrorMessages(SheetModel sheet, SheetE
[MemberData(nameof(Sheets))]
public void GivenMisorderedHeaders_ThenReturnWarningMessages(SheetModel sheet, SheetEnum sheetEnum)
{
if (!_runTest)
return;

var values = _matchedValueRanges?.Where(x => x.DataFilters[0].A1Range == sheetEnum.GetDescription()).First().ValueRange.Values;

var headerValues = new List<IList<object>>
Expand Down
45 changes: 42 additions & 3 deletions RaptorSheets.Gig.Tests/Managers/GoogleSheetManagerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,33 +6,38 @@
using RaptorSheets.Core.Extensions;
using RaptorSheets.Gig.Managers;
using RaptorSheets.Test.Helpers;
using RaptorSheets.Core.Helpers;

namespace RaptorSheets.Gig.Tests.Managers;

public class GoogleSheetManagerTests
{
private readonly string? _spreadsheetId;
private readonly IGoogleSheetManager _googleSheetManager;

private readonly long _currentTime;
private readonly SheetEnum _sheetEnum;
private readonly Dictionary<string, string> _credential;
private readonly bool _runTest = GoogleCredentialHelpers.IsCredentialAndSpreadsheetId(TestConfigurationHelpers.GetJsonCredential(), TestConfigurationHelpers.GetGigSpreadsheet());

public GoogleSheetManagerTests()

Check warning on line 22 in RaptorSheets.Gig.Tests/Managers/GoogleSheetManagerTests.cs

View workflow job for this annotation

GitHub Actions / build

Non-nullable field '_googleSheetManager' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.

Check warning on line 22 in RaptorSheets.Gig.Tests/Managers/GoogleSheetManagerTests.cs

View workflow job for this annotation

GitHub Actions / build

Non-nullable field '_googleSheetManager' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.
{
var random = new Random();
_sheetEnum = random.NextEnum<SheetEnum>();
_currentTime = (long)DateTime.UtcNow.Subtract(DateTime.UnixEpoch).TotalSeconds;

_spreadsheetId = TestConfigurationHelpers.GetGigSpreadsheet();
var spreadsheetId = TestConfigurationHelpers.GetGigSpreadsheet();
_credential = TestConfigurationHelpers.GetJsonCredential();

_googleSheetManager = new GoogleSheetManager(_credential, _spreadsheetId);
if (GoogleCredentialHelpers.IsCredentialFilled(_credential))
_googleSheetManager = new GoogleSheetManager(_credential, spreadsheetId);
}

[Fact]
public async Task GivenGetSheet_ThenReturnSheetEntity()
{
if (!_runTest)
return;

var result = await _googleSheetManager.GetSheet(_sheetEnum.GetDescription());
result.Should().NotBeNull();
result.Messages.Count.Should().Be(1);
Expand All @@ -43,13 +48,23 @@ public async Task GivenGetSheet_ThenReturnSheetEntity()
[Fact]
public async Task GivenGetSheets_ThenReturnSheetEntity()
{
if (!_runTest)
return;

var result = await _googleSheetManager.GetSheets();
result.Should().NotBeNull();
result.Messages.Should().NotBeNull();
var messages = result.Messages.Select(x => x.Level == MessageLevelEnum.ERROR.GetDescription());

messages.Should().NotContain(true);
}

[Fact]
public async Task GivenGetSheetsList_ThenReturnSheetEntity()
{
if (!_runTest)
return;

var result = await _googleSheetManager.GetSheets([_sheetEnum]);
result.Should().NotBeNull();
result!.Messages.Should().HaveCount(1);
Expand All @@ -61,6 +76,9 @@ public async Task GivenGetSheetsList_ThenReturnSheetEntity()
[Fact]
public async Task GivenGetSheet_WithInvalidSpreadsheetId_ReturnErrorMessages()
{
if (!_runTest)
return;

var googleSheetManager = new GoogleSheetManager(_credential, "invalid");
var result = await googleSheetManager.GetSheets();
result.Should().NotBeNull();
Expand All @@ -72,6 +90,9 @@ public async Task GivenGetSheet_WithInvalidSpreadsheetId_ReturnErrorMessages()
[Fact]
public async Task GivenGetSheet_WithInvalidSpreadsheetIdAndSheet_ReturnSheetErrorMessage()
{
if (!_runTest)
return;

var googleSheetManager = new GoogleSheetManager(_credential, "invalid");
var result = await googleSheetManager.GetSheets([_sheetEnum]);
result.Should().NotBeNull();
Expand All @@ -83,13 +104,19 @@ public async Task GivenGetSheet_WithInvalidSpreadsheetIdAndSheet_ReturnSheetErro
[Fact]
public async Task GivenGetSpreadsheetName_WithValidSpreadsheetId_ReturnTitle()
{
if (!_runTest)
return;

var result = await _googleSheetManager.GetSpreadsheetName();
result.Should().NotBeNullOrWhiteSpace();
}

[Fact]
public async Task GivenGetSpreadsheetName_WithInvalidSpreadsheetId_ReturnNull()
{
if (!_runTest)
return;

var googleSheetManager = new GoogleSheetManager(_credential, "invalid");
var result = await googleSheetManager.GetSpreadsheetName();
result.Should().BeNull();
Expand All @@ -107,6 +134,9 @@ public async Task GivenAddSheetData_WithValidSheetId_ThenReturnEmpty()
[Fact]
public async Task GivenAddSheetData_WithData_ThenReturnData()
{
if (!_runTest)
return;

var result = await _googleSheetManager.AddSheetData([SheetEnum.TRIPS, SheetEnum.SHIFTS], GenerateShift());
result.Should().NotBeNull();
result.Messages.Count.Should().Be(4);
Expand All @@ -130,6 +160,9 @@ public async Task GivenCreateSheet_WithValidSheetId_ThenReturnEmpty()
[Fact]
public async Task GivenCreateSheet_WithValidSheetId_ThenReturnData()
{
if (!_runTest)
return;

var result = await _googleSheetManager.CreateSheets([_sheetEnum]);
result.Should().NotBeNull();
result.Messages.Count.Should().Be(1);
Expand All @@ -139,6 +172,9 @@ public async Task GivenCreateSheet_WithValidSheetId_ThenReturnData()
[Fact]
public async Task GivenCheckSheets_WithNoHeaderCheck_ThenReturnData()
{
if (!_runTest)
return;

var result = await _googleSheetManager.CheckSheets();
result.Should().NotBeNull();
result.Count.Should().Be(1);
Expand All @@ -147,6 +183,9 @@ public async Task GivenCheckSheets_WithNoHeaderCheck_ThenReturnData()
[Fact]
public async Task GivenCheckSheets_WithHeaderCheck_ThenReturnData()
{
if (!_runTest)
return;

var result = await _googleSheetManager.CheckSheets(true);
result.Should().NotBeNull();
result.Count.Should().Be(2);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using FluentAssertions;
using RaptorSheets.Core.Extensions;
using RaptorSheets.Core.Helpers;
using RaptorSheets.Gig.Entities;
using RaptorSheets.Gig.Enums;
using RaptorSheets.Gig.Mappers;
Expand All @@ -14,17 +15,21 @@ public class AddressMapFromRangeDataTests
readonly GoogleDataFixture fixture;
private static IList<IList<object>>? _values;
private static List<AddressEntity>? _entities;
private readonly bool _runTest = GoogleCredentialHelpers.IsCredentialAndSpreadsheetId(TestConfigurationHelpers.GetJsonCredential(), TestConfigurationHelpers.GetGigSpreadsheet());

public AddressMapFromRangeDataTests(GoogleDataFixture fixture)
{
this.fixture = fixture;
_values = this.fixture.ValueRanges?.Where(x => x.DataFilters[0].A1Range == SheetEnum.ADDRESSES.GetDescription()).First().ValueRange.Values;
_entities = AddressMapper.MapFromRangeData(_values!);
_entities = _runTest ? AddressMapper.MapFromRangeData(_values!) : null;
}

[Fact]
public void GivenAddressSheetData_ThenReturnRangeData()
{
if (!_runTest)
return;

var nonEmptyValues = _values!.Where(x => !string.IsNullOrEmpty(x[0].ToString())).ToList();
_entities.Should().HaveCount(nonEmptyValues.Count - 1);

Expand All @@ -45,6 +50,9 @@ public void GivenAddressSheetData_ThenReturnRangeData()
[Fact]
public void GivenAddressSheetDataColumnOrderRandomized_ThenReturnSameRangeData()
{
if (!_runTest)
return;

var sheetOrder = new int[] { 0 }.Concat([.. RandomHelpers.GetRandomOrder(1, _values![0].Count - 1)]).ToArray();
var randomValues = RandomHelpers.RandomizeValues(_values, sheetOrder);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using FluentAssertions;
using RaptorSheets.Core.Extensions;
using RaptorSheets.Core.Helpers;
using RaptorSheets.Gig.Entities;
using RaptorSheets.Gig.Enums;
using RaptorSheets.Gig.Mappers;
Expand All @@ -14,17 +15,21 @@ public class DailyMapFromRangeDataTests
readonly GoogleDataFixture fixture;
private static IList<IList<object>>? _values;
private static List<DailyEntity>? _entities;
private readonly bool _runTest = GoogleCredentialHelpers.IsCredentialAndSpreadsheetId(TestConfigurationHelpers.GetJsonCredential(), TestConfigurationHelpers.GetGigSpreadsheet());

public DailyMapFromRangeDataTests(GoogleDataFixture fixture)
{
this.fixture = fixture;
_values = this.fixture.ValueRanges?.Where(x => x.DataFilters[0].A1Range == SheetEnum.DAILY.GetDescription()).First().ValueRange.Values;
_entities = DailyMapper.MapFromRangeData(_values!);
_entities = _runTest ? DailyMapper.MapFromRangeData(_values!) : null;
}

[Fact]
public void GivenWeekdaySheetData_ThenReturnRangeData()
{
if (!_runTest)
return;

var nonEmptyValues = _values!.Where(x => !string.IsNullOrEmpty(x[0].ToString())).ToList();
_entities.Should().HaveCount(nonEmptyValues.Count - 1);

Expand Down Expand Up @@ -52,6 +57,9 @@ public void GivenWeekdaySheetData_ThenReturnRangeData()
[Fact]
public void GivenWeekdaySheetDataColumnOrderRandomized_ThenReturnSameRangeData()
{
if (!_runTest)
return;

var sheetOrder = new int[] { 0 }.Concat([.. RandomHelpers.GetRandomOrder(1, _values![0].Count - 1)]).ToArray();
var randomValues = RandomHelpers.RandomizeValues(_values, sheetOrder);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using FluentAssertions;
using RaptorSheets.Core.Extensions;
using RaptorSheets.Core.Helpers;
using RaptorSheets.Gig.Entities;
using RaptorSheets.Gig.Enums;
using RaptorSheets.Gig.Mappers;
Expand All @@ -14,17 +15,21 @@ public class MonthlyMapFromRangeDataTests
readonly GoogleDataFixture fixture;
private static IList<IList<object>>? _values;
private static List<MonthlyEntity>? _entities;
private readonly bool _runTest = GoogleCredentialHelpers.IsCredentialAndSpreadsheetId(TestConfigurationHelpers.GetJsonCredential(), TestConfigurationHelpers.GetGigSpreadsheet());

public MonthlyMapFromRangeDataTests(GoogleDataFixture fixture)
{
this.fixture = fixture;
_values = this.fixture.ValueRanges?.Where(x => x.DataFilters[0].A1Range == SheetEnum.MONTHLY.GetDescription()).First().ValueRange.Values;
_entities = MonthlyMapper.MapFromRangeData(_values!);
_entities = _runTest ? MonthlyMapper.MapFromRangeData(_values!) : null;
}

[Fact]
public void GivenWeekdaySheetData_ThenReturnRangeData()
{
if (!_runTest)
return;

var nonEmptyValues = _values!.Where(x => !string.IsNullOrEmpty(x[0].ToString())).ToList();
_entities.Should().HaveCount(nonEmptyValues.Count - 1);

Expand Down Expand Up @@ -54,6 +59,9 @@ public void GivenWeekdaySheetData_ThenReturnRangeData()
[Fact]
public void GivenWeekdaySheetDataColumnOrderRandomized_ThenReturnSameRangeData()
{
if (!_runTest)
return;

var sheetOrder = new int[] { 0 }.Concat([.. RandomHelpers.GetRandomOrder(1, _values![0].Count - 1)]).ToArray();
var randomValues = RandomHelpers.RandomizeValues(_values, sheetOrder);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using FluentAssertions;
using RaptorSheets.Core.Extensions;
using RaptorSheets.Core.Helpers;
using RaptorSheets.Gig.Entities;
using RaptorSheets.Gig.Enums;
using RaptorSheets.Gig.Mappers;
Expand All @@ -14,17 +15,21 @@ public class NameMapFromRangeDataTests
readonly GoogleDataFixture fixture;
private static IList<IList<object>>? _values;
private static List<NameEntity>? _entities;
private readonly bool _runTest = GoogleCredentialHelpers.IsCredentialAndSpreadsheetId(TestConfigurationHelpers.GetJsonCredential(), TestConfigurationHelpers.GetGigSpreadsheet());

public NameMapFromRangeDataTests(GoogleDataFixture fixture)
{
this.fixture = fixture;
_values = this.fixture.ValueRanges?.Where(x => x.DataFilters[0].A1Range == SheetEnum.NAMES.GetDescription()).First().ValueRange.Values;
_entities = NameMapper.MapFromRangeData(_values!);
_entities = _runTest ? NameMapper.MapFromRangeData(_values!) : null;
}

[Fact]
public void GivenNameSheetData_ThenReturnRangeData()
{
if (!_runTest)
return;

var nonEmptyValues = _values!.Where(x => !string.IsNullOrEmpty(x[0].ToString())).ToList();
_entities.Should().HaveCount(nonEmptyValues.Count - 1);

Expand All @@ -45,6 +50,9 @@ public void GivenNameSheetData_ThenReturnRangeData()
[Fact]
public void GivenNameSheetData_WithColumnOrderRandomized_ThenReturnSameRangeData()
{
if (!_runTest)
return;

var sheetOrder = new int[] { 0 }.Concat([.. RandomHelpers.GetRandomOrder(1, _values![0].Count - 1)]).ToArray();
var randomValues = RandomHelpers.RandomizeValues(_values, sheetOrder);

Expand Down
Loading

0 comments on commit 7e5770c

Please sign in to comment.