ScientificReport
GrantServiceTests.cs
Go to the documentation of this file.
1 using System.Collections.Generic;
2 using System.Linq;
3 using System.Security.Claims;
4 using Microsoft.EntityFrameworkCore;
5 using Moq;
11 using Xunit;
12 
13 namespace ScientificReport.Test.ServicesTests
14 {
15  public class GrantServiceTests
16  {
17  private readonly Mock<DbSet<Grant>> _mockDbSet = MockProvider.GetMockSet(GetTestData().AsQueryable());
18 
19  private static IEnumerable<Grant> GetTestData()
20  {
21  TestData.Grant1.UserProfilesGrants = new List<UserProfilesGrants>
22  {
24  {
25  UserProfile = TestData.User1,
26  Grant = TestData.Grant1,
27  }
28  };
29  TestData.Grant2.UserProfilesGrants = new List<UserProfilesGrants>
30  {
32  {
33  UserProfile = TestData.User1,
34  Grant = TestData.Grant2,
35  }
36  };
37  return new[]
38  {
39  TestData.Grant1,
40  TestData.Grant2
41  };
42  }
43 
44  private Mock<ScientificReportDbContext> GetMockContext()
45  {
46  var mockContext = new Mock<ScientificReportDbContext>();
47  mockContext.Setup(item => item.Grants).Returns(_mockDbSet.Object);
48 
49  var userProfileSet = MockProvider.GetMockSet(new []{TestData.User1}.AsQueryable());
50  var departmentSet = MockProvider.GetMockSet(new []{TestData.Department1}.AsQueryable());
51 
52  mockContext.Setup(item => item.UserProfiles).Returns(userProfileSet.Object);
53  mockContext.Setup(item => item.Departments).Returns(departmentSet.Object);
54 
55  return mockContext;
56  }
57 
58  [Fact]
59  public void GetAllTest()
60  {
61  var list = GetTestData().AsQueryable();
62 
63  var mockContext = new Mock<ScientificReportDbContext>();
64  mockContext.Setup(item => item.Grants).Returns(MockProvider.GetMockSet(list).Object);
65  var service = new GrantService(mockContext.Object);
66 
67  var actual = service.GetAll();
68 
69  Assert.Equal(list.Count(), actual.Count());
70  }
71 
72  [Fact]
73  public void GetAllWhereTest()
74  {
75  var service = new GrantService(GetMockContext().Object);
76  var actual = service.GetAllWhere(u => u.Id.Equals(TestData.Grant1.Id));
77  Assert.Single(actual);
78  }
79 
80  [Fact]
81  public void GetByIdTest()
82  {
83  var expected = GetTestData().First();
84  var service = new GrantService(GetMockContext().Object);
85 
86  var actual = service.GetById(expected.Id);
87 
88  Assert.NotNull(actual);
89  Assert.Equal(expected.Id, actual.Id);
90  }
91 
92  [Fact]
93  public void CreateItemTest()
94  {
95  var service = new GrantService(GetMockContext().Object);
96 
97  var expected = TestData.Grant3;
98  service.CreateItem(new GrantModel(expected));
99 
100  _mockDbSet.Verify(m => m.Add(It.IsAny<Grant>()), Times.Once);
101  }
102 
103  [Fact]
104  public void UpdateItemTest()
105  {
106  var service = new GrantService(GetMockContext().Object);
107 
108  var expected = GetTestData().First();
109  service.UpdateItem(new GrantEditModel(expected));
110 
111  _mockDbSet.Verify(m => m.Update(expected), Times.Once);
112  }
113 
114  [Fact]
115  public void DeleteItemTest()
116  {
117  var mockContext = GetMockContext();
118  var service = new GrantService(mockContext.Object);
119 
120  var item = mockContext.Object.Grants.First();
121 
122  Assert.True(service.Exists(item.Id));
123 
124  service.DeleteById(item.Id);
125 
126  Assert.False(service.Exists(item.Id));
127  }
128 
129  [Fact]
130  public void ExistsTest()
131  {
132  var service = new GrantService(GetMockContext().Object);
133 
134  var item = GetTestData().First();
135  var exists = service.Exists(item.Id);
136 
137  Assert.True(exists);
138  }
139 
140  [Fact]
141  public void DoesNotExistTest()
142  {
143  var service = new GrantService(GetMockContext().Object);
144 
145  var item = TestData.Grant3;
146  var exists = service.Exists(item.Id);
147 
148  Assert.False(exists);
149  }
150  }
151 }
virtual ICollection< UserProfilesGrants > UserProfilesGrants
Definition: Grant.cs:15