Untitled

 avatar
unknown
plain_text
a year ago
2.9 kB
3
Indexable
using System.Collections.Generic;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Moq;
using Product_Stock_Maintenance.models;
 
namespace UnitTest
{
    public static class DbSetExtensions
    {
        public static DbSet<T> ReturnsDbSet<T>(this Mock<TemplateContext> mockContext, List<T> list)
            where T : class
        {
            var queryableList = list.AsQueryable();
 
            var dbSetMock = new Mock<DbSet<T>>();
            dbSetMock.As<IQueryable<T>>().Setup(m => m.Provider).Returns(queryableList.Provider);
            dbSetMock.As<IQueryable<T>>().Setup(m => m.Expression).Returns(queryableList.Expression);
            dbSetMock.As<IQueryable<T>>().Setup(m => m.ElementType).Returns(queryableList.ElementType);
            dbSetMock.As<IQueryable<T>>().Setup(m => m.GetEnumerator()).Returns(() => queryableList.GetEnumerator());
 
            mockContext.Setup(x => x.Set<T>()).Returns(dbSetMock.Object);
 
            return dbSetMock.Object;
        }
    }
}





using Microsoft.AspNetCore.Mvc;
using Moq;
using NUnit.Framework;
using Product_Stock_Maintenance.models;
using ProductStockMaintenance.Controllers;
using ProductStockMaintenance.Repo;
using Microsoft.EntityFrameworkCore;
using static UnitTest.DbSetExtensions;

namespace UnitTest
{
    [TestFixture]
    public class RepoTest
    {
        public virtual DbSet<Categoryname> Categorynames { get; set; }

        public virtual DbSet<Inventory> Inventories { get; set; }

        public virtual DbSet<Login> Logins { get; set; }
        private Repo Repo;
        private Mock<TemplateContext> mockrepo;

        [SetUp]
        public void setup(){
            mockrepo = new Mock<TemplateContext>();
            Repo = new Repo(mockrepo.Object);
        }
        [Test]
        public async Task Test(){
            try{
                var vaildUser = new Login {AdminId = 1 ,Username = "bharadwaj" , Password = "bharadwaj@123", AdminAccess = false};
                var vaildAdmin = new Login {AdminId = 2,Username = "pavan" , Password = "pavan@123" , AdminAccess = true };
                var loginlist =new List<Login> {vaildAdmin,vaildUser};
                //mockrepo.Setup(x => x.Logins.FirstOrDefaultAsync(y => y.Username == "pavan" && y.Password == "pavan@123" )).ReturnsAsync(vaildAdmin);
                mockrepo.Setup(x => x.Logins).ReturnsDbSet(loginlist);
                var Result = await Repo.ValidateUser(vaildAdmin.Username,vaildAdmin.Password);
                switch(Result){
                    case "Admin":
                        Assert.Pass();
                        break;
                    default:
                        Assert.Fail();
                        break;
                }

            }
            catch(Exception){
                Assert.Fail();
            }
        }
        
    }
}
Editor is loading...
Leave a Comment