Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -348,3 +348,7 @@ MigrationBackup/

# Ionide (cross platform F# VS Code tools) working folder
.ionide/

## Test Coverage Reports (generated artifacts)
**/TestResults/
**/CoverageReport/
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,8 @@
</None>
</ItemGroup>

<ItemGroup>
<Compile Remove="skyapi-headless-data-sync.Tests/**" />
</ItemGroup>

</Project>
File renamed without changes.
136 changes: 136 additions & 0 deletions tests/Models/AppSettingsTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
using Blackbaud.HeadlessDataSync.Services;
using Xunit;

namespace Blackbaud.HeadlessDataSync.Tests.Models
{
public class AppSettingsTests
{
[Fact]
public void Properties_CanBeSetAndRetrieved()
{
var authBaseUri = "https://oauth2.sky.blackbaud.com/";
var authClientId = "test-client-id";
var authClientSecret = "test-client-secret";
var skyApiSubscriptionKey = "test-subscription-key";
var skyApiBaseUri = "https://api.sky.blackbaud.com/";

var appSettings = new AppSettings
{
AuthBaseUri = authBaseUri,
AuthClientId = authClientId,
AuthClientSecret = authClientSecret,
SkyApiSubscriptionKey = skyApiSubscriptionKey,
SkyApiBaseUri = skyApiBaseUri
};

Assert.Equal(authBaseUri, appSettings.AuthBaseUri);
Assert.Equal(authClientId, appSettings.AuthClientId);
Assert.Equal(authClientSecret, appSettings.AuthClientSecret);
Assert.Equal(skyApiSubscriptionKey, appSettings.SkyApiSubscriptionKey);
Assert.Equal(skyApiBaseUri, appSettings.SkyApiBaseUri);
}

[Fact]
public void DefaultConstructor_InitializesWithNullValues()
{
var appSettings = new AppSettings();

Assert.Null(appSettings.AuthBaseUri);
Assert.Null(appSettings.AuthClientId);
Assert.Null(appSettings.AuthClientSecret);
Assert.Null(appSettings.SkyApiSubscriptionKey);
Assert.Null(appSettings.SkyApiBaseUri);
}

[Theory]
[InlineData("")]
[InlineData(null)]
[InlineData("https://oauth2.sky.blackbaud.com/")]
public void AuthBaseUri_CanBeSetToVariousValues(string value)
{
var appSettings = new AppSettings
{
AuthBaseUri = value
};

Assert.Equal(value, appSettings.AuthBaseUri);
}

[Theory]
[InlineData("")]
[InlineData(null)]
[InlineData("client-id-123")]
public void AuthClientId_CanBeSetToVariousValues(string value)
{
var appSettings = new AppSettings
{
AuthClientId = value
};

Assert.Equal(value, appSettings.AuthClientId);
}

[Theory]
[InlineData("")]
[InlineData(null)]
[InlineData("client-secret-456")]
public void AuthClientSecret_CanBeSetToVariousValues(string value)
{
var appSettings = new AppSettings
{
AuthClientSecret = value
};

Assert.Equal(value, appSettings.AuthClientSecret);
}

[Theory]
[InlineData("")]
[InlineData(null)]
[InlineData("subscription-key-789")]
public void SkyApiSubscriptionKey_CanBeSetToVariousValues(string value)
{
var appSettings = new AppSettings
{
SkyApiSubscriptionKey = value
};

Assert.Equal(value, appSettings.SkyApiSubscriptionKey);
}

[Theory]
[InlineData("")]
[InlineData(null)]
[InlineData("https://api.sky.blackbaud.com/")]
public void SkyApiBaseUri_CanBeSetToVariousValues(string value)
{
var appSettings = new AppSettings
{
SkyApiBaseUri = value
};

Assert.Equal(value, appSettings.SkyApiBaseUri);
}

[Fact]
public void AllProperties_CanBeSetIndependently()
{
var appSettings = new AppSettings();

appSettings.AuthBaseUri = "auth-base";
Assert.Equal("auth-base", appSettings.AuthBaseUri);

appSettings.AuthClientId = "client-id";
Assert.Equal("client-id", appSettings.AuthClientId);

appSettings.AuthClientSecret = "client-secret";
Assert.Equal("client-secret", appSettings.AuthClientSecret);

appSettings.SkyApiSubscriptionKey = "subscription-key";
Assert.Equal("subscription-key", appSettings.SkyApiSubscriptionKey);

appSettings.SkyApiBaseUri = "api-base";
Assert.Equal("api-base", appSettings.SkyApiBaseUri);
}
}
}
141 changes: 141 additions & 0 deletions tests/Models/ListQueryParamsTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
using Blackbaud.HeadlessDataSync.Models;
using Xunit;

namespace Blackbaud.HeadlessDataSync.Tests.Models
{
public class ListQueryParamsTests
{
[Fact]
public void IsEmpty_WithBothPropertiesNull_ReturnsTrue()
{
var queryParams = new ListQueryParams
{
LastModified = null,
SortToken = null
};

var result = queryParams.IsEmpty();

Assert.True(result);
}

[Fact]
public void IsEmpty_WithBothPropertiesEmpty_ReturnsTrue()
{
var queryParams = new ListQueryParams
{
LastModified = string.Empty,
SortToken = string.Empty
};

var result = queryParams.IsEmpty();

Assert.True(result);
}

[Fact]
public void IsEmpty_WithLastModifiedOnly_ReturnsFalse()
{
var queryParams = new ListQueryParams
{
LastModified = "2023-01-01T00:00:00Z",
SortToken = null
};

var result = queryParams.IsEmpty();

Assert.False(result);
}

[Fact]
public void IsEmpty_WithSortTokenOnly_ReturnsFalse()
{
var queryParams = new ListQueryParams
{
LastModified = null,
SortToken = "test-sort-token"
};

var result = queryParams.IsEmpty();

Assert.False(result);
}

[Fact]
public void IsEmpty_WithBothPropertiesSet_ReturnsFalse()
{
var queryParams = new ListQueryParams
{
LastModified = "2023-01-01T00:00:00Z",
SortToken = "test-sort-token"
};

var result = queryParams.IsEmpty();

Assert.False(result);
}

[Theory]
[InlineData("", "")]
[InlineData(null, null)]
[InlineData("", null)]
[InlineData(null, "")]
public void IsEmpty_WithVariousEmptyValues_ReturnsTrue(string lastModified, string sortToken)
{
var queryParams = new ListQueryParams
{
LastModified = lastModified,
SortToken = sortToken
};

var result = queryParams.IsEmpty();

Assert.True(result);
}

[Theory]
[InlineData("2023-01-01T00:00:00Z", "")]
[InlineData("2023-01-01T00:00:00Z", null)]
[InlineData("", "token123")]
[InlineData(null, "token123")]
[InlineData("2023-01-01T00:00:00Z", "token123")]
public void IsEmpty_WithAtLeastOneNonEmptyValue_ReturnsFalse(string lastModified, string sortToken)
{
var queryParams = new ListQueryParams
{
LastModified = lastModified,
SortToken = sortToken
};

var result = queryParams.IsEmpty();

Assert.False(result);
}

[Fact]
public void Properties_CanBeSetAndRetrieved()
{
var lastModified = "2023-01-01T00:00:00Z";
var sortToken = "test-sort-token";

var queryParams = new ListQueryParams
{
LastModified = lastModified,
SortToken = sortToken
};

Assert.Equal(lastModified, queryParams.LastModified);
Assert.Equal(sortToken, queryParams.SortToken);
}

[Fact]
public void DefaultConstructor_InitializesWithNullValues()
{
var queryParams = new ListQueryParams();

Assert.Null(queryParams.LastModified);
Assert.Null(queryParams.SortToken);
Assert.True(queryParams.IsEmpty());
}
}
}
Loading