// ========================================================================== // DefaultDomainObjectFactoryTests.cs // Squidex Headless CMS // ========================================================================== // Copyright (c) Squidex Group // All rights reserved. // ========================================================================== using System; using FakeItEasy; using Squidex.Infrastructure.CQRS.Events; using Xunit; namespace Squidex.Infrastructure.CQRS.Commands { public class DefaultDomainObjectFactoryTests { private readonly IServiceProvider serviceProvider = A.Fake(); private sealed class DO : DomainObjectBase { public DO(Guid id, int version) : base(id, version) { } protected override void DispatchEvent(Envelope @event) { } } [Fact] public void Should_create_domain_object_with_autofac() { var factoryFunction = new DomainObjectFactoryFunction(passedId => { return new DO(passedId, -1); }); A.CallTo(() => serviceProvider.GetService(typeof(DomainObjectFactoryFunction))) .Returns(factoryFunction); var sut = new DefaultDomainObjectFactory(serviceProvider); var id = Guid.NewGuid(); var domainObject = sut.CreateNew(id); Assert.Equal(id, domainObject.Id); Assert.Equal(-1, domainObject.Version); } [Fact] public void Should_throw_exception_if_new_entity_has_invalid_version() { var factoryFunction = new DomainObjectFactoryFunction(passedId => { return new DO(passedId, 0); }); A.CallTo(() => serviceProvider.GetService(typeof(DomainObjectFactoryFunction))) .Returns(factoryFunction); var sut = new DefaultDomainObjectFactory(serviceProvider); Assert.Throws(() => sut.CreateNew(Guid.NewGuid())); } } }