Skip to content

Instantly share code, notes, and snippets.

@marcduiker
Last active August 29, 2015 14:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marcduiker/1d1ee9a16436501eaaae to your computer and use it in GitHub Desktop.
Save marcduiker/1d1ee9a16436501eaaae to your computer and use it in GitHub Desktop.
using System;
using Moq;
using NUnit.Framework;
using Sitecore.Data;
using Sitecore.Data.Items;
using Sitecore.FakeDb;
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 AuthorProviderBasedOnRegularItem class.
/// </summary>
[TestFixture]
[Category("Requires Sitecore.FakeDb and Sitecore license")]
public class AuthorProviderBasedOnRegularItemTests
{
[Test]
public void GetAuthor_WithValidAuthorBasedOnRegularItem_ReturnsAuthorObject()
{
using (var fakeDb = new Db())
{
// Arrange
var authorId = new ID(Guid.NewGuid());
var templateId = new ID(AuthorTemplate.TemplateId);
DbItem fakeDbItem = GetFakeAuthorDbItem("John West", "Sitecore", authorId, templateId);
fakeDb.Add(fakeDbItem);
var fakeAuthorItem = fakeDb.GetItem(authorId);
var itemProviderMock = GetItemProviderMock(fakeAuthorItem);
var authorProvider = new AuthorProviderBasedOnRegularItem(itemProviderMock.Object);
// Act
Author result = authorProvider.GetAuthor(authorId);
// Assert
Assert.AreEqual("John West", result.Name);
}
}
private DbItem GetFakeAuthorDbItem(string authorName, string authorCompany, ID itemId, ID templateId)
{
return new DbItem(authorName, itemId, templateId)
{
{ AuthorTemplate.Fields.AuthorName, authorName },
{ AuthorTemplate.Fields.AuthorCompany, authorCompany }
};
}
private Mock<IItemProvider> GetItemProviderMock(Item authorItem)
{
var itemProviderMock = new Mock<IItemProvider>();
itemProviderMock.Setup(mock => mock.GetItem(It.IsAny<ID>())).Returns(authorItem);
return itemProviderMock;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment