Skip to content

Commit e33eead

Browse files
loic-sharmatomzo
authored andcommitted
Start unit tests
upstream cherry-pick 4a7c1b8
1 parent 5ae2360 commit e33eead

File tree

3 files changed

+403
-0
lines changed

3 files changed

+403
-0
lines changed
Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
using System.IO;
2+
using System.Threading.Tasks;
3+
using BaGet.Core.Services;
4+
using Xunit;
5+
6+
namespace BaGet.Core.Tests.Services
7+
{
8+
public class FilePackageStorageServiceTests
9+
{
10+
public class SavePackageContentAsync : FactsBase
11+
{
12+
[Fact]
13+
public async Task ThrowsIfPackageStreamIsNull()
14+
{
15+
await Task.Yield();
16+
}
17+
18+
[Fact]
19+
public async Task ThrowsIfNuspecStreamIsNull()
20+
{
21+
await Task.Yield();
22+
}
23+
24+
[Fact]
25+
public async Task DoesNotThrowIfReadmeStreamIsNull()
26+
{
27+
await Task.Yield();
28+
}
29+
30+
[Fact]
31+
public async Task SavesContent()
32+
{
33+
// TODO: Should lowercase id/version
34+
// TODO: Should normalize version
35+
// TODO: Test that a directory was created for the package
36+
// TODO: Verify content.
37+
await Task.Yield();
38+
}
39+
40+
[Fact]
41+
public async Task DoesNotThrowIfContentAlreadyExistsAndContentsMatch()
42+
{
43+
await Task.Yield();
44+
}
45+
46+
[Fact]
47+
public async Task ThrowsIfContentAlreadyExistsButContentsDoNotMatch()
48+
{
49+
await Task.Yield();
50+
}
51+
}
52+
53+
public class GetPackageStreamAsync : FactsBase
54+
{
55+
[Fact]
56+
public async Task ThrowsIfDoesntExist()
57+
{
58+
await Task.Yield();
59+
}
60+
61+
[Fact]
62+
public async Task GetsStream()
63+
{
64+
// TODO: Should lowercase id/version
65+
// TODO: Should normalize version
66+
await Task.Yield();
67+
}
68+
}
69+
70+
public class GetNuspecStreamAsync : FactsBase
71+
{
72+
[Fact]
73+
public async Task ThrowsIfDoesntExist()
74+
{
75+
await Task.Yield();
76+
}
77+
78+
[Fact]
79+
public async Task GetsStream()
80+
{
81+
// TODO: Should lowercase id/version
82+
// TODO: Should normalize version
83+
await Task.Yield();
84+
}
85+
}
86+
87+
public class GetReadmeStreamAsync : FactsBase
88+
{
89+
[Fact]
90+
public async Task ThrowsIfDoesntExist()
91+
{
92+
await Task.Yield();
93+
}
94+
95+
[Fact]
96+
public async Task GetsStream()
97+
{
98+
// TODO: Should lowercase id/version
99+
// TODO: Should normalize version
100+
await Task.Yield();
101+
}
102+
}
103+
104+
public class DeleteAsync : FactsBase
105+
{
106+
[Fact]
107+
public async Task DoesNotThrowIfPackagePathDoesNotExist()
108+
{
109+
await Task.Yield();
110+
}
111+
112+
[Theory]
113+
[InlineData(false, false, false)]
114+
[InlineData(false, false, true)]
115+
[InlineData(false, true, false)]
116+
[InlineData(false, true, true)]
117+
[InlineData(true, false, false)]
118+
[InlineData(true, false, true)]
119+
[InlineData(true, true, false)]
120+
[InlineData(true, true, true)]
121+
public async Task DeletesAnyExistingContent(bool packageExists, bool nuspecExists, bool readmeExists)
122+
{
123+
// TODO: Should lowercase id/version
124+
// TODO: Should normalize version
125+
await Task.Yield();
126+
}
127+
}
128+
129+
public class FactsBase
130+
{
131+
protected readonly string _storePath;
132+
protected readonly FilePackageStorageService _target;
133+
134+
public FactsBase()
135+
{
136+
_storePath = Path.Combine(Path.GetTempPath(), System.Guid.NewGuid().ToString("N"));
137+
_target = new FilePackageStorageService(_storePath);
138+
}
139+
}
140+
}
141+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
using System.Threading.Tasks;
2+
using BaGet.Core.Services;
3+
using Microsoft.Extensions.Logging;
4+
using Moq;
5+
using Xunit;
6+
7+
namespace BaGet.Core.Tests.Services
8+
{
9+
public class IndexingServiceTests
10+
{
11+
private readonly Mock<IPackageService> _packages;
12+
private readonly Mock<IPackageStorageService> _storage;
13+
private readonly Mock<ISearchService> _search;
14+
private readonly IndexingService _target;
15+
16+
public IndexingServiceTests()
17+
{
18+
_packages = new Mock<IPackageService>();
19+
_storage = new Mock<IPackageStorageService>();
20+
_search = new Mock<ISearchService>();
21+
22+
_target = new IndexingService(
23+
_packages.Object,
24+
_storage.Object,
25+
_search.Object,
26+
Mock.Of<ILogger<IndexingService>>());
27+
}
28+
29+
// TODO: Add malformed package tests
30+
31+
[Fact]
32+
public async Task WhenPackageAlreadyExists_ReturnsPackageAlreadyExists()
33+
{
34+
await Task.Yield();
35+
}
36+
37+
[Fact]
38+
public async Task WhenDatabaseAddFailsBecausePackageAlreadyExists_ReturnsPackageAlreadyExists()
39+
{
40+
await Task.Yield();
41+
}
42+
43+
[Fact]
44+
public async Task IndexesPackage()
45+
{
46+
await Task.Yield();
47+
}
48+
49+
[Fact]
50+
public async Task WhenPackageHasNoReadme_SavesNullReadmeStream()
51+
{
52+
await Task.Yield();
53+
}
54+
55+
[Fact]
56+
public async Task ThrowsWhenStorageSaveThrows()
57+
{
58+
await Task.Yield();
59+
}
60+
}
61+
}

0 commit comments

Comments
 (0)