using AutoMapper; using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Infra.EFCore; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Localization; using Moq; using NUnit.Framework; using NUnit.Framework.Interfaces; using System.Collections.Generic; using System.Linq; using System; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore.Metadata; using Moq.EntityFrameworkCore; using System.Xml; using SharpCompress.Common; namespace IRaCIS.Core.Test { [TestFixture] public class RepositoryTests { private Repository _userRepository; private Mock _mockDbContext; private Mock> _mockSet; private List _users; [SetUp] public void Setup() { // Create a mock DbContext with an in-memory list of users _users = new List { new User { UserName = "Alice" }, new User { UserName = "Bob" }, new User { UserName = "Charlie" } }; _mockDbContext = new Mock(); _mockSet = new Mock>(); _mockSet.As>().Setup(m => m.Provider).Returns(_users.AsQueryable().Provider); _mockSet.As>().Setup(m => m.Expression).Returns(_users.AsQueryable().Expression); _mockSet.As>().Setup(m => m.ElementType).Returns(_users.AsQueryable().ElementType); _mockSet.As>().Setup(m => m.GetEnumerator()).Returns(_users.GetEnumerator()); _mockDbContext.Setup(x => x.Set()).Returns(_mockSet.Object); _userRepository = new Repository(_mockDbContext.Object); } [Test] public void GetAll_ReturnsAllUsers() { // Act var result = _userRepository._dbSet.ToList(); // Assert Assert.AreEqual(_users.Count, result.Count); CollectionAssert.AreEquivalent(_users, result); } [Test] public async Task Test_Add() { var addEntity = new User { UserName = "test" }; //Act await _userRepository.AddAsync(addEntity); //Assert _mockDbContext.Verify(x => x.Add(addEntity), Times.Once); //Act } } public class Tests { [SetUp] public void Setup() { } [Test] public void Test1() { Assert.Pass(); } public class MoqService { [Test] public async Task testAdd() { var users = new List { new User { UserName = "test 1"}, new User {UserName = "Product 2"}, new User { UserName = "Product 3"} }; //Arrange var dbContext = new Mock(); dbContext.Setup(x => x.Set()).ReturnsDbSet(users); var mapperMock = new Mock(); var userInfoMock = new Mock(); var localizerMock = new Mock(); var repository = new Repository(dbContext.Object, mapperMock.Object, userInfoMock.Object, localizerMock.Object); var entity = new User { UserName = "Test Entity" }; //Act await repository.AddAsync(entity); //Assert dbContext.Verify(x => x.Add(entity), Times.Once); dbContext.Verify(x => x.SaveChanges(), Times.Once); } } [Test] public async Task Add_Success() { // Arrange var mockSet = new Mock>(); var mockContext = new Mock(); mockContext.Setup(m => m.Set()).Returns(mockSet.Object); var mapperMock = new Mock(); var userInfoMock = new Mock(); var localizerMock = new Mock(); var repository = new Repository(mockContext.Object, mapperMock.Object, userInfoMock.Object, localizerMock.Object); var entity = new User { UserName = "Test Entity" }; //Act await repository.AddAsync(entity); // Assert mockContext.Verify(x => x.Add(entity), Times.Once); } } }