Skip to content

Instantly share code, notes, and snippets.

@marcduiker
Created November 22, 2014 21:46
Show Gist options
  • Save marcduiker/1cd13b5807dcf40ac7df to your computer and use it in GitHub Desktop.
Save marcduiker/1cd13b5807dcf40ac7df to your computer and use it in GitHub Desktop.
using System;
using Moq;
using NUnit.Framework;
using Sitecore.Data;
using SitecorePlayground.Common.Interfaces.Adapters;
using SitecorePlayground.Common.Interfaces.Providers;
using SitecorePlayground.News.Models;
using SitecorePlayground.News.Providers;
using SitecorePlayground.News.Templates;
namespace SitecorePlayground.News.Test.Providers
{
/// <summary>
/// Unit tests for the AuthorProviderBasedOnItemAdapter.
/// </summary>
[TestFixture]
public class AuthorProviderBasedOnItemAdapterTests
{
[Test]
public void GetAuthor_WithValidAuthorBasedOnItemAdapter_ReturnsAuthorObject()
{
// Arrange
var authorItemId = new ID(Guid.NewGuid());
var authorItemMock = GetAuthorItemMock(authorItemId, "John West", "Sitecore");
var itemProviderMock = GetItemProviderMock(authorItemMock.Object);
var authorProvider = new AuthorProviderBasedOnItemAdapter(itemProviderMock.Object);
// Act
Author result = authorProvider.GetAuthor(authorItemId);
// Assert
Assert.AreEqual("John West", result.Name);
}
private Mock<IItemProvider> GetItemProviderMock(IItemAdapter authorItem)
{
var itemProviderMock = new Mock<IItemProvider>();
itemProviderMock.Setup(mock => mock.GetItemAdapter(It.IsAny<ID>()))
.Returns(authorItem);
return itemProviderMock;
}
private static Mock<IItemAdapter> GetAuthorItemMock(ID itemId, string authorName, string companyName)
{
var itemMock = new Mock<IItemAdapter>();
itemMock.SetupGet(mock => mock.TemplateId).Returns(new ID(AuthorTemplate.TemplateId));
itemMock.SetupGet(mock => mock.Id).Returns(itemId);
itemMock.SetupGet(mock => mock[AuthorTemplate.Fields.AuthorName]).Returns(authorName);
itemMock.SetupGet(mock => mock[AuthorTemplate.Fields.AuthorCompany]).Returns(companyName);
return itemMock;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment