Skip to content

Commit 50b7016

Browse files
committed
Another attempt
1 parent ddf5857 commit 50b7016

3 files changed

Lines changed: 7 additions & 7 deletions

File tree

Refresh.Database/GameDatabaseContext.Levels.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,12 @@ public GameLevel AddLevel(ISerializedPublishLevel createInfo, TokenGame game, Ga
5252
EnforceMinMaxPlayers = createInfo.EnforceMinMaxPlayers,
5353
SameScreenGame = createInfo.SameScreenGame,
5454
BackgroundGuid = createInfo.BackgroundGuid,
55-
Publisher = publisher,
55+
PublisherUserId = publisher.UserId,
5656
GameVersion = game,
5757
PublishDate = timestamp,
5858
UpdateDate = timestamp,
5959
};
6060

61-
// This prevents EF from trying to INSERT both the user and their stats in unit tests,
62-
// just because of us setting the level.Publisher reference, and throwing a duplicate key exception that way.
63-
this.Entry(level.Publisher).State = EntityState.Unchanged;
64-
6561
this.ApplyLevelMetadataFromAttributes(level);
6662
this.GameLevels.Add(level);
6763

@@ -78,6 +74,8 @@ public GameLevel AddLevel(ISerializedPublishLevel createInfo, TokenGame game, Ga
7874
publisher.Statistics!.LevelCount++;
7975
});
8076

77+
level.Publisher = publisher;
78+
this.Entry(level.Publisher).State = EntityState.Unchanged;
8179
return level;
8280
}
8381

RefreshTests.GameServer/TestContext.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
using Refresh.Database.Models.Playlists;
1818
using Refresh.Interfaces.APIv3.Endpoints.DataTypes.Request;
1919
using Refresh.Database.Models.Photos;
20+
using Microsoft.EntityFrameworkCore;
2021

2122
namespace RefreshTests.GameServer;
2223

@@ -111,6 +112,7 @@ public GameUser CreateUser(string? username = null, GameUserRole role = GameUser
111112
GameUser user = this.Database.CreateUser(username, $"{username}@{username}.local");
112113
if (role != GameUserRole.User) this.Database.SetUserRole(user, role);
113114
if (verifyEmail) this.Database.VerifyUserEmail(user);
115+
this.Database.Entry(user).State = EntityState.Unchanged;
114116

115117
return user;
116118
}

RefreshTests.GameServer/Tests/Workers/JobStateTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,11 +111,11 @@ public void ReExecutesMigrationJobAfterRollbackAndReupdate()
111111
GameLevel? firstLevelMigrated = context.Database.GetLevelById(firstLevel.LevelId);
112112
Assert.That(firstLevelMigrated, Is.Not.Null);
113113
Assert.That(firstLevelMigrated!.Title, Does.EndWith(" test"));
114-
context.Database.Refresh();
115114

116115
// We can ignore the fact that this level's title won't end on " test", since when we add a real migration job for a certain entity,
117116
// we also adjust that entity's creation/update methods in order to apply whatever change we want to new entities aswell.
118117
// We don't do it here, and it doesn't matter in this test.
118+
context.Database.Refresh();
119119
GameLevel secondLevel = context.CreateLevel(user);
120120
// Should skip job because it's still "complete", so the new level won't be migrated.
121121
manager.RunWorkCycle();
@@ -134,8 +134,8 @@ public void ReExecutesMigrationJobAfterRollbackAndReupdate()
134134

135135
// Simulate a roll-back, meaning the job wouldn't be in the WorkerManager anymore, so no migrations will happen, and the job state would be
136136
// auto-removed by WorkerManager.Start() in real cases.
137-
manager = new(Logger, dataStore, context.DatabaseProvider);
138137
context.Database.Refresh();
138+
manager = new(Logger, dataStore, context.DatabaseProvider);
139139
GameLevel thirdLevel = context.CreateLevel(user);
140140

141141
manager.RemoveUnusedJobStates();

0 commit comments

Comments
 (0)