You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
API_SQLuedo/API_SQLuedo/TestEF/Service/TestLessonDataService.cs

185 lines
7.0 KiB

using DbContextLib;
using DbDataManager.Service;
using Entities;
using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore;
using Model.OrderCriteria;
namespace TestEF.Service;
public class TestLessonDataService
{
private readonly UserDbContext _dbContext;
private readonly LessonDataService _lessonDataService;
public TestLessonDataService()
{
var connection = new SqliteConnection("DataSource=:memory:");
connection.Open();
var options = new DbContextOptionsBuilder<UserDbContext>()
.UseSqlite(connection)
.Options;
_dbContext = new UserDbContext(options);
_lessonDataService = new LessonDataService(_dbContext);
}
[Fact]
public void GetLessons_WithNoneCriteria_ReturnsCorrectNumberOfLessons()
{
_dbContext.Lessons.Add(new LessonEntity
{ Id = 1, Title = "Test1", LastPublisher = "Publisher1", LastEdit = DateOnly.MinValue });
_dbContext.Lessons.Add(new LessonEntity
{ Id = 2, Title = "Test2", LastPublisher = "Publisher2", LastEdit = DateOnly.MinValue });
_dbContext.Lessons.Add(new LessonEntity
{ Id = 3, Title = "Test3", LastPublisher = "Publisher3", LastEdit = DateOnly.MinValue });
_dbContext.SaveChanges();
var result = _lessonDataService.GetLessons(1, 2, LessonOrderCriteria.None);
Assert.Equal(2, result.Count());
}
[Fact]
public void GetLessons_OrderedByTitle_ReturnsCorrectNumberOfLessons()
{
_dbContext.Lessons.Add(new LessonEntity
{ Id = 1, Title = "Test1", LastPublisher = "Publisher1", LastEdit = DateOnly.MinValue });
_dbContext.Lessons.Add(new LessonEntity
{ Id = 2, Title = "Test2", LastPublisher = "Publisher2", LastEdit = DateOnly.MinValue });
_dbContext.Lessons.Add(new LessonEntity
{ Id = 3, Title = "Test3", LastPublisher = "Publisher3", LastEdit = DateOnly.MinValue });
_dbContext.SaveChanges();
var result = _lessonDataService.GetLessons(1, 2, LessonOrderCriteria.ByTitle);
Assert.Equal(2, result.Count());
}
[Fact]
public void GetLessons_OrderedByLastPublisher_ReturnsCorrectNumberOfLessons()
{
_dbContext.Lessons.Add(new LessonEntity
{ Id = 1, Title = "Test1", LastPublisher = "Publisher1", LastEdit = DateOnly.MinValue });
_dbContext.Lessons.Add(new LessonEntity
{ Id = 2, Title = "Test2", LastPublisher = "Publisher2", LastEdit = DateOnly.MinValue });
_dbContext.Lessons.Add(new LessonEntity
{ Id = 3, Title = "Test3", LastPublisher = "Publisher3", LastEdit = DateOnly.MinValue });
_dbContext.SaveChanges();
var result = _lessonDataService.GetLessons(1, 2, LessonOrderCriteria.ByLastPublisher);
Assert.Equal(2, result.Count());
}
[Fact]
public void GetLessons_OrderedByLastEdit_ReturnsCorrectNumberOfLessons()
{
_dbContext.Lessons.Add(new LessonEntity
{ Id = 1, Title = "Test1", LastPublisher = "Publisher1", LastEdit = DateOnly.MinValue });
_dbContext.Lessons.Add(new LessonEntity
{ Id = 2, Title = "Test2", LastPublisher = "Publisher2", LastEdit = DateOnly.MinValue });
_dbContext.Lessons.Add(new LessonEntity
{ Id = 3, Title = "Test3", LastPublisher = "Publisher3", LastEdit = DateOnly.MinValue });
_dbContext.SaveChanges();
var result = _lessonDataService.GetLessons(1, 2, LessonOrderCriteria.ByLastEdit);
Assert.Equal(2, result.Count());
}
[Fact]
public void GetLessons_WithBadPage_ReturnsCorrectNumberOfLessons()
{
_dbContext.Lessons.Add(new LessonEntity
{ Id = 1, Title = "Test1", LastPublisher = "Publisher1", LastEdit = DateOnly.MinValue });
_dbContext.Lessons.Add(new LessonEntity
{ Id = 2, Title = "Test2", LastPublisher = "Publisher2", LastEdit = DateOnly.MinValue });
_dbContext.Lessons.Add(new LessonEntity
{ Id = 3, Title = "Test3", LastPublisher = "Publisher3", LastEdit = DateOnly.MinValue });
_dbContext.SaveChanges();
var result = _lessonDataService.GetLessons(-42, 2, LessonOrderCriteria.None);
Assert.Equal(2, result.Count());
}
[Fact]
public void GetLessons_WithBadNumber_ReturnsCorrectNumberOfLessons()
{
_dbContext.Lessons.Add(new LessonEntity
{ Id = 1, Title = "Test1", LastPublisher = "Publisher1", LastEdit = DateOnly.MinValue });
_dbContext.Lessons.Add(new LessonEntity
{ Id = 2, Title = "Test2", LastPublisher = "Publisher2", LastEdit = DateOnly.MinValue });
_dbContext.Lessons.Add(new LessonEntity
{ Id = 3, Title = "Test3", LastPublisher = "Publisher3", LastEdit = DateOnly.MinValue });
_dbContext.SaveChanges();
var result = _lessonDataService.GetLessons(1, -42, LessonOrderCriteria.None);
Assert.Equal(3, result.Count());
}
[Fact]
public void GetLessonById_ReturnsCorrectLesson()
{
_dbContext.Lessons.Add(new LessonEntity
{ Id = 1, Title = "Test1", LastPublisher = "Publisher1", LastEdit = DateOnly.MinValue });
_dbContext.Lessons.Add(new LessonEntity
{ Id = 2, Title = "Test2", LastPublisher = "Publisher2", LastEdit = DateOnly.MinValue });
_dbContext.SaveChanges();
var result = _lessonDataService.GetLessonById(1);
Assert.Equal("Test1", result.Title);
}
[Fact]
public void GetLessonByTitle_ReturnsCorrectLesson()
{
_dbContext.Lessons.Add(new LessonEntity
{ Id = 1, Title = "Test1", LastPublisher = "Publisher1", LastEdit = DateOnly.MinValue });
_dbContext.Lessons.Add(new LessonEntity
{ Id = 2, Title = "Test2", LastPublisher = "Publisher2", LastEdit = DateOnly.MinValue });
_dbContext.SaveChanges();
var result = _lessonDataService.GetLessonByTitle("Test1");
Assert.Equal(1, result.Id);
}
[Fact]
public void CreateLesson_AddsNewLesson()
{
var result = _lessonDataService.CreateLesson(1, "Test", "Publisher", DateOnly.MinValue);
Assert.Equal(1, _dbContext.Lessons.Count());
Assert.Equal("Test", result.Title);
}
[Fact]
public void DeleteLesson_RemovesLesson()
{
_dbContext.Lessons.Add(new LessonEntity
{ Id = 1, Title = "Test1", LastPublisher = "Publisher1", LastEdit = DateOnly.MinValue });
_dbContext.SaveChanges();
_lessonDataService.DeleteLesson(1);
Assert.Empty(_dbContext.Lessons);
}
[Fact]
public void UpdateLesson_UpdatesExistingLesson()
{
_dbContext.Lessons.Add(new LessonEntity
{ Id = 1, Title = "Test1", LastPublisher = "Publisher1", LastEdit = DateOnly.MinValue });
_dbContext.SaveChanges();
var updatedLesson = new LessonEntity
{ Id = 1, Title = "Updated", LastPublisher = "Publisher", LastEdit = DateOnly.MinValue };
var result = _lessonDataService.UpdateLesson(1, updatedLesson);
Assert.Equal("Updated", result.Title);
}
}