Files
2026-03-17 08:54:34 -05:00

96 lines
3.1 KiB
C#

using Microsoft.EntityFrameworkCore;
using ReserveManagementSystemApi.Services;
using ReserveManagementSystemLib.Models;
using ReserveManagementSystemLib.Persistence;
using ReserveManagementSystemLib.Repositories;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TechTalk.SpecFlow;
using TechTalk.SpecFlow.Assist;
using TechTalk.SpecFlow.Assist.ValueRetrievers;
namespace ReserveManagementSystemApi.Tests.Features
{
[Binding]
public sealed class DealerServiceSteps
{
// For additional details on SpecFlow step definitions see https://go.specflow.org/doc-stepdef
private readonly ScenarioContext _scenarioContext;
private DealerService _dealerService;
private AppDbContext _appDbContext;
private IEnumerable<Dealer> _dealersResult;
private List<Loan> _loans;
public DealerServiceSteps(ScenarioContext scenarioContext)
{
_scenarioContext = scenarioContext;
Service.Instance.ValueRetrievers.Register(new NullValueRetriever("<null>"));
}
[BeforeScenario]
public void CreateDatabase()
{
var options = new DbContextOptionsBuilder<AppDbContext>()
.UseInMemoryDatabase(Guid.NewGuid().ToString())
.Options;
_appDbContext = new AppDbContext(options);
_dealerService = new DealerService(new DealerRepository(_appDbContext));
}
[AfterScenario]
public void Dispose()
{
_appDbContext.Database.EnsureDeleted();
_appDbContext.Dispose();
}
[Given(@"the dealer table looks like")]
public void GivenTheDealerTableLooksLike(Table table)
{
var dealers = table.CreateSet<Dealer>().ToList();
_appDbContext.Dealers.AddRange(dealers);
_appDbContext.SaveChanges();
}
[Given(@"a list of loans with dealers that look like")]
public void GivenAListOfLoansWithDealersThatLookLike(Table table)
{
_loans = table.CreateSet<Loan>().ToList();
var dealers = table.CreateSet<Dealer>().ToList();
for (var i=0; i < _loans.Count; i++)
{
_loans.Skip(i).First().Dealer = dealers.Skip(i).First();
}
}
[When(@"I search for dealers with search string '(.*)'")]
public async void WhenISearchForDealersWithSearchString(string dealerSearchText)
{
_dealersResult = await _dealerService.Search(dealerSearchText);
}
[When(@"I update the dealers from the loans")]
public async void WhenIUpdateTheDealersFromTheLoans()
{
await _dealerService.UpdateDealersAsync(_loans);
}
[Then(@"dealers returned should be")]
public void ThenDealersReturnedShouldBe(Table table)
{
table.CompareToSet(_dealersResult);
}
[Then(@"the dealer table now looks like")]
public void ThenTheDealerTableNowLooksLike(Table table)
{
var dealers = _appDbContext.Dealers.ToList();
table.CompareToSet(dealers);
}
}
}