ScientificReport
ArticleServiceTests.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 {
12  public class ArticleServiceTests
13  {
14  private readonly Mock<DbSet<Article>> _mockDbSet = MockProvider.GetMockSet(GetTestData().AsQueryable());
15 
16  private static IEnumerable<Article> GetTestData()
17  {
18  return new[]
19  {
20  TestData.Article1,
21  TestData.Article2
22  };
23  }
24 
25  private Mock<ScientificReportDbContext> GetMockContext()
26  {
27  var mockContext = new Mock<ScientificReportDbContext>();
28  mockContext.Setup(item => item.Articles).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.Articles).Returns(MockProvider.GetMockSet(list).Object);
39  var service = new ArticleService(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 ArticleService(GetMockContext().Object);
50  var actual = service.GetAllWhere(u => u.Id.Equals(TestData.Article1.Id));
51  Assert.Single(actual);
52  }
53 
54  [Fact]
55  public void GetByIdTest()
56  {
57  var expected = GetTestData().First();
58  var service = new ArticleService(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 ArticleService(GetMockContext().Object);
70 
71  var expected = TestData.Article3;
72  service.CreateItem(expected);
73 
74  _mockDbSet.Verify(m => m.Add(It.IsAny<Article>()), Times.Once);
75  }
76 
77  [Fact]
78  public void UpdateItemTest()
79  {
80  var service = new ArticleService(GetMockContext().Object);
81 
82  var expected = GetTestData().First();
83  expected.Title = TestData.Article3.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 ArticleService(mockContext.Object);
94 
95  var item = mockContext.Object.Articles.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 ArticleService(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 ArticleService(GetMockContext().Object);
119 
120  var item = TestData.Article3;
121  var exists = service.Exists(item.Id);
122 
123  Assert.False(exists);
124  }
125 
126  [Fact]
127  public void GetAuthorsTest()
128  {
129  var service = new Mock<ArticleService>(GetMockContext().Object);
130 
131  var article = _mockDbSet.Object.FirstOrDefault();
132 
133  Assert.NotNull(article);
134 
135  var actual = service.Object.GetAuthors(article.Id);
136 
137  Assert.NotNull(actual);
138 
139  service.Verify(m => m.GetAuthors(article.Id), Times.Once);
140  }
141 
142  [Fact]
143  public void GetPageTest()
144  {
145  var service = new ArticleService(GetMockContext().Object);
146  var expectedArticles = _mockDbSet.Object.AsQueryable();
147 
148  Assert.NotNull(expectedArticles);
149 
150  var count = expectedArticles.Count();
151  var actualArticles = service.GetPage(1, count);
152 
153  Assert.NotNull(actualArticles);
154  Assert.Equal(count, actualArticles.Count());
155  }
156 
157  [Fact]
158  public void GetCountTest()
159  {
160  var service = new ArticleService(GetMockContext().Object);
161  var expectedArticles = _mockDbSet.Object.AsQueryable();
162 
163  Assert.Equal(expectedArticles.Count(), service.GetCount());
164  }
165  }
166 }