ScientificReport
ScientificWorkServiceTests.cs
Go to the documentation of this file.
1 using System.Collections.Generic;
2 using System.Linq;
3 using Microsoft.EntityFrameworkCore;
4 using Moq;
8 using Xunit;
9 
10 namespace ScientificReport.Test.ServicesTests
11 {
13  {
14  private readonly Mock<DbSet<ScientificWork>> _mockDbSet = MockProvider.GetMockSet(GetTestData().AsQueryable());
15 
16  private static IEnumerable<ScientificWork> GetTestData()
17  {
18  return new[]
19  {
20  TestData.ScientificWork1,
21  TestData.ScientificWork2
22  };
23  }
24 
25  private Mock<ScientificReportDbContext> GetMockContext()
26  {
27  var mockContext = new Mock<ScientificReportDbContext>();
28  mockContext.Setup(item => item.ScientificWorks).Returns(_mockDbSet.Object);
29  return mockContext;
30  }
31 
32  [Fact]
33  public void GetAllTest()
34  {
35  var list = GetTestData().AsQueryable();
36 
37  var mockContext = new Mock<ScientificReportDbContext>();
38  mockContext.Setup(item => item.ScientificWorks).Returns(MockProvider.GetMockSet(list).Object);
39  var service = new ScientificWorkService(mockContext.Object);
40 
41  var actual = service.GetAll();
42 
43  Assert.Equal(list.Count(), actual.Count());
44  }
45 
46  [Fact]
47  public void GetAllWhereTest()
48  {
49  var service = new ScientificWorkService(GetMockContext().Object);
50  var actual = service.GetAllWhere(u => u.Id.Equals(TestData.ScientificWork1.Id));
51  Assert.Single(actual);
52  }
53 
54  [Fact]
55  public void GetByIdTest()
56  {
57  var expected = GetTestData().First();
58  var service = new ScientificWorkService(GetMockContext().Object);
59 
60  var actual = service.GetById(expected.Id);
61 
62  Assert.NotNull(actual);
63  Assert.Equal(expected.Id, actual.Id);
64  }
65 
66  [Fact]
67  public void CreateItemTest()
68  {
69  var service = new ScientificWorkService(GetMockContext().Object);
70 
71  var expected = TestData.ScientificWork3;
72  service.CreateItem(expected);
73 
74  _mockDbSet.Verify(m => m.Add(It.IsAny<ScientificWork>()), Times.Once);
75  }
76 
77  [Fact]
78  public void UpdateItemTest()
79  {
80  var service = new ScientificWorkService(GetMockContext().Object);
81 
82  var expected = GetTestData().First();
83  expected.Title = TestData.ScientificWork3.Title;
84  service.UpdateItem(expected);
85 
86  _mockDbSet.Verify(m => m.Update(expected), Times.Once);
87  }
88 
89  [Fact]
90  public void DeleteItemTest()
91  {
92  var mockContext = GetMockContext();
93  var service = new ScientificWorkService(mockContext.Object);
94 
95  var item = mockContext.Object.ScientificWorks.First();
96 
97  Assert.True(service.Exists(item.Id));
98 
99  service.DeleteById(item.Id);
100 
101  Assert.False(service.Exists(item.Id));
102  }
103 
104  [Fact]
105  public void ExistsTest()
106  {
107  var service = new ScientificWorkService(GetMockContext().Object);
108 
109  var item = GetTestData().First();
110  var exists = service.Exists(item.Id);
111 
112  Assert.True(exists);
113  }
114 
115  [Fact]
116  public void DoesNotExistTest()
117  {
118  var service = new ScientificWorkService(GetMockContext().Object);
119 
120  var item = TestData.ScientificWork3;
121  var exists = service.Exists(item.Id);
122 
123  Assert.False(exists);
124  }
125 
126  [Fact]
127  public void GetAuthorsTest()
128  {
129  var scientificWork = GetTestData().First();
130 
131  var service = new Mock<ScientificWorkService>(GetMockContext().Object);
132 
133  service.Setup(item => item.GetAuthors(scientificWork.Id));
134  service.Object.GetAuthors(scientificWork.Id);
135  service.Verify(item => item.GetAuthors(scientificWork.Id));
136  }
137 
138  [Fact]
139  public void AddAuthorTest()
140  {
141  var scientificWork = GetTestData().First();
142 
143  var service = new Mock<ScientificWorkService>(GetMockContext().Object);
144 
145  service.Setup(item => item.AddAuthor(scientificWork.Id, TestData.User3.Id));
146  service.Object.AddAuthor(scientificWork.Id, TestData.User3.Id);
147  service.Verify(item => item.AddAuthor(scientificWork.Id, TestData.User3.Id));
148  }
149 
150  [Fact]
151  public void RemoveAuthorTest()
152  {
153  var scientificWork = GetTestData().First();
154 
155  var service = new Mock<ScientificWorkService>(GetMockContext().Object);
156 
157  service.Object.AddAuthor(scientificWork.Id, TestData.User3.Id);
158 
159  service.Setup(item => item.RemoveAuthor(scientificWork.Id, TestData.User3.Id));
160  service.Object.RemoveAuthor(scientificWork.Id, TestData.User3.Id);
161  service.Verify(item => item.RemoveAuthor(scientificWork.Id, TestData.User3.Id));
162  }
163  }
164 }