public void CanUpdateMemberTypeWithoutId()
        {
            var logServiceMock = new Mock <ILogService>();

            var memberTypeWithoutId = new Jet.MemberType(typeof(MemberTypeWithoutId));

            var memberTypeMock = new Mock <IMemberType>();

            memberTypeMock.SetupAllProperties();
            memberTypeMock.Object.Alias = memberTypeWithoutId.Alias;

            var typeResolverMock = new Mock <ITypeResolver>();

            typeResolverMock.Setup(m => m.MemberTypes).Returns(Array.AsReadOnly(new[] { memberTypeWithoutId }));

            var memberTypeServiceMock = new Mock <IMemberTypeService>();

            memberTypeServiceMock.Setup(m => m.GetAll()).Returns(new[] { memberTypeMock.Object });

            var memberTypeSynchronizationServiceMock = new Mock <MemberTypeSynchronizer>(
                logServiceMock.Object,
                memberTypeServiceMock.Object,
                typeResolverMock.Object,
                new Mock <Jet.Data.ITypeRepository>().Object)
            {
                CallBase = true
            };

            memberTypeSynchronizationServiceMock.Object.Run();

            memberTypeSynchronizationServiceMock.Verify(m => m.UpdateContentType(memberTypeMock.Object, It.IsAny <Jet.MemberType>()), Times.Once);
        }
        public void CanCreateMemberTypeWithoutId()
        {
            var logServiceMock = new Mock <ILogService>();

            var memberTypeWithoutId = new Jet.MemberType(typeof(MemberTypeWithoutId));

            var typeResolverMock = new Mock <ITypeResolver>();

            typeResolverMock.Setup(m => m.MemberTypes).Returns(Array.AsReadOnly(new[] { memberTypeWithoutId }));

            var memberTypes = new List <IMemberType>();

            var memberTypeServiceMock = new Mock <IMemberTypeService>();

            memberTypeServiceMock.Setup(m => m.GetAll()).Returns(memberTypes);
            memberTypeServiceMock.Setup(m => m.Save(It.IsAny <IMemberType>(), 0)).Callback((IMemberType memberType, int userId) => { memberTypes.Add(memberType); });

            var memberTypeSynchronizationServiceMock = new Mock <MemberTypeSynchronizer>(
                logServiceMock.Object,
                memberTypeServiceMock.Object,
                typeResolverMock.Object,
                new Mock <Jet.Data.ITypeRepository>().Object)
            {
                CallBase = true
            };

            memberTypeSynchronizationServiceMock.Object.Run();

            memberTypeSynchronizationServiceMock.Verify(m => m.CreateContentType(memberTypeWithoutId), Times.Once);
        }
        public void CanUpdateNameForMemberTypeWithId()
        {
            var logServiceMock = new Mock <ILogService>();

            var memberTypeWithId = new Jet.MemberType(typeof(MemberTypeWithId));

            var memberTypeMock = new Mock <IMemberType>();

            memberTypeMock.SetupAllProperties();

            var typeResolverMock = new Mock <ITypeResolver>();

            typeResolverMock.Setup(m => m.MemberTypes).Returns(Array.AsReadOnly(new[] { memberTypeWithId }));

            var memberTypeServiceMock = new Mock <IMemberTypeService>();

            memberTypeServiceMock.Setup(m => m.GetAll()).Returns(new[] { memberTypeMock.Object });

            var typeRepositoryMock = new Mock <Jet.Data.ITypeRepository>();

            typeRepositoryMock.Setup(m => m.GetContentTypeId(memberTypeWithId.Id.Value)).Returns(memberTypeMock.Object.Id);

            var memberTypeSynchronizationServiceMock = new Mock <MemberTypeSynchronizer>(
                logServiceMock.Object,
                memberTypeServiceMock.Object,
                typeResolverMock.Object,
                typeRepositoryMock.Object)
            {
                CallBase = true
            };

            memberTypeSynchronizationServiceMock.Object.Run();

            memberTypeMock.VerifySet(m => m.Name = memberTypeWithId.Name, Times.Once);
        }