Skip to content

Commit

Permalink
Add missing export field
Browse files Browse the repository at this point in the history
  • Loading branch information
sei-bstein committed Jan 16, 2025
1 parent dee881d commit 3ab0967
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
using System.ComponentModel.DataAnnotations.Schema;
using System.Reflection;
using Gameboard.Api.Data;
using Gameboard.Api.Features.Games;
using Swashbuckle.AspNetCore.SwaggerGen;

namespace Gameboard.Api.Tests.Unit;

public class GameImportExportModelsMappingTests
{
[Fact]
public void GameImportExportExternalHosts_ExportsProperties()
{
var allowSkipProperties = new string[] { "HostApiKey", "UsedByGames" };
var properties = typeof(GameImportExportExternalHost).GetProperties(BindingFlags.Public | BindingFlags.Instance);
var propertyNames = properties.Select(p => p.Name).ToArray();
var gameProperties = typeof(ExternalGameHost)
.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly)
.Where(p => !p.HasAttribute<NotMappedAttribute>());

gameProperties.Where
(
p => !propertyNames.Contains(p.Name) && !allowSkipProperties.Contains(p.Name)
)
.ToArray()
.Length.ShouldBe(0);
}

[Fact]
public void GameImportExportExternalHosts_AttributeStrategy_ExportsProperties()
{
var properties = typeof(GameImportExportExternalHost).GetProperties(BindingFlags.Public | BindingFlags.Instance);
var propertyNames = properties.Select(p => p.Name).ToArray();
var gameProperties = typeof(ExternalGameHost)
.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly)
.Where(p => !p.HasAttribute<NotMappedAttribute>())
.Where(p => !p.HasAttribute<DontExportAttribute>());

gameProperties.Where(p => !propertyNames.Contains(p.Name))
.ToArray()
.Length.ShouldBe(0);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ public sealed class GameImportExportGame
public required DateTimeOffset? GameStart { get; set; }
public required DateTimeOffset? GameEnd { get; set; }
public required string GameMarkdown { get; set; }
public required string RegistrationConstraint { get; set; }
public required string RegistrationMarkdown { get; set; }
public required DateTimeOffset? RegistrationOpen { get; set; }
public required DateTimeOffset? RegistrationClose { get; set; }
Expand Down Expand Up @@ -129,3 +130,6 @@ public sealed class ExportPackageNotFound : GameboardException
{
public ExportPackageNotFound(string exportBatchId) : base($"Export package {exportBatchId} doesn't exist.") { }
}

[AttributeUsage(AttributeTargets.Property)]
public sealed class DontExportAttribute : Attribute { }
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,7 @@ public async Task<GameImportExportBatch> ExportPackage(string[] gameIds, bool in
PlayerMode = game.PlayerMode,
RegistrationClose = game.RegistrationClose,
RegistrationOpen = game.RegistrationOpen,
RegistrationConstraint = game.RegistrationConstraint,
RegistrationMarkdown = game.RegistrationMarkdown,
RegistrationType = game.RegistrationType,
RequireSynchronizedStart = game.RequireSynchronizedStart,
Expand Down

0 comments on commit 3ab0967

Please sign in to comment.