Compare commits

..

2 Commits

Author SHA1 Message Date
Noan07 5a825b8de9 bug
continuous-integration/drone/push Build is failing Details
2 years ago
Noan07 46d5239998 🔨 tests database
continuous-integration/drone/push Build is failing Details
2 years ago

@ -31,7 +31,7 @@ steps:
- cd code/server - cd code/server
- dotnet workload restore - dotnet workload restore
- dotnet restore Server.sln - dotnet restore Server.sln
- dotnet sonarscanner begin /k:PongSrv /d:sonar.host.url=$${PLUGIN_SONAR_HOST} /d:sonar.coverageReportPaths="coveragereport/SonarQube.xml" /d:sonar.coverage.exclusions="Tests/**,DataBase/Program.cs,DataBase/Migrations/**,DataBase/DataManager/**,DataBase/Context/PongDbContextWithStub.cs" /d:sonar.login=$${PLUGIN_SONAR_TOKEN} - dotnet sonarscanner begin /k:PongSrv /d:sonar.host.url=$${PLUGIN_SONAR_HOST} /d:sonar.coverageReportPaths="coveragereport/SonarQube.xml" /d:sonar.coverage.exclusions="Tests/**" /d:sonar.login=$${PLUGIN_SONAR_TOKEN}
- dotnet build Server.sln -c Release --no-restore - dotnet build Server.sln -c Release --no-restore
- dotnet test Server.sln --logger trx --no-restore /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura --collect "XPlat Code Coverage" - dotnet test Server.sln --logger trx --no-restore /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura --collect "XPlat Code Coverage"
- reportgenerator -reports:"**/coverage.cobertura.xml" -reporttypes:SonarQube -targetdir:"coveragereport" - reportgenerator -reports:"**/coverage.cobertura.xml" -reporttypes:SonarQube -targetdir:"coveragereport"
@ -57,7 +57,6 @@ steps:
from_secret: SECRET_REGISTRY_USERNAME from_secret: SECRET_REGISTRY_USERNAME
password: password:
from_secret: SECRET_REGISTRY_PASSWORD from_secret: SECRET_REGISTRY_PASSWORD
depends_on: [tests]
# container deployment # container deployment
- name: deploy-server - name: deploy-server

@ -1 +1 @@
# LeapHitServer # LeapHitServer

@ -34,7 +34,7 @@ namespace ApiLeapHit.Controllers
do do
{ {
// Générer un id unique avec des chiffres et des lettres // Générer un id unique avec des chiffres et des lettres
id = Guid.NewGuid().ToString("N").Substring(0, 6); id = Guid.NewGuid().ToString("N");
} }
while (await _dataManager.GetPlayer(id) != null); while (await _dataManager.GetPlayer(id) != null);
player.playerId = id; player.playerId = id;

@ -15,15 +15,7 @@ namespace DataBase.Context
public PongDbContext() { } public PongDbContext() { }
public PongDbContext(DbContextOptions<PongDbContext> options) : base(options) { } public PongDbContext(DbContextOptions<PongDbContext> options) : base(options) { }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Player>().ToTable("Players");
modelBuilder.Entity<Game>().ToTable("Games");
modelBuilder.Entity<Message>().ToTable("Messages");
modelBuilder.Entity<Chat>().ToTable("Chats");
}
protected override async void OnConfiguring(DbContextOptionsBuilder optionsBuilder) protected override async void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{ {
base.OnConfiguring(optionsBuilder); base.OnConfiguring(optionsBuilder);
@ -43,5 +35,13 @@ namespace DataBase.Context
} }
} }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Player>().ToTable("Players");
modelBuilder.Entity<Game>().ToTable("Games");
modelBuilder.Entity<Message>().ToTable("Messages");
modelBuilder.Entity<Chat>().ToTable("Chats");
}
} }
} }

@ -19,7 +19,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ClientConsole", "ClientCons
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Shared", "Shared\Shared.csproj", "{CA1465F2-A006-4AF6-8231-59DB00963BD0}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Shared", "Shared\Shared.csproj", "{CA1465F2-A006-4AF6-8231-59DB00963BD0}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestsDatabase", "TestsDatabase\TestsDatabase.csproj", "{EDAC56C7-0AC9-465A-A361-63347F435327}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestsDataBase", "TestsDataBase\TestsDataBase.csproj", "{BE7D3D6B-1CA1-47F9-93BE-0415708571AA}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -55,17 +55,17 @@ Global
{CA1465F2-A006-4AF6-8231-59DB00963BD0}.Debug|Any CPU.Build.0 = Debug|Any CPU {CA1465F2-A006-4AF6-8231-59DB00963BD0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CA1465F2-A006-4AF6-8231-59DB00963BD0}.Release|Any CPU.ActiveCfg = Release|Any CPU {CA1465F2-A006-4AF6-8231-59DB00963BD0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CA1465F2-A006-4AF6-8231-59DB00963BD0}.Release|Any CPU.Build.0 = Release|Any CPU {CA1465F2-A006-4AF6-8231-59DB00963BD0}.Release|Any CPU.Build.0 = Release|Any CPU
{EDAC56C7-0AC9-465A-A361-63347F435327}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BE7D3D6B-1CA1-47F9-93BE-0415708571AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EDAC56C7-0AC9-465A-A361-63347F435327}.Debug|Any CPU.Build.0 = Debug|Any CPU {BE7D3D6B-1CA1-47F9-93BE-0415708571AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EDAC56C7-0AC9-465A-A361-63347F435327}.Release|Any CPU.ActiveCfg = Release|Any CPU {BE7D3D6B-1CA1-47F9-93BE-0415708571AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EDAC56C7-0AC9-465A-A361-63347F435327}.Release|Any CPU.Build.0 = Release|Any CPU {BE7D3D6B-1CA1-47F9-93BE-0415708571AA}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
EndGlobalSection EndGlobalSection
GlobalSection(NestedProjects) = preSolution GlobalSection(NestedProjects) = preSolution
{A9DFF203-7F27-44BA-A460-F65C01D0EDFD} = {12A97D16-34BB-4D4F-9F76-D74061A9BA77} {A9DFF203-7F27-44BA-A460-F65C01D0EDFD} = {12A97D16-34BB-4D4F-9F76-D74061A9BA77}
{EDAC56C7-0AC9-465A-A361-63347F435327} = {12A97D16-34BB-4D4F-9F76-D74061A9BA77} {BE7D3D6B-1CA1-47F9-93BE-0415708571AA} = {12A97D16-34BB-4D4F-9F76-D74061A9BA77}
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4BE2DC93-D511-4DA9-9C47-F286E71354BA} SolutionGuid = {4BE2DC93-D511-4DA9-9C47-F286E71354BA}

@ -38,10 +38,9 @@ public class PongServer
byte[] receivedData = serverSocket.Receive(ref remoteEndPoint); byte[] receivedData = serverSocket.Receive(ref remoteEndPoint);
string fileJson = Encoding.UTF8.GetString(receivedData); string fileJson = Encoding.UTF8.GetString(receivedData);
ObjectTransfert<Player> data = JsonSerializer.Deserialize<ObjectTransfert<Player>>(fileJson); ObjectTransfert<Player> data = JsonSerializer.Deserialize<ObjectTransfert<Player>>(fileJson);
if (data.Informations.Action == Shared.DTO.Action.Host) if (data.Informations.Action == Shared.DTO.Action.Host)
{ {
Host(data, remoteEndPoint, serverSocket, false); Host(data, remoteEndPoint, serverSocket, false);
} }
@ -49,7 +48,7 @@ public class PongServer
if (data.Informations.Action == Shared.DTO.Action.Join) if (data.Informations.Action == Shared.DTO.Action.Join)
{ {
var choisenRoom = rooms.FirstOrDefault(room => room.Key == data.Informations.IdRoom); var choisenRoom = rooms.FirstOrDefault(room => room.Key == data.Informations.IdRoom);
if(choisenRoom.Value != default) if(choisenRoom.Value != default && choisenRoom.Value.Availaible)
{ {
Join(data, remoteEndPoint, serverSocket, choisenRoom.Value); Join(data, remoteEndPoint, serverSocket, choisenRoom.Value);
} }
@ -62,8 +61,7 @@ public class PongServer
Console.WriteLine("Connection " + choisenRoom.Key); Console.WriteLine("Connection " + choisenRoom.Key);
if (choisenRoom.Value != default ) if (choisenRoom.Value != default )
{ {
Join(data, remoteEndPoint, serverSocket, choisenRoom.Value); Join(data, remoteEndPoint, serverSocket, choisenRoom.Value);
} }
else else
{ {
@ -71,7 +69,6 @@ public class PongServer
} }
} }
Console.WriteLine("");
} }
@ -79,20 +76,11 @@ public class PongServer
private void Host(ObjectTransfert<Player> data, IPEndPoint remoteEndPoint, UdpClient serverSocket, bool availaible) private void Host(ObjectTransfert<Player> data, IPEndPoint remoteEndPoint, UdpClient serverSocket, bool availaible)
{ {
var choisenRoom = rooms.FirstOrDefault(room => room.Value.Free);
var chosenPort = nextPort;
if (choisenRoom.Value != default)
{
chosenPort= choisenRoom.Value.Port;
rooms.Remove(choisenRoom.Key);
choisenRoom = default;
}
Room room = new Room(data.Data.playerId, availaible); Room room = new Room(data.Data.playerId, availaible);
// Assign a unique port to the client // Assign a unique port to the client
IPEndPoint clientEndPoint = new IPEndPoint(IPAddress.Any, chosenPort); IPEndPoint clientEndPoint = new IPEndPoint(IPAddress.Any, nextPort);
UdpClient clientSocket = new UdpClient(clientEndPoint); UdpClient clientSocket = new UdpClient(clientEndPoint);
room.playerHost = new KeyValuePair<Player,UdpClient>(data.Data,clientSocket); room.playerHost = new KeyValuePair<Player,UdpClient>(data.Data,clientSocket);
@ -103,47 +91,37 @@ public class PongServer
Console.WriteLine("New connection Host From " + remoteEndPoint.ToString()); Console.WriteLine("New connection Host From " + remoteEndPoint.ToString());
room.Port = chosenPort; room.Port = nextPort;
if(chosenPort==nextPort) nextPort++;
{
nextPort++;
}
Tuple<int, bool> dataToSend = new Tuple<int, bool>(room.Port, true);
Console.WriteLine(JsonSerializer.Serialize(dataToSend));
// Send port message to client // Send port message to client
byte[] connectionData = Encoding.ASCII.GetBytes(JsonSerializer.Serialize(dataToSend)); byte[] connectionData = Encoding.ASCII.GetBytes(room.Port.ToString());
serverSocket.Send(connectionData, connectionData.Length, remoteEndPoint); serverSocket.Send(connectionData, connectionData.Length, remoteEndPoint);
rooms[data.Data.playerId] = room; rooms[data.Data.playerId] = room;
room.PropertyChanged += room.OnReadyChanged;
Console.WriteLine("FIN HOST...............");
} }
private void Join(ObjectTransfert<Player> data, IPEndPoint remoteEndPoint, UdpClient serverSocket, Room room) private void Join(ObjectTransfert<Player> data, IPEndPoint remoteEndPoint, UdpClient serverSocket, Room room)
{ {
room.playerJoin = new KeyValuePair<Player, UdpClient>(data.Data, room.playerHost.Value); room.playerJoin = new KeyValuePair<Player, UdpClient>(data.Data, room.playerHost.Value);
Console.WriteLine("New connection Client from " + remoteEndPoint.ToString());
Tuple<int, bool> dataToSend = new Tuple<int, bool>(room.Port, false); Console.WriteLine("New connection Client from " + remoteEndPoint.ToString());
Console.WriteLine(JsonSerializer.Serialize(dataToSend));
// Send port message to client // Send port message to client
byte[] connectionData = Encoding.ASCII.GetBytes(JsonSerializer.Serialize(dataToSend)); byte[] connectionData = Encoding.ASCII.GetBytes(room.Port.ToString());
serverSocket.Send(connectionData, connectionData.Length, remoteEndPoint); serverSocket.Send(connectionData, connectionData.Length, remoteEndPoint);
room.PropertyChanged += room.OnReadyChanged; room.PropertyChanged += room.OnReadyChanged;
room.NbPlayer++; room.NbPlayer++;
Console.WriteLine("FIN JOIN...............");
} }
} }

@ -5,7 +5,6 @@ using System.Net.Sockets;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using DataBase.Entity; using DataBase.Entity;
using Shared.DTO;
using System.Text.Json; using System.Text.Json;
using Server; using Server;

@ -9,7 +9,6 @@ using System.Threading.Tasks;
using Shared.DTO; using Shared.DTO;
using System.ComponentModel; using System.ComponentModel;
using System.Text.Json; using System.Text.Json;
using static System.Formats.Asn1.AsnWriter;
namespace Server namespace Server
{ {
@ -21,14 +20,9 @@ namespace Server
Id = id; Id = id;
Availaible = availaible; Availaible = availaible;
} }
Tuple<int, int> ScoreImp = new(0, 0);
ObjectTransfert<Tuple<GameEntities, Tuple<int, int>>> data ;
public bool Availaible { get; set; } public bool Availaible { get; set; }
public bool Free { get; set; }=false;
public event PropertyChangedEventHandler? PropertyChanged; public event PropertyChangedEventHandler? PropertyChanged;
public string Id { get; set; } public string Id { get; set; }
@ -36,7 +30,6 @@ namespace Server
public KeyValuePair <Player, UdpClient> playerHost; public KeyValuePair <Player, UdpClient> playerHost;
public KeyValuePair <Player, UdpClient> playerJoin; public KeyValuePair <Player, UdpClient> playerJoin;
public int Port { get; set; } public int Port { get; set; }
public bool gameRunning=true ;
public int NbPlayer public int NbPlayer
@ -64,131 +57,69 @@ namespace Server
public void ReceiveMessages(UdpClient clientSocket1, UdpClient clientSocket2, IPEndPoint endpoint2, Semaphore semaphore,bool isHost) public void ReceiveMessages(UdpClient clientSocket1, UdpClient clientSocket2, IPEndPoint endpoint2, SemaphoreSlim semaphore)
{ {
IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
Thread secondsCount = new Thread(() => CountSeconds() ); while (true)
bool isDisconected=false;
secondsCount.Start();
while ((ScoreImp.Item1<6 && ScoreImp.Item2 < 6) && gameRunning)
{
try
{
byte[] receivedData = clientSocket1.Receive(ref remoteEndPoint);
if (isHost) {
string fileJson = Encoding.UTF8.GetString(receivedData);
try
{
data = JsonSerializer.Deserialize<ObjectTransfert<Tuple<GameEntities, Tuple<int, int>>>>(fileJson);
ScoreImp = data.Data.Item2 != null ? data.Data.Item2 : ScoreImp;
}
catch (Exception ex) { }
}
semaphore.WaitOne();
clientSocket2.Send(receivedData, receivedData.Length, endpoint2);
semaphore.Release();
} catch (SocketException){
try
{
semaphore.Release();
}catch { }
isDisconected = true;
break;
}
}
//Tuple<GameEntities, Tuple<int, int>> game = new Tuple<GameEntities, Tuple<int, int>>(new GameEntities(new Tuple<float,float>(0,0),0), ScoreImp);
/* ObjectTransfert<Tuple<GameEntities, Tuple<int, int>>> data2 = new ObjectTransfert<Tuple<GameEntities, Tuple<int, int>>>() {
Informations = new Informations(Shared.DTO.Action.End, 0, typeof(Tuple<GameEntities, Tuple<int, int>>).ToString()),
Data = game
};*/
if (!isDisconected)
{ {
data.Informations.Action = Shared.DTO.Action.End; byte[] receivedData = clientSocket1.Receive(ref remoteEndPoint);
string sendFinish = JsonSerializer.Serialize(data);
byte[] sendFinishByt = Encoding.ASCII.GetBytes(sendFinish); semaphore.Wait();
try
{ clientSocket2.Send(receivedData, receivedData.Length, endpoint2);
clientSocket2.Send(sendFinishByt, sendFinishByt.Length, endpoint2);
} semaphore.Release();
catch (Exception ex) { }
}
if (isHost)
{
try
{
semaphore.Release();
}
catch { }
playerJoin.Value.Close();
}
else
{
playerHost.Value.Close();
}
Free = true;
Console.WriteLine("Game Finished Am i host " + isHost);
}
private void CountSeconds()
{
int seconds = 0;
while (seconds<=122)
{
seconds++;
Thread.Sleep(1000);
} }
gameRunning = false;
} }
async public void OnReadyChanged(object sender, PropertyChangedEventArgs e) public void OnReadyChanged(object sender, PropertyChangedEventArgs e)
{ {
await Task.Run(() =>
{
Room room = sender as Room;
int maxPlayer = room.nbPlayer;
Room room = sender as Room;
int maxPlayer = room.nbPlayer;
if (maxPlayer == 2) //IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Any, Port);
{ //UdpClient serverSocket = new UdpClient(serverEndPoint);
room.Availaible = false;
IPEndPoint remoteEndPointHost = new IPEndPoint(IPAddress.Any, room.Port);
IPEndPoint remoteEndPointJoin = new IPEndPoint(IPAddress.Any, room.Port);
byte[] receivedDataHost = playerHost.Value.Receive(ref remoteEndPointHost); if (maxPlayer == 2)
byte[] receivedDataJoin = playerJoin.Value.Receive(ref remoteEndPointJoin); {
IPEndPoint remoteEndPointHost = new IPEndPoint(IPAddress.Any, room.Port);
IPEndPoint remoteEndPointJoin = new IPEndPoint(IPAddress.Any, room.Port);
playerJoin.Value.Send(receivedDataHost, receivedDataHost.Length, remoteEndPointHost);
playerHost.Value.Send(receivedDataJoin, receivedDataJoin.Length, remoteEndPointJoin);
Semaphore semaphore = new Semaphore(2, 2); byte[] receivedDataHost = playerHost.Value.Receive(ref remoteEndPointHost);
byte[] receivedDataJoin = playerJoin.Value.Receive(ref remoteEndPointJoin);
playerJoin.Value.Send(receivedDataHost, receivedDataHost.Length, remoteEndPointHost);
playerHost.Value.Send(receivedDataJoin, receivedDataJoin.Length, remoteEndPointJoin);
SemaphoreSlim semaphore = new SemaphoreSlim(0);
Thread receiveThread1 = new Thread(() => ReceiveMessages(playerHost.Value, playerJoin.Value, remoteEndPointJoin, semaphore,true));
Thread receiveThread1 = new Thread(() => ReceiveMessages(playerHost.Value, playerJoin.Value, remoteEndPointJoin, semaphore));
Thread receiveThread2 = new Thread(() =>
{
ReceiveMessages(playerJoin.Value, playerHost.Value, remoteEndPointHost, semaphore,false);
});
receiveThread1.Start();
receiveThread2.Start();
Thread receiveThread2 = new Thread(() => {
// Attente pour que le joueur 1 ait envoyé ses données avant de démarrer la réception des données du joueur 2
semaphore.Wait();
ReceiveMessages(playerJoin.Value, playerHost.Value, remoteEndPointHost, semaphore);
});
receiveThread1.Start();
receiveThread2.Start();
receiveThread1.Join(); semaphore.Release();
receiveThread2.Join();
} receiveThread1.Join();
receiveThread2.Join();
}
});
} }
} }
} }

@ -15,7 +15,6 @@ namespace Shared.DTO
SendPlayer, SendPlayer,
RecivePlayer, RecivePlayer,
SendEntities, SendEntities
SendScore
} }
} }

@ -1,20 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shared.DTO
{
public class GameEntities
{
public Tuple<float, float> Ball { get; set; }
public float Paddle { get; set; }
public GameEntities(Tuple<float, float> ball, float paddle)
{
Ball = ball;
Paddle = paddle;
}
}
}

@ -4,12 +4,13 @@ using Microsoft.EntityFrameworkCore;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Runtime.CompilerServices;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TestsDatabase namespace TestsDataBase
{ {
public class TestsChat public class TestChat
{ {
[Fact] [Fact]
public void Add_Test() public void Add_Test()

@ -4,13 +4,13 @@ using Microsoft.EntityFrameworkCore;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Numerics; using System.Runtime.CompilerServices;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace TestsDatabase namespace TestsDataBase
{ {
public class TestsGame public class TestGame
{ {
[Fact] [Fact]
public void Add_Test() public void Add_Test()
@ -147,4 +147,4 @@ namespace TestsDatabase
} }
} }
} }
} }

@ -6,10 +6,11 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using xunit;
namespace TestsDatabase namespace TestsDataBase
{ {
public class TestsMessage public class TestMessage
{ {
[Fact] [Fact]
public void Add_Test() public void Add_Test()
@ -24,7 +25,7 @@ namespace TestsDatabase
Player player2 = new Player { playerId = "Rami12345", name = "The Lady", nbBallTouchTotal = 8, timePlayed = 2 }; Player player2 = new Player { playerId = "Rami12345", name = "The Lady", nbBallTouchTotal = 8, timePlayed = 2 };
Chat chat = new Chat { chatId = 1, player1 = "Loris12345", player2 = "Rami12345", PlayerId1 = player, PlayerId2 = player2 }; Chat chat = new Chat { chatId = 1, player1 = "Loris12345", player2 = "Rami12345", PlayerId1 = player, PlayerId2 = player2 };
Message message = new Message { messageId = 1, ChatId = chat, message = "message", chat = 1, player = "Loris12345", PlayerId = player, timestamp = new DateTime(2023, 3, 10, 14, 30, 0, DateTimeKind.Utc) }; Message message = new Message { messageId = 1, ChatId = chat, message = "message", chat = 1, player = "Loris12345", PlayerId = player, timestamp = new DateTime(2023, 3, 10, 14, 30, 0, DateTimeKind.Utc) };
context.Messages.Add(message); context.Messages.Add(message);
context.SaveChanges(); context.SaveChanges();
} }
@ -141,3 +142,4 @@ namespace TestsDatabase
} }
} }
} }

@ -1,15 +1,10 @@
using DataBase.Context; using DataBase.Context;
using DataBase.Entity; using DataBase.Entity;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestsDatabase namespace TestsDataBase
{ {
public class TestsPlayer public class TestPlayer
{ {
[Fact] [Fact]
public void Add_Test() public void Add_Test()
@ -131,4 +126,4 @@ namespace TestsDatabase
} }
} }
} }
} }

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net6.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
@ -10,7 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.4" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.4" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.2" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.2" />
<PackageReference Include="xunit" Version="2.4.2" /> <PackageReference Include="xunit" Version="2.4.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5"> <PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
Loading…
Cancel
Save