ScientificReport
PublicationServiceTests.cs
Go to the documentation of this file.
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Microsoft.EntityFrameworkCore;
5 using Moq;
9 using Xunit;
10 
11 namespace ScientificReport.Test.ServicesTests
12 {
14  {
15  private readonly Mock<ScientificReportDbContext> _mockContext = GetMockContext();
16 
17  private static IEnumerable<Publication> GetTestData()
18  {
19  return new[]
20  {
21  TestData.Publication1,
22  TestData.Publication2,
23  TestData.Publication3
24  };
25  }
26 
27  private static Mock<ScientificReportDbContext> GetMockContext()
28  {
29  var list = GetTestData().AsQueryable();
30  var mockContext = new Mock<ScientificReportDbContext>();
31  mockContext.Setup(item => item.Publications).Returns(MockProvider.GetMockSet(list).Object);
32  return mockContext;
33  }
34 
35  [Fact]
36  public void GetAllTest()
37  {
38  var list = GetTestData().AsQueryable();
39 
40  var mockContext = new Mock<ScientificReportDbContext>();
41  mockContext.Setup(item => item.Publications).Returns(MockProvider.GetMockSet(list).Object);
42 
43  var service = new PublicationService(mockContext.Object);
44 
45  var actual = service.GetAll();
46 
47  Assert.Equal(list.Count(), actual.Count());
48  }
49 
50  [Fact]
51  public void GetAllWhereTest()
52  {
53  var service = new PublicationService(_mockContext.Object);
54  var actual = service.GetAllWhere(u => u.Id.Equals(TestData.Publication1.Id));
55  Assert.Single(actual);
56  }
57 
58  [Fact]
59  public void GetByIdTest()
60  {
61  var expected = GetTestData().First();
62 
63  var service = new Mock<PublicationService>(_mockContext.Object);
64 
65  service.Object.CreateItem(expected);
66 
67  service.Setup(item => item.GetById(expected.Id));
68  service.Object.GetById(expected.Id);
69  service.Verify(item => item.GetById(expected.Id));
70  }
71 
72  [Fact]
73  public void CreateItemTest()
74  {
75  var service = new Mock<PublicationService>(_mockContext.Object);
76 
77  var expectedPublication = TestData.Publication1;
78 
79  service.Setup(it => it.CreateItem(expectedPublication));
80  service.Object.CreateItem(expectedPublication);
81  service.Verify(it => it.CreateItem(expectedPublication), Times.Once);
82  }
83 
84  [Fact]
85  public void UpdateItemTest()
86  {
87  var mockDbSet = new Mock<DbSet<Publication>>();
88  var mockContext = new Mock<ScientificReportDbContext>();
89 
90  mockContext.Setup(item => item.Publications).Returns(mockDbSet.Object);
91 
92  var service = new PublicationService(mockContext.Object);
93 
94  var publication = GetTestData().First();
95 
96  service.CreateItem(publication);
97  service.UpdateItem(publication);
98 
99  mockDbSet.Verify(m => m.Update(It.IsAny<Publication>()), Times.Once());
100  }
101 
102  [Fact]
103  public void DeleteItemTest()
104  {
105  var service = new Mock<PublicationService>(_mockContext.Object);
106 
107  var publication = GetTestData().First();
108 
109  service.Setup(x => x.DeleteById(publication.Id));
110  service.Object.DeleteById(publication.Id);
111  service.Verify(i => i.DeleteById(publication.Id));
112  }
113 
114  [Fact]
115  public void PublicationExistsTest()
116  {
117  var service = new Mock<PublicationService>(_mockContext.Object);
118 
119  var publication = GetTestData().First();
120  service.Object.CreateItem(publication);
121 
122  service.Setup(a => a.PublicationExists(publication.Id));
123  service.Object.PublicationExists(publication.Id);
124  service.Verify(a => a.PublicationExists(publication.Id));
125  }
126 
127  [Fact]
129  {
130  var service = new Mock<PublicationService>(_mockContext.Object);
131 
132  var guid = Guid.NewGuid();
133  service.Setup(a => a.PublicationExists(guid));
134  service.Object.PublicationExists(guid);
135  service.Verify(a => a.PublicationExists(guid));
136  }
137 
138  [Fact]
140  {
141  var service = new Mock<PublicationService>(_mockContext.Object);
142 
143  service.Setup(a => a.PublicationExists(TestData.Publication1.Id));
144  service.Object.PublicationExists(TestData.Publication1.Id);
145  service.Verify(a => a.PublicationExists(TestData.Publication1.Id));
146  }
147  }
148 }