Filtration/Filtration.Tests/Services/TestItemFilterPersistenceSe...

126 lines
5.0 KiB
C#
Raw Permalink Normal View History

2015-06-18 17:12:15 -04:00
using System.IO;
2015-07-31 14:45:51 -04:00
using System.Threading.Tasks;
2015-06-26 12:42:20 -04:00
using Filtration.Common.Services;
2015-06-24 14:57:16 -04:00
using Filtration.ObjectModel;
using Filtration.Parser.Interface.Services;
2015-06-04 13:15:54 -04:00
using Filtration.Services;
using Moq;
using NUnit.Framework;
namespace Filtration.Tests.Services
{
[TestFixture]
public class TestItemFilterPersistenceService
2015-06-04 13:15:54 -04:00
{
[Test]
2015-07-31 14:45:51 -04:00
public async Task LoadItemFilterScript_CallsTranslatorAndFileSystemService()
2015-06-04 13:15:54 -04:00
{
// Arrange
const string testInputPath = "C:\\Test Path\\Script.Filter";
const string testScriptString = "This is a test item filter script";
var testItemFilterScript = new ItemFilterScript();
2015-06-04 13:15:54 -04:00
var mockFileSystemService = new Mock<IFileSystemService>();
mockFileSystemService.Setup(s => s.ReadFileAsString(testInputPath)).Returns(testScriptString).Verifiable();
2015-06-04 13:15:54 -04:00
var mockItemFilterScriptTranslator = new Mock<IItemFilterScriptTranslator>();
mockItemFilterScriptTranslator.Setup(t => t.TranslateStringToItemFilterScript(testScriptString)).Returns(testItemFilterScript).Verifiable();
2015-06-04 13:15:54 -04:00
var service = new ItemFilterPersistenceService(mockFileSystemService.Object, mockItemFilterScriptTranslator.Object);
2015-06-04 13:15:54 -04:00
// Act
var script = await service.LoadItemFilterScriptAsync(testInputPath);
2015-06-04 13:15:54 -04:00
// Assert
mockFileSystemService.Verify();
mockItemFilterScriptTranslator.Verify();
Assert.AreEqual(testItemFilterScript, script);
2015-06-04 13:15:54 -04:00
}
[Test]
2015-07-31 14:45:51 -04:00
public async Task SaveItemFilterScript_CallsTranslatorAndFileSystemService()
2015-06-04 13:15:54 -04:00
{
// Arrange
var testFilePath = "C:\\Test\\File.txt";
var testScript = new ItemFilterScript {FilePath = testFilePath};
2015-06-04 13:15:54 -04:00
var testTranslatedScript = "Test translated script";
var mockFileSystemService = new Mock<IFileSystemService>();
mockFileSystemService.Setup(s => s.WriteFileFromString(testFilePath, testTranslatedScript)).Verifiable();
var mockItemFilterScriptTranslator = new Mock<IItemFilterScriptTranslator>();
mockItemFilterScriptTranslator.Setup(t => t.TranslateItemFilterScriptToString(testScript)).Returns(testTranslatedScript).Verifiable();
2015-06-04 13:15:54 -04:00
var service = new ItemFilterPersistenceService(mockFileSystemService.Object, mockItemFilterScriptTranslator.Object);
2015-06-04 13:15:54 -04:00
// Act
2015-07-31 14:45:51 -04:00
await service.SaveItemFilterScriptAsync(testScript);
2015-06-04 13:15:54 -04:00
// Assert
mockFileSystemService.Verify();
mockItemFilterScriptTranslator.Verify();
2015-06-04 13:15:54 -04:00
}
[Test]
public void DefaultPathOfExileDirectoryExists_CallsFileSystemServiceWithCorrectString()
{
// Arrange
const string testUserProfilePath = "C:\\Users\\TestUser";
2015-06-04 13:15:54 -04:00
var mockFileSystemService = new Mock<IFileSystemService>();
mockFileSystemService.Setup(f => f.GetUserProfilePath()).Returns(testUserProfilePath).Verifiable();
mockFileSystemService.Setup(f => f.DirectoryExists(testUserProfilePath + "\\Documents\\My Games\\Path of Exile")).Returns(true).Verifiable();
2015-06-04 13:15:54 -04:00
var mockItemFilterScriptTranslator = new Mock<IItemFilterScriptTranslator>();
2015-06-04 13:15:54 -04:00
var service = new ItemFilterPersistenceService(mockFileSystemService.Object, mockItemFilterScriptTranslator.Object);
2015-06-04 13:15:54 -04:00
// Act
2015-06-24 14:57:16 -04:00
service.DefaultPathOfExileDirectory();
2015-06-04 13:15:54 -04:00
// Assert
mockFileSystemService.Verify();
}
2015-06-18 17:12:15 -04:00
[Test]
public void SetItemFilterScriptDirectory_InvalidPath_ThrowsDirectoryNotFoundException()
{
// Arrange
var testInputPath = "C:\\Test\\Path";
var mockFileSystemService = new Mock<IFileSystemService>();
mockFileSystemService.Setup(f => f.DirectoryExists(testInputPath)).Returns(false).Verifiable();
var mockItemFilterScriptTranslator = new Mock<IItemFilterScriptTranslator>();
var service = new ItemFilterPersistenceService(mockFileSystemService.Object, mockItemFilterScriptTranslator.Object);
// Act
// Assert
Assert.Throws<DirectoryNotFoundException>(() => service.SetItemFilterScriptDirectory(testInputPath));
}
[Test]
public void SetItemFilterScriptDirectory_ValidPath_SetsItemFilterScriptDirectory()
{
// Arrange
var testInputPath = "C:\\Test\\Path";
var mockFileSystemService = new Mock<IFileSystemService>();
mockFileSystemService.Setup(f => f.DirectoryExists(testInputPath)).Returns(true).Verifiable();
var mockItemFilterScriptTranslator = new Mock<IItemFilterScriptTranslator>();
var service = new ItemFilterPersistenceService(mockFileSystemService.Object, mockItemFilterScriptTranslator.Object);
// Act
service.SetItemFilterScriptDirectory(testInputPath);
// Assert
Assert.AreEqual(testInputPath, service.ItemFilterScriptDirectory);
}
2015-06-04 13:15:54 -04:00
}
}