-
-
Notifications
You must be signed in to change notification settings - Fork 28
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #11 from dncuug/10
Fix #10
- Loading branch information
Showing
17 changed files
with
268 additions
and
255 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -172,4 +172,5 @@ pip-log.txt | |
# Mac crap | ||
.DS_Store | ||
|
||
.vs/ | ||
.vs/ | ||
.idea/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 0 additions & 2 deletions
2
...sts/IntegrationTests/SitemapGeneratorIntegrationTests/GenerateSitemapsIntegrationTests.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.IO; | ||
|
||
namespace X.Web.Sitemap.Tests | ||
{ | ||
public class TestFileSystemWrapper : IFileSystemWrapper | ||
{ | ||
public bool DirectoryExists(string pathToDirectory) | ||
{ | ||
return true; | ||
} | ||
|
||
public FileInfo WriteFile(string xmlString, DirectoryInfo targetDirectory, string targetFileName) | ||
{ | ||
var file = new FileInfo(Path.Combine(targetDirectory.FullName, targetFileName)); | ||
return file; | ||
} | ||
} | ||
} |
121 changes: 57 additions & 64 deletions
121
src/X.Web.Sitemap.Tests/UnitTests/SerializedXmlSaver/SerializeAndSaveTests.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,81 +1,74 @@ | ||
using System; | ||
using NUnit.Framework; | ||
using System; | ||
using System.Collections.Generic; | ||
using System.IO; | ||
using NSubstitute; | ||
using NSubstituteAutoMocker; | ||
using NUnit.Framework; | ||
using Shouldly; | ||
|
||
namespace X.Web.Sitemap.Tests.UnitTests.SerializedXmlSaver | ||
{ | ||
[TestFixture] | ||
public class SerializeAndSaveTests | ||
{ | ||
private NSubstituteAutoMocker<SerializedXmlSaver<SitemapIndex>> _autoMocker; | ||
[TestFixture] | ||
public class SerializeAndSaveTests | ||
{ | ||
private SerializedXmlSaver<SitemapIndex> _serializer; | ||
private IFileSystemWrapper _fileSystemWrapper; | ||
|
||
[SetUp] | ||
public void SetUp() | ||
{ | ||
_autoMocker = new NSubstituteAutoMocker<SerializedXmlSaver<SitemapIndex>>(); | ||
} | ||
[SetUp] | ||
public void SetUp() | ||
{ | ||
_fileSystemWrapper = new TestFileSystemWrapper(); | ||
_serializer = new SerializedXmlSaver<SitemapIndex>(_fileSystemWrapper); | ||
} | ||
|
||
[Test] | ||
public void It_Throws_An_ArgumentNullException_If_There_Are_No_Sitemaps_Passed_In() | ||
{ | ||
//--arrange | ||
[Test] | ||
public void It_Throws_An_ArgumentNullException_If_There_Are_No_Sitemaps_Passed_In() | ||
{ | ||
//--arrange | ||
|
||
//--act | ||
Assert.Throws<ArgumentNullException>( | ||
() => _autoMocker.ClassUnderTest.SerializeAndSave(null, new DirectoryInfo("c:\\temp"), "filename.xml")); | ||
} | ||
//--act | ||
Assert.Throws<ArgumentNullException>( | ||
() => _serializer.SerializeAndSave(null, new DirectoryInfo("c:\\temp"), "filename.xml")); | ||
} | ||
|
||
//--this is a half-assed test as comparing the full XML string that is generated is a big pain. | ||
[Test] | ||
public void It_Saves_The_XML_File_To_The_Correct_Directory_And_File_Name() | ||
{ | ||
//--arrange | ||
var directory = new DirectoryInfo("x"); | ||
string fileName = "sitemapindex.xml"; | ||
//--this is a half-assed test as comparing the full XML string that is generated is a big pain. | ||
[Test] | ||
public void It_Saves_The_XML_File_To_The_Correct_Directory_And_File_Name() | ||
{ | ||
//--arrange | ||
var directory = new DirectoryInfo("x"); | ||
var fileName = "sitemapindex.xml"; | ||
|
||
var sitemapIndex = new SitemapIndex(new List<SitemapInfo> | ||
{ | ||
new SitemapInfo(new Uri("http://example.com/sitemap1.xml"), DateTime.UtcNow), | ||
new SitemapInfo(new Uri("http://example.com/sitemap2.xml"), DateTime.UtcNow.AddDays(-1)) | ||
}); | ||
var sitemapIndex = new SitemapIndex(new List<SitemapInfo> | ||
{ | ||
new SitemapInfo(new Uri("http://example.com/sitemap1.xml"), DateTime.UtcNow), | ||
new SitemapInfo(new Uri("http://example.com/sitemap2.xml"), DateTime.UtcNow.AddDays(-1)) | ||
}); | ||
|
||
//--act | ||
_autoMocker.ClassUnderTest.SerializeAndSave( | ||
sitemapIndex, | ||
directory, | ||
fileName); | ||
//--act | ||
var result = _serializer.SerializeAndSave( | ||
sitemapIndex, | ||
directory, | ||
fileName); | ||
|
||
//--assert | ||
_autoMocker.Get<IFileSystemWrapper>().Received().WriteFile( | ||
Arg.Is<string>(x => x.Contains("<sitemapindex")), | ||
Arg.Is<DirectoryInfo>(x => x == directory), | ||
Arg.Is<string>(x => x == fileName)); | ||
} | ||
Assert.True(result.FullName.Contains("sitemapindex")); | ||
Assert.AreEqual(directory.Name, result.Directory.Name); | ||
Assert.AreEqual(fileName, result.Name); | ||
} | ||
|
||
[Test] | ||
public void It_Returns_A_File_Info_For_The_File_That_Was_Created() | ||
{ | ||
//--arrange | ||
var expectedFileInfo = new FileInfo("x"); | ||
_autoMocker.Get<IFileSystemWrapper>().WriteFile( | ||
Arg.Any<string>(), | ||
Arg.Any<DirectoryInfo>(), | ||
Arg.Any<string>()) | ||
.Returns(expectedFileInfo); | ||
[Test] | ||
public void It_Returns_A_File_Info_For_The_File_That_Was_Created() | ||
{ | ||
//--arrange | ||
var expectedFileInfo = new FileInfo("c:\\something\\file.xml"); | ||
|
||
//--act | ||
var result = _autoMocker.ClassUnderTest.SerializeAndSave( | ||
new SitemapIndex(new List<SitemapInfo>()), | ||
new DirectoryInfo("c:\\something\\"), | ||
"file.xml"); | ||
//--act | ||
var result = _serializer.SerializeAndSave( | ||
new SitemapIndex(new List<SitemapInfo>()), | ||
new DirectoryInfo("c:\\something\\"), | ||
"file.xml"); | ||
|
||
//--assert | ||
result.ShouldBeSameAs(expectedFileInfo); | ||
} | ||
|
||
} | ||
Assert.AreEqual(expectedFileInfo.FullName, result.FullName); | ||
Assert.AreEqual(expectedFileInfo.Directory, result.Directory); | ||
} | ||
|
||
} | ||
} |
116 changes: 56 additions & 60 deletions
116
src/X.Web.Sitemap.Tests/UnitTests/SitemapGeneratorTests/GenerateSitemapsTests.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,67 +1,63 @@ | ||
using NUnit.Framework; | ||
using System.Collections.Generic; | ||
using System.IO; | ||
using NSubstitute; | ||
using System.Linq; | ||
|
||
namespace X.Web.Sitemap.Tests.UnitTests.SitemapGeneratorTests | ||
{ | ||
[TestFixture] | ||
public class GenerateSitemapsTests | ||
{ | ||
private SitemapGenerator _sitemapGenerator; | ||
private ISerializedXmlSaver<Sitemap> _sitemapSerializerMock; | ||
|
||
[SetUp] | ||
public void SetUp() | ||
{ | ||
_sitemapSerializerMock = Substitute.For<ISerializedXmlSaver<Sitemap>>(); | ||
_sitemapGenerator = new SitemapGenerator(_sitemapSerializerMock); | ||
} | ||
|
||
[Test] | ||
public void It_Only_Saves_One_Sitemap_If_There_Are_Less_Than_50001_Urls() | ||
{ | ||
//--arrange | ||
var maxNumberOfUrlsForOneSitemap = SitemapGenerator.MaxNumberOfUrlsPerSitemap; | ||
var urls = new List<Url>(maxNumberOfUrlsForOneSitemap); | ||
for (var i = 0; i < maxNumberOfUrlsForOneSitemap; i++) | ||
{ | ||
urls.Add(new Url()); | ||
} | ||
|
||
//--act | ||
_sitemapGenerator.GenerateSitemaps(urls, new DirectoryInfo("x"), "file"); | ||
|
||
//--assert | ||
_sitemapSerializerMock | ||
.Received(1) | ||
.SerializeAndSave(Arg.Is<Sitemap>(x => x.Count == maxNumberOfUrlsForOneSitemap), Arg.Any<DirectoryInfo>(), Arg.Any<string>()); | ||
} | ||
|
||
[Test] | ||
public void It_Saves_Two_Sitemaps_If_There_Are_More_Than_50000_Urls_But_Less_Than_100001_And_It_Names_The_Files_With_A_Three_Digit_Suffix_Incrementing_For_Each_One() | ||
{ | ||
//--arrange | ||
var enoughForTwoSitemaps = SitemapGenerator.MaxNumberOfUrlsPerSitemap + 1; | ||
var urls = new List<Url>(enoughForTwoSitemaps); | ||
for (var i = 0; i < enoughForTwoSitemaps; i++) | ||
{ | ||
urls.Add(new Url()); | ||
} | ||
var fileName = "file"; | ||
var directory = new DirectoryInfo("x"); | ||
|
||
//--act | ||
_sitemapGenerator.GenerateSitemaps(urls, directory, fileName); | ||
|
||
//--assert | ||
_sitemapSerializerMock | ||
.Received(1) | ||
.SerializeAndSave(Arg.Is<Sitemap>(x => x.Count == SitemapGenerator.MaxNumberOfUrlsPerSitemap), Arg.Is<DirectoryInfo>(x => x == directory), Arg.Is<string>(x => x == "file-001.xml")); | ||
|
||
_sitemapSerializerMock | ||
.Received(1) | ||
.SerializeAndSave(Arg.Is<Sitemap>(x => x.Count == 1), Arg.Is<DirectoryInfo>(x => x == directory), Arg.Is<string>(x => x == "file-002.xml")); | ||
} | ||
} | ||
[TestFixture] | ||
public class GenerateSitemapsTests | ||
{ | ||
private SitemapGenerator _sitemapGenerator; | ||
private ISerializedXmlSaver<List<Url>> _sitemapSerializer; | ||
|
||
[SetUp] | ||
public void SetUp() | ||
{ | ||
_sitemapSerializer = new SerializedXmlSaver<List<Url>>(new TestFileSystemWrapper()); | ||
_sitemapGenerator = new SitemapGenerator(_sitemapSerializer); | ||
} | ||
|
||
[Test] | ||
public void It_Only_Saves_One_Sitemap_If_There_Are_Less_Than_50001_Urls() | ||
{ | ||
var filesCount = 4; | ||
var recordsCount = (SitemapGenerator.MaxNumberOfUrlsPerSitemap * 3) + 5; | ||
var urls = new List<Url>(); | ||
|
||
for (var i = 0; i < recordsCount; i++) | ||
{ | ||
urls.Add(new Url()); | ||
} | ||
|
||
var result = _sitemapGenerator.GenerateSitemaps(urls, new DirectoryInfo("x"), "file"); | ||
|
||
Assert.AreEqual(filesCount, result.Count); | ||
} | ||
|
||
[Test] | ||
public void It_Saves_Two_Sitemaps_If_There_Are_More_Than_50000_Urls_But_Less_Than_100001_And_It_Names_The_Files_With_A_Three_Digit_Suffix_Incrementing_For_Each_One() | ||
{ | ||
//--arrange | ||
var enoughForTwoSitemaps = SitemapGenerator.MaxNumberOfUrlsPerSitemap + 1; | ||
var urls = new List<Url>(enoughForTwoSitemaps); | ||
var filesCount = 2; | ||
|
||
for (var i = 0; i < enoughForTwoSitemaps; i++) | ||
{ | ||
urls.Add(new Url()); | ||
} | ||
|
||
var fileName = "file"; | ||
var directory = new DirectoryInfo("x"); | ||
|
||
//--act | ||
var result = _sitemapGenerator.GenerateSitemaps(urls, directory, fileName); | ||
|
||
Assert.AreEqual(filesCount, result.Count); | ||
Assert.True(result.All(o => o.Directory.Name == directory.Name)); | ||
Assert.True(result.Any(o => o.Name == "file-001.xml")); | ||
Assert.True(result.Any(o => o.Name == "file-002.xml")); | ||
} | ||
} | ||
} |
Oops, something went wrong.