Added ItemFilterScriptRepository

This commit is contained in:
Ben
2015-06-18 22:12:15 +01:00
parent e25fbe67eb
commit 72e9caec29
9 changed files with 305 additions and 59 deletions

View File

@@ -50,6 +50,7 @@
<Compile Include="Models\TestItemFilterBlockGroup.cs" />
<Compile Include="Models\TestItemFilterScript.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Repositories\TestItemFilterScriptRepository.cs" />
<Compile Include="Services\TestItemFilterPersistenceService.cs" />
<Compile Include="Services\TestStaticDataService.cs" />
<Compile Include="Translators\TestBlockGroupHierarchyBuilder.cs" />

View File

@@ -0,0 +1,123 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Filtration.Repositories;
using Filtration.Services;
using Filtration.ViewModels;
using Moq;
using NUnit.Framework;
namespace Filtration.Tests.Repositories
{
[TestFixture]
public class TestItemFilterScriptRepository
{
[Test]
public void LoadScriptFromFile_CallsPersistenceServiceUsingPathAndReturnsViewModel()
{
// Arrange
var testInputPath = "C:\\TestPath.filter";
var mockPersistenceService = new Mock<IItemFilterPersistenceService>();
mockPersistenceService.Setup(p => p.LoadItemFilterScript(testInputPath)).Verifiable();
var mockItemFilterScriptViewModel = new Mock<IItemFilterScriptViewModel>();
var mockItemFilterScriptViewModelFactory = new Mock<IItemFilterScriptViewModelFactory>();
mockItemFilterScriptViewModelFactory.Setup(f => f.Create()).Returns(mockItemFilterScriptViewModel.Object);
var repository = new ItemFilterScriptRepository(mockPersistenceService.Object, mockItemFilterScriptViewModelFactory.Object);
// Act
var result = repository.LoadScriptFromFile(testInputPath);
// Assert
mockPersistenceService.Verify();
Assert.AreEqual(mockItemFilterScriptViewModel.Object, result);
}
[Test]
public void LoadScriptFromFile_PersistenceServiceThrows_ThrowsIOException()
{
// Arrange
var testInputPath = "C:\\TestPath.filter";
var mockPersistenceService = new Mock<IItemFilterPersistenceService>();
mockPersistenceService.Setup(p => p.LoadItemFilterScript(testInputPath)).Throws<IOException>();
var mockItemFilterScriptViewModelFactory = new Mock<IItemFilterScriptViewModelFactory>();
var repository = new ItemFilterScriptRepository(mockPersistenceService.Object, mockItemFilterScriptViewModelFactory.Object);
// Act
// Assert
Assert.Throws<IOException>(() => repository.LoadScriptFromFile(testInputPath));
}
[Test]
public void SetItemFilterScriptDirectory_CallsPersistenceServiceSetItemFilterScriptDirectory()
{
// Arrange
var testInputPath = "C:\\Test\\Path";
var mockPersistenceService = new Mock<IItemFilterPersistenceService>();
mockPersistenceService.Setup(p => p.SetItemFilterScriptDirectory(testInputPath)).Verifiable();
var mockItemFilterScriptViewModelFactory = new Mock<IItemFilterScriptViewModelFactory>();
var repository = new ItemFilterScriptRepository(mockPersistenceService.Object, mockItemFilterScriptViewModelFactory.Object);
// Act
repository.SetItemFilterScriptDirectory(testInputPath);
// Assert
mockPersistenceService.Verify();
}
[Test]
public void GetItemFilterScriptDirectory_ReturnsItemFilterScriptDirectoryFromPersistenceService()
{
// Arrange
var testInputPath = "C:\\Test\\Path";
var mockPersistenceService = new Mock<IItemFilterPersistenceService>();
mockPersistenceService.SetupGet(p => p.ItemFilterScriptDirectory).Returns(testInputPath).Verifiable();
var mockItemFilterScriptViewModelFactory = new Mock<IItemFilterScriptViewModelFactory>();
var repository = new ItemFilterScriptRepository(mockPersistenceService.Object, mockItemFilterScriptViewModelFactory.Object);
// Act
string result = repository.GetItemFilterScriptDirectory();
// Assert
mockPersistenceService.Verify();
Assert.AreEqual(result, testInputPath);
}
[Test]
public void NewScript_ReturnsScriptFromViewModelFactory()
{
// Arrange
var mockPersistenceService = new Mock<IItemFilterPersistenceService>();
var mockItemFilterScriptViewModel = new Mock<IItemFilterScriptViewModel>();
var mockItemFilterScriptViewModelFactory = new Mock<IItemFilterScriptViewModelFactory>();
mockItemFilterScriptViewModelFactory.Setup(f => f.Create()).Returns(mockItemFilterScriptViewModel.Object);
var repository = new ItemFilterScriptRepository(mockPersistenceService.Object, mockItemFilterScriptViewModelFactory.Object);
// Act
IItemFilterScriptViewModel result = repository.NewScript();
// Assert
Assert.AreEqual(mockItemFilterScriptViewModel.Object, result);
}
}
}

View File

@@ -1,4 +1,5 @@
using Filtration.Models;
using System.IO;
using Filtration.Models;
using Filtration.Services;
using Filtration.Translators;
using Moq;
@@ -79,5 +80,44 @@ namespace Filtration.Tests.Services
// Assert
mockFileSystemService.Verify();
}
[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);
}
}
}