154 lines
6.2 KiB
C#
154 lines
6.2 KiB
C#
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using PuferFishContracts.DataModels;
|
|
using PuferFishDataBase.Implementations;
|
|
using PuferFishDataBase.Models;
|
|
|
|
namespace PuferFishTests.StoragesContracts;
|
|
|
|
[TestFixture]
|
|
internal class PointsStorageContractTests : BaseStorageContractTest
|
|
{
|
|
private PointsStorageContract _pointsStorageContract;
|
|
private Buyer _buyer;
|
|
[SetUp]
|
|
public void SetUp()
|
|
{
|
|
_pointsStorageContract = new PointsStorageContract(PuferFishDbContext);
|
|
_buyer = InsertBuyerToDatabaseAndReturn();
|
|
}
|
|
[TearDown]
|
|
public void TearDown()
|
|
{
|
|
PuferFishDbContext.Database.ExecuteSqlRaw("TRUNCATE \"Pointss\"CASCADE; ");
|
|
PuferFishDbContext.Database.ExecuteSqlRaw("TRUNCATE \"Buyers\"CASCADE; ");
|
|
}
|
|
[Test]
|
|
public void Try_GetList_WhenHaveRecords_Test()
|
|
{
|
|
var salary = InsertPointsToDatabaseAndReturn(_buyer.Id, buyerPoints: 100);
|
|
InsertPointsToDatabaseAndReturn(_buyer.Id);
|
|
InsertPointsToDatabaseAndReturn(_buyer.Id);
|
|
var list = _pointsStorageContract.GetList(DateTime.UtcNow.AddDays(-
|
|
10), DateTime.UtcNow.AddDays(10));
|
|
Assert.That(list, Is.Not.Null);
|
|
Assert.That(list, Has.Count.EqualTo(3));
|
|
AssertElement(list.First(), salary);
|
|
}
|
|
[Test]
|
|
public void Try_GetList_WhenNoRecords_Test()
|
|
{
|
|
var list = _pointsStorageContract.GetList(DateTime.UtcNow.AddDays(-10), DateTime.UtcNow.AddDays(10));
|
|
Assert.That(list, Is.Not.Null);
|
|
Assert.That(list, Is.Empty);
|
|
}
|
|
[Test]
|
|
public void Try_GetList_OnlyInDatePeriod_Test()
|
|
{
|
|
InsertPointsToDatabaseAndReturn(_buyer.Id, pointsDate: DateTime.UtcNow.AddDays(-2));
|
|
InsertPointsToDatabaseAndReturn(_buyer.Id, pointsDate: DateTime.UtcNow.AddDays(-1).AddMinutes(-5));
|
|
InsertPointsToDatabaseAndReturn(_buyer.Id, pointsDate: DateTime.UtcNow.AddDays(-1).AddMinutes(5));
|
|
InsertPointsToDatabaseAndReturn(_buyer.Id, pointsDate: DateTime.UtcNow.AddDays(1).AddMinutes(-5));
|
|
InsertPointsToDatabaseAndReturn(_buyer.Id, pointsDate: DateTime.UtcNow.AddDays(1).AddMinutes(5));
|
|
InsertPointsToDatabaseAndReturn(_buyer.Id, pointsDate: DateTime.UtcNow.AddDays(-2));
|
|
var list = _pointsStorageContract.GetList(DateTime.UtcNow.AddDays(-1), DateTime.UtcNow.AddDays(1));
|
|
Assert.That(list, Is.Not.Null);
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(list, Has.Count.EqualTo(2));
|
|
});
|
|
}
|
|
[Test]
|
|
public void Try_GetList_ByBuyer_Test()
|
|
{
|
|
var worker = InsertBuyerToDatabaseAndReturn("name 2");
|
|
InsertPointsToDatabaseAndReturn(_buyer.Id);
|
|
InsertPointsToDatabaseAndReturn(_buyer.Id);
|
|
InsertPointsToDatabaseAndReturn(worker.Id);
|
|
var list = _pointsStorageContract.GetList(DateTime.UtcNow.AddDays(-1), DateTime.UtcNow.AddDays(1), _buyer.Id);
|
|
Assert.That(list, Is.Not.Null);
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(list, Has.Count.EqualTo(2));
|
|
Assert.That(list.All(x => x.BuyerId == _buyer.Id));
|
|
});
|
|
}
|
|
[Test]
|
|
public void Try_GetList_ByWorkerOnlyInDatePeriod_Test()
|
|
{
|
|
var buyer = InsertBuyerToDatabaseAndReturn("name 2");
|
|
InsertPointsToDatabaseAndReturn(_buyer.Id, pointsDate: DateTime.UtcNow.AddDays(-2));
|
|
InsertPointsToDatabaseAndReturn(_buyer.Id, pointsDate: DateTime.UtcNow.AddDays(-1).AddMinutes(5));
|
|
InsertPointsToDatabaseAndReturn(buyer.Id, pointsDate: DateTime.UtcNow.AddDays(-1).AddMinutes(5));
|
|
InsertPointsToDatabaseAndReturn(_buyer.Id, pointsDate: DateTime.UtcNow.AddDays(1).AddMinutes(-5));
|
|
InsertPointsToDatabaseAndReturn(buyer.Id, pointsDate: DateTime.UtcNow.AddDays(1).AddMinutes(-5));
|
|
InsertPointsToDatabaseAndReturn(_buyer.Id, pointsDate: DateTime.UtcNow.AddDays(-2));
|
|
var list = _pointsStorageContract.GetList(DateTime.UtcNow.AddDays(- 1), DateTime.UtcNow.AddDays(1), _buyer.Id);
|
|
Assert.That(list, Is.Not.Null);
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(list, Has.Count.EqualTo(2));
|
|
Assert.That(list.All(x => x.BuyerId == _buyer.Id));
|
|
});
|
|
}
|
|
[Test]
|
|
public void Try_AddElement_Test()
|
|
{
|
|
var buyer = CreateModel(_buyer.Id);
|
|
_pointsStorageContract.AddElement(buyer);
|
|
AssertElement(GetPointsFromDatabaseByBuyerId(_buyer.Id), buyer);
|
|
}
|
|
private Buyer InsertBuyerToDatabaseAndReturn(string buyerFIO = "fio", string phoneNumber = "+79070707077", double points = 10)
|
|
{
|
|
var buyer = new Buyer()
|
|
{
|
|
Id = Guid.NewGuid().ToString(),
|
|
FIO = buyerFIO,
|
|
PhoneNumber = phoneNumber,
|
|
Points = points
|
|
};
|
|
PuferFishDbContext.Buyers.Add(buyer);
|
|
PuferFishDbContext.SaveChanges();
|
|
return buyer;
|
|
}
|
|
|
|
private Points InsertPointsToDatabaseAndReturn(string buyerId, double buyerPoints = 1, DateTime? pointsDate = null)
|
|
{
|
|
var points = new Points()
|
|
{
|
|
BuyerId = buyerId,
|
|
BuyerPoints = buyerPoints,
|
|
PointsDate = pointsDate ?? DateTime.UtcNow
|
|
};
|
|
PuferFishDbContext.Pointss.Add(points);
|
|
PuferFishDbContext.SaveChanges();
|
|
return points;
|
|
}
|
|
private static void AssertElement(PointsDataModel? actual, Points expected)
|
|
{
|
|
Assert.That(actual, Is.Not.Null);
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(actual.BuyerId, Is.EqualTo(expected.BuyerId));
|
|
Assert.That(actual.Points, Is.EqualTo(expected.BuyerPoints));
|
|
});
|
|
}
|
|
private static PointsDataModel CreateModel(string buyerId, double buyerPoints = 1, DateTime? pointsDate = null)
|
|
=> new(buyerId, pointsDate ?? DateTime.UtcNow, buyerPoints);
|
|
private Points? GetPointsFromDatabaseByBuyerId(string id) =>
|
|
PuferFishDbContext.Pointss.FirstOrDefault(x => x.BuyerId == id);
|
|
private static void AssertElement(Points? actual, PointsDataModel expected)
|
|
{
|
|
Assert.That(actual, Is.Not.Null);
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(actual.BuyerId, Is.EqualTo(expected.BuyerId));
|
|
Assert.That(actual.BuyerPoints, Is.EqualTo(expected.Points));
|
|
});
|
|
}
|
|
} |