Advertisement
Guest User

Untitled

a guest
Dec 5th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.78 KB | None | 0 0
  1. using System.Collections.Generic;
  2. using System.Data.Entity;
  3. using System.Linq;
  4. using Autofac.Extras.Moq;
  5. using FestiSpec.Domain;
  6. using FestiSpec.Domain.Repository;
  7. using FestiSpec.Test.Helper;
  8. using Microsoft.VisualStudio.TestTools.UnitTesting;
  9. using Moq;
  10. using Xunit;
  11. using Assert = Microsoft.VisualStudio.TestTools.UnitTesting.Assert;
  12. using xAssert = Xunit.Assert;
  13.  
  14. namespace FestiSpec.Test.Domain
  15. {
  16.     [TestClass]
  17.     public class GenericRepositoryTest
  18.     {
  19.         private readonly DbSet<User> UserDbSet;
  20.         public GenericRepositoryTest()
  21.         {
  22.             UserDbSet = MockDbSet.GetQueryableMockDbSet(GetDummyUsers(), UserDbSetSetup);
  23.         }
  24.  
  25.         #region GenericRepository Get based methods
  26.         [Fact]
  27.         public void GetAllUsers_ValidCall()
  28.         {
  29.             using (var mock = AutoMock.GetLoose())
  30.             {
  31.                 mock.Mock<IEntitiesContext>()
  32.                     .Setup(context => context.Set<User>())
  33.                     .Returns(UserDbSet);
  34.  
  35.                 mock.Mock<IGenericRepository<User>>()
  36.                     .Setup(repo => repo.GetAll());
  37.  
  38.                 var userRepo = mock.Create<UserRepository>();
  39.  
  40.                 var expected = GetDummyUsers();
  41.                 var actual = userRepo.GetAll().ToList();
  42.  
  43.                 xAssert.True(actual != null);
  44.                 xAssert.Equal(expected.Count, actual.Count);
  45.             }
  46.         }
  47.  
  48.         [Fact]
  49.         public void GetUsers_ValidCall()
  50.         {
  51.             using (var mock = AutoMock.GetLoose())
  52.             {
  53.                 mock.Mock<IEntitiesContext>()
  54.                     .Setup(context => context.Set<User>())
  55.                     .Returns(UserDbSet);
  56.  
  57.                 mock.Mock<IGenericRepository<User>>()
  58.                     .Setup(repo => repo.Get(null, ""));
  59.  
  60.                 var userRepo = mock.Create<UserRepository>();
  61.  
  62.                 var expected = GetDummyUsers();
  63.                 var actual = userRepo.Get(null, "").ToList();
  64.  
  65.                 xAssert.True(actual != null);
  66.                 xAssert.Equal(expected.Count, actual.Count);
  67.             }
  68.         }
  69.  
  70.         [Fact]
  71.         public void GetSpecificUser_ValidCall()
  72.         {
  73.             using(var mock = AutoMock.GetLoose())
  74.             {
  75.                 mock.Mock<IEntitiesContext>()
  76.                     .Setup(context => context.Set<User>())
  77.                     .Returns(UserDbSet);
  78.  
  79.                 mock.Mock<IGenericRepository<User>>()
  80.                     .Setup(repo => repo.Get(u => u.Firstname == "Tom", ""));
  81.  
  82.                 var userRepo = mock.Create<UserRepository>();
  83.  
  84.                 var expected = GetDummyUsers().Where(users => users.Firstname == "Tom").ToList();
  85.                 var actual = userRepo.Get(u => u.Firstname == "Tom", "").ToList();
  86.  
  87.                 xAssert.True(actual != null);
  88.                 xAssert.Equal(expected.Count, actual.Count);
  89.             }
  90.         }
  91.  
  92.         [Theory]
  93.         [InlineData(1)]
  94.         [InlineData(int.MinValue)]
  95.         [InlineData(int.MaxValue)]
  96.         public void GetUserById_ValidCall(int id)
  97.         {
  98.             using (var mock = AutoMock.GetLoose())
  99.             {
  100.                 mock.Mock<IEntitiesContext>()
  101.                     .Setup(context => context.Set<User>())
  102.                     .Returns(UserDbSet);
  103.  
  104.                 mock.Mock<IGenericRepository<User>>()
  105.                     .Setup(repo => repo.GetById(id));
  106.  
  107.                 var userRepo = mock.Create<UserRepository>();
  108.  
  109.                 var expected = GetDummyUsers().SingleOrDefault(users => users.Id == id);
  110.                 var actual = userRepo.GetById(id);
  111.  
  112.                 xAssert.True(actual != null);
  113.                 xAssert.Equal(expected.Username, actual.Username);
  114.             }
  115.         }
  116.         #endregion
  117.  
  118.         #region GenericRepository Add based methods
  119.         [Fact]
  120.         public void AddUser_ValidCall()
  121.         {
  122.             using (var mock = AutoMock.GetLoose())
  123.             {
  124.                 var user = new User
  125.                 {
  126.                     Id = 2,
  127.                     Firstname = "Frank",
  128.                     Lastname = "Frankenstein",
  129.                     Username = "fr3nkst31n"
  130.                 };
  131.  
  132.                 mock.Mock<IEntitiesContext>()
  133.                     .Setup(context => context.Set<User>())
  134.                     .Returns(UserDbSet);
  135.  
  136.                 mock.Mock<IGenericRepository<User>>()
  137.                     .Setup(repo => repo.Add(user));
  138.  
  139.                 var userRepo = mock.Create<UserRepository>();
  140.  
  141.                 // Adding user
  142.                 userRepo.Add(user);
  143.  
  144.                 var expected = user;
  145.                 var actual = userRepo.GetById(2);
  146.  
  147.                 xAssert.True(actual != null);
  148.                 Assert.AreEqual(expected, actual);
  149.             }
  150.         }
  151.  
  152.         [Fact]
  153.         public void AddRangeUser_ValidCall()
  154.         {
  155.             using (var mock = AutoMock.GetLoose())
  156.             {
  157.                 var users = new List<User>
  158.                 {
  159.                     new User()
  160.                     {
  161.                         Id = 2,
  162.                         Firstname = "Frank",
  163.                         Lastname = "Frankenstein",
  164.                         Username = "fr3nkst31n"
  165.                     },
  166.                     new User()
  167.                     {
  168.                         Id = 3,
  169.                         Firstname = "Stefan",
  170.                         Lastname = "Gras",
  171.                         Username = "Stefgras123"
  172.                     },
  173.                     new User()
  174.                     {
  175.                         Id = 4,
  176.                         Firstname = "Henk",
  177.                         Lastname = "de Steen",
  178.                         Username = "henkSteen"
  179.                     }
  180.                 };
  181.  
  182.                 mock.Mock<IEntitiesContext>()
  183.                     .Setup(context => context.Set<User>())
  184.                     .Returns(UserDbSet);
  185.  
  186.                 mock.Mock<IGenericRepository<User>>()
  187.                     .Setup(repo => repo.AddRange(users));
  188.  
  189.                 var userRepo = mock.Create<UserRepository>();
  190.  
  191.                 // Adding users
  192.                 userRepo.AddRange(users);
  193.  
  194.                 int currUserIndex = 0;
  195.  
  196.                 for(int i = 2; i <= 4; i++)
  197.                 {
  198.                     var expected = users[currUserIndex];
  199.                     var actual = userRepo.GetById(i);
  200.  
  201.                     xAssert.True(actual != null);
  202.                     Assert.AreEqual(expected, actual);
  203.  
  204.                     currUserIndex++;
  205.                 }
  206.             }
  207.         }
  208.         #endregion
  209.  
  210.         #region Test specific setup
  211.         private List<User> GetDummyUsers()
  212.         {
  213.             var users = new List<User>
  214.             {
  215.                 new User()
  216.                 {
  217.                     Id = 1,
  218.                     Firstname = "Tom",
  219.                     Lastname = "Steenbergen",
  220.                     Username = "t0mStb3rg"
  221.                 },
  222.                 new User()
  223.                 {
  224.                     Id = int.MinValue,
  225.                     Firstname = "Tom",
  226.                     Lastname = "Thomassen",
  227.                     Username = "tomThoms142"
  228.                 },
  229.                 new User()
  230.                 {
  231.                     Id = int.MaxValue,
  232.                     Firstname = "Frank",
  233.                     Lastname = "Regenbui",
  234.                     Username = "frankregen978"
  235.                 }
  236.             };
  237.  
  238.             return users;
  239.         }
  240.  
  241.         private void UserDbSetSetup(Mock<DbSet<User>> dbSet, List<User> sourceList)
  242.         {
  243.             dbSet
  244.                 .Setup(set => set.Find(It.IsAny<object[]>()))
  245.                 .Returns((object[] id) => sourceList.SingleOrDefault(e => e.Id.Equals(id[0])));
  246.         }
  247.         #endregion
  248.     }
  249. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement