Files
Umbraco-CMS/src/Umbraco.Tests/Persistence/Caching/InMemoryCacheProviderTest.cs
Shannon Deminick adedc9b64b Ensures mocked test entities don't have dirty properties on initialization. Ensures content xml structure
is rebuilt when a content type's alias is changed or a property type is removed from it. Adds ability  to rebuild
content xml structures for specified content types, not for all content. Adds ContentTypeExtensions and
more unit tests for ContentTypeTests. Changes RuntimeCacheProvider to use new ConcurrentHashSet instead of a dictionary
with the same key/value. Adds overload to IRepositoryCacheProvider to clear cache by type. Clears the IContent cache when
a Content type is saved.
All relates to fixing #U4-1943
2013-03-20 20:53:12 +06:00

118 lines
5.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using NUnit.Framework;
using Umbraco.Core;
using Umbraco.Core.Persistence.Caching;
using Umbraco.Tests.TestHelpers.Entities;
namespace Umbraco.Tests.Persistence.Caching
{
[TestFixture]
public class InMemoryCacheProviderTest
{
private IRepositoryCacheProvider _registry;
[SetUp]
public void Initiate_Registry()
{
_registry = InMemoryCacheProvider.Current;
//Fill the registry with random entities
var entity1 = new MockedEntity { Id = 1, Key = 1.ToGuid(), Alias = "mocked1", Name = "Mocked1", Value = Guid.NewGuid().ToString("n") };
var entity2 = new MockedEntity { Id = 2, Key = 2.ToGuid(), Alias = "mocked2", Name = "Mocked2", Value = Guid.NewGuid().ToString("n") };
var entity3 = new MockedEntity { Id = 3, Key = 3.ToGuid(), Alias = "mocked3", Name = "Mocked3", Value = Guid.NewGuid().ToString("n") };
var entity4 = new MockedEntity { Id = 4, Key = 4.ToGuid(), Alias = "mocked4", Name = "Mocked4", Value = Guid.NewGuid().ToString("n") };
var entity5 = new MockedEntity { Id = 5, Key = 5.ToGuid(), Alias = "mocked5", Name = "Mocked5", Value = Guid.NewGuid().ToString("n") };
var entity6 = new MockedEntity { Id = 6, Key = 6.ToGuid(), Alias = "mocked6", Name = "Mocked6", Value = Guid.NewGuid().ToString("n") };
_registry.Save(typeof(MockedEntity), entity1);
_registry.Save(typeof(MockedEntity), entity2);
_registry.Save(typeof(MockedEntity), entity3);
_registry.Save(typeof(MockedEntity), entity4);
_registry.Save(typeof(MockedEntity), entity5);
_registry.Save(typeof(MockedEntity), entity6);
}
[Test]
public void Can_Clear_By_Type()
{
var customObj1 = new CustomMockedEntity { Id = 5, Key = 5.ToGuid(), Alias = "mocked5", Name = "Mocked5", Value = Guid.NewGuid().ToString("n") };
var customObj2 = new CustomMockedEntity { Id = 6, Key = 6.ToGuid(), Alias = "mocked6", Name = "Mocked6", Value = Guid.NewGuid().ToString("n") };
_registry.Save(typeof(CustomMockedEntity), customObj1);
_registry.Save(typeof(CustomMockedEntity), customObj2);
Assert.AreEqual(2, _registry.GetAllByType(typeof(CustomMockedEntity)).Count());
_registry.Clear(typeof(CustomMockedEntity));
Assert.AreEqual(0, _registry.GetAllByType(typeof(CustomMockedEntity)).Count());
}
[Test]
public void Can_Get_Entity_From_Registry()
{
// Arrange
var mockedEntity = new MockedEntity { Id = 20, Key = 20.ToGuid(), Alias = "getMocked", Name = "GetMocked", Value = "Getting entity by id test" };
_registry.Save(typeof(MockedEntity), mockedEntity);
// Act
var entity = _registry.GetById(mockedEntity.GetType(), mockedEntity.Key);
// Assert
Assert.That(entity, Is.Not.Null);
Assert.That(entity.Id, Is.EqualTo(mockedEntity.Id));
Assert.That(entity.GetType(), Is.EqualTo(mockedEntity.GetType()));
}
[Test]
public void Can_Get_Entities_By_Ids_From_Registry()
{
// Arrange
var mockedEntity1 = new MockedEntity { Id = 30, Key = 30.ToGuid(), Alias = "getMocked1", Name = "GetMocked1", Value = "Entity 1 - Getting entity by ids test" };
var mockedEntity2 = new MockedEntity { Id = 31, Key = 31.ToGuid(), Alias = "getMocked2", Name = "GetMocked2", Value = "Entity 2 - Getting entity by ids test" };
_registry.Save(typeof(MockedEntity), mockedEntity1);
_registry.Save(typeof(MockedEntity), mockedEntity2);
// Act
var entities = _registry.GetByIds(typeof(MockedEntity), new List<Guid> { mockedEntity1.Key, mockedEntity2.Key }).ToList();
// Assert
Assert.That(entities, Is.Not.Null);
Assert.That(entities.Count(), Is.EqualTo(2));
Assert.That(entities.Any(x => x.Id == mockedEntity1.Id), Is.True);
Assert.That(entities.Any(x => x.Id == mockedEntity2.Id), Is.True);
}
[Test]
public void Can_Get_Entities_By_Type_From_Registry()
{
var entities = _registry.GetAllByType(typeof(MockedEntity));
Assert.That(entities, Is.Not.Null);
Assert.That(entities.Any(), Is.True);
Assert.That(entities.Count(), Is.GreaterThanOrEqualTo(6));
}
[Test]
public void Can_Delete_Entity_From_Registry()
{
// Arrange
var mockedEntity = new MockedEntity { Id = 40, Key = 40.ToGuid(), Alias = "deleteMocked", Name = "DeleteMocked", Value = "Deleting entity test" };
_registry.Save(typeof(MockedEntity), mockedEntity);
var entitiesBeforeDeletion = _registry.GetAllByType(typeof(MockedEntity));
int countBefore = entitiesBeforeDeletion.Count();
// Act
var entity = _registry.GetById(mockedEntity.GetType(), mockedEntity.Key);
_registry.Delete(typeof(MockedEntity), entity);
var entitiesAfterDeletion = _registry.GetAllByType(typeof(MockedEntity));
int countAfter = entitiesAfterDeletion.Count();
// Assert
Assert.That(countBefore, Is.GreaterThan(countAfter));
Assert.That(entitiesAfterDeletion.Count(x => x.Id == mockedEntity.Id), Is.EqualTo(0));
}
}
}