GiecChallenge/backend/GiecChallenge.test/Services/ProductSubGroupServiceTest.cs

176 lines
8.4 KiB
C#
Raw Normal View History

2024-12-23 08:05:29 +01:00
using Moq;
using GiecChallenge.Services;
using Microsoft.Extensions.Logging;
using AutoMapper;
using GiecChallenge.Models;
using GiecChallenge.Profiles;
namespace GiecChallenge.Tests
{
public class ProductSubGroupServiceTest
{
private Mock<ILogger<SubGroupService>> _logger = null!;
private Mock<GiecChallengeContext> _context = null!;
private SubGroupService _service = null!;
private List<GroupDto> _allGroupsDTO = null!;
private string _Group = "FR";
[SetUp]
public void Setup()
{
var config = new MapperConfiguration(cfg =>
{
cfg.AddProfile(new SubGroupProfile());
});
IMapper mapper = config.CreateMapper();
_logger = new Mock<ILogger<SubGroupService>>();
_allGroupsDTO = Common.GetGroupsDto("Français", "English");
_context = Common.GetContext();
_context.Setup(g => g.ProductGroups).Returns(Common.GetMockDbSet<ProductGroup>(Common.GetGroups()).Object);
_context.Setup(g => g.ProductSubGroups).Returns(Common.GetMockDbSet<ProductSubGroup>(Common.GetSubGroups()).Object);
_context.Setup(g => g.ProductSubGroupLanguages).Returns(Common.GetMockDbSet<ProductSubGroupLanguage>(Common.GetSubGroupLanguage()).Object);
_context.Setup(g => g.Languages).Returns(Common.GetMockDbSet<Language>(Common.GetLanguages()).Object);
_service = new SubGroupService(_logger.Object, mapper, _context.Object);
}
[Test]
public async Task GetAllGroups()
{
var result = await _service.GetAllSubGroups();
Assert.AreEqual(result.Count, Common.GetGroups().Count);
}
[Test]
[TestCase("Boisson")]
[TestCase("hon")]
public async Task GetByName(string name)
{
var result = await _service.GetSubGroups(name, _Group);
Assert.AreEqual(result.Any(re => re.names.Any(rer => rer.name.ToLower().Contains(name.ToLower()))), true);
}
[Test]
[TestCase("vian")]
[TestCase("poire")]
public async Task GetByNameNothing(string name)
{
var result = await _service.GetSubGroups(name, _Group);
Assert.AreEqual(result.Any(), false);
}
[Test]
[TestCase("bf0cc5d3-2b4f-4761-ac4f-5dc25005aa32")]
[TestCase("1dda078c-d158-4078-aa8e-981d5ac5cd57")]
public async Task GetSubGroup(Guid id)
{
var result = await _service.GetSubGroup(id);
Assert.AreEqual(result!.id, id);
}
[Test]
[TestCase("46c619b1-1859-4665-bc8b-cf51eb30777e")]
[TestCase("eca28033-9954-498f-89d4-a911e40f5a33")]
public void GetSubGroupNothing(Guid id)
{
var ex = Assert.ThrowsAsync<Exception>(async () => await _service.GetSubGroup(id));
Assert.That(ex!.Message, Is.EqualTo(string.Concat("Sub Group does not exist")));
}
[Test]
[TestCase("Viande", "b21a6403-f428-454f-942d-dbd1fc3fa551", "f3390acd-acf2-4ab9-8d39-25b216182320")]
[TestCase("Tablet", "8f46bf6f-6cbf-47ac-8d51-039eabc820c3", "0b1307be-9ffd-4dcd-9431-4fe58b6420f7")]
public async Task Create(string name, string groupOfName, string language)
{
var subGroupDto = Common.GetSubGroupDtoTest(name, groupOfName, language);
await _service.Create(subGroupDto);
Assert.AreEqual(_context.Object.ProductSubGroups.Any(l => l.names.Any(ln => ln.name == name)), true);
}
[Test]
[TestCase("Boisson", "b21a6403-f428-454f-942d-dbd1fc3fa551", "f3390acd-acf2-4ab9-8d39-25b216182320")]
[TestCase("Smartphone", "8f46bf6f-6cbf-47ac-8d51-039eabc820c3", "0b1307be-9ffd-4dcd-9431-4fe58b6420f7")]
public void CreateAlreadyExists(string name, string groupOfName, string language)
{
var subGroupDto = Common.GetSubGroupDtoTest(name, groupOfName, language);
var ex = Assert.ThrowsAsync<Exception>(async () => await _service.Create(subGroupDto));
Assert.That(ex!.Message, Is.EqualTo(string.Concat("Sub Group already exists")));
}
[Test]
[TestCase("bf0cc5d3-2b4f-4761-ac4f-5dc25005aa32", "Tablet", "8f46bf6f-6cbf-47ac-8d51-039eabc820c3", "f3390acd-acf2-4ab9-8d39-25b216182320")]
[TestCase("1dda078c-d158-4078-aa8e-981d5ac5cd57", "Viande", "b21a6403-f428-454f-942d-dbd1fc3fa551", "0b1307be-9ffd-4dcd-9431-4fe58b6420f7")]
public async Task Update(Guid id, string name, string groupOfName, string language)
{
var subGroupDto = Common.GetSubGroupDtoTest(name, groupOfName, language);
await _service.Update(id, subGroupDto);
Assert.True(_context.Object.ProductSubGroups.Any(l => l.names.Any(ln => ln.name == name)));
}
[Test]
[TestCase("46c619b1-1859-4665-bc8b-cf51eb30777e", "Tablet", "991979cd-b95f-4e9a-85e7-e1f7ce6932fb", "f3390acd-acf2-4ab9-8d39-25b216182320")]
[TestCase("eca28033-9954-498f-89d4-a911e40f5a33", "Viande", "3a69d206-7236-11ed-a1eb-0242ac120002", "0b1307be-9ffd-4dcd-9431-4fe58b6420f7")]
public void UpdateDoesNotExists(Guid id, string isoCode, string name, string language)
{
var subGroupDto = Common.GetSubGroupDtoTest(isoCode, name, language);
var ex = Assert.ThrowsAsync<Exception>(async () => await _service.Update(id, subGroupDto));
Assert.That(ex!.Message, Is.EqualTo(string.Concat("Sub Group does not exist")));
}
[Test]
[TestCase("bf0cc5d3-2b4f-4761-ac4f-5dc25005aa32", "Tablet", "Elec", "FR")]
[TestCase("1dda078c-d158-4078-aa8e-981d5ac5cd57", "Viande", "Bouffe", "EN")]
public void UpdateWithGroupBadFormat(Guid id, string isoCode, string name, string language)
{
var subGroupDto = Common.GetSubGroupDtoTest(isoCode, name, language);
var ex = Assert.ThrowsAsync<Exception>(async () => await _service.Update(id, subGroupDto));
Assert.That(ex!.Message, Is.EqualTo(string.Concat(name, " is not valid")));
}
[Test]
[TestCase("bf0cc5d3-2b4f-4761-ac4f-5dc25005aa32", "Tablet", "bf0cc5d3-2b4f-4761-ac4f-5dc25005aa32", "f3390acd-acf2-4ab9-8d39-25b216182320")]
[TestCase("1dda078c-d158-4078-aa8e-981d5ac5cd57", "Viande", "1dda078c-d158-4078-aa8e-981d5ac5cd57", "0b1307be-9ffd-4dcd-9431-4fe58b6420f7")]
public void UpdateWithGroupUnknown(Guid id, string isoCode, string name, string language)
{
var subGroupDto = Common.GetSubGroupDtoTest(isoCode, name, language);
var ex = Assert.ThrowsAsync<Exception>(async () => await _service.Update(id, subGroupDto));
Assert.That(ex!.Message, Is.EqualTo(string.Concat("Group does not exist")));
}
[Test]
[TestCase("bf0cc5d3-2b4f-4761-ac4f-5dc25005aa32", "Tablet", "991979cd-b95f-4e9a-85e7-e1f7ce6932fb", "IT")]
[TestCase("1dda078c-d158-4078-aa8e-981d5ac5cd57", "Viande", "3a69d206-7236-11ed-a1eb-0242ac120002", "ES")]
public void UpdateWithLanguageBadValue(Guid id, string isoCode, string name, string language)
{
var subGroupDto = Common.GetSubGroupDtoTest(isoCode, name, language);
var ex = Assert.ThrowsAsync<Exception>(async () => await _service.Update(id, subGroupDto));
Assert.That(ex!.Message, Is.EqualTo(string.Concat(language, " is not valid")));
}
[Test]
[TestCase("bf0cc5d3-2b4f-4761-ac4f-5dc25005aa32", "Tablet", "991979cd-b95f-4e9a-85e7-e1f7ce6932fb", "991979cd-b95f-4e9a-85e7-e1f7ce6932fb")]
[TestCase("1dda078c-d158-4078-aa8e-981d5ac5cd57", "Viande", "3a69d206-7236-11ed-a1eb-0242ac120002", "3a69d206-7236-11ed-a1eb-0242ac120001")]
public void UpdateWithLanguageUnknown(Guid id, string isoCode, string name, string language)
{
var subGroupDto = Common.GetSubGroupDtoTest(isoCode, name, language);
var ex = Assert.ThrowsAsync<Exception>(async () => await _service.Update(id, subGroupDto));
Assert.That(ex!.Message, Is.EqualTo(string.Concat("Language ", language, " doesn't exist")));
}
}
}