public void Uses_single_generator_per_cache_key_when_pool_size_is_one() { var property = CreateProperty(ValueGenerationOnAdd.Client); var factoryMock = new Mock <SimpleValueGeneratorFactory <GuidValueGenerator> >(); factoryMock.Setup(m => m.Create(property)).Returns(CreateValueGeneratorCallback); factoryMock.Setup(m => m.GetPoolSize(property)).Returns(1); factoryMock.Setup(m => m.GetCacheKey(property)).Returns("TheKeyMaster"); var selector = new ValueGeneratorSelector(factoryMock.Object); var cache = new ValueGeneratorCache(selector, Mock.Of <ForeignKeyValueGenerator>()); var generator1 = cache.GetGenerator(property); Assert.NotNull(generator1); Assert.Same(generator1, cache.GetGenerator(property)); factoryMock.Setup(m => m.GetCacheKey(property)).Returns("TheGatekeeper"); var generator2 = cache.GetGenerator(property); Assert.NotNull(generator2); Assert.Same(generator2, cache.GetGenerator(property)); Assert.NotSame(generator1, generator2); }
public void Returns_null_if_selector_returns_null() { var property = CreateProperty(ValueGenerationOnAdd.None); var selector = new ValueGeneratorSelector(new SimpleValueGeneratorFactory <GuidValueGenerator>()); var cache = new ValueGeneratorCache(selector, Mock.Of <ForeignKeyValueGenerator>()); Assert.Null(cache.GetGenerator(property)); }
public void Returns_null_if_selector_returns_null() { var property = CreateProperty(generateValues: false); var selector = new ValueGeneratorSelector(new SimpleValueGeneratorFactory <GuidValueGenerator>()); var cache = new ValueGeneratorCache(selector); Assert.Null(cache.GetGenerator(property)); }
public void X() { var model = new Model(); EntityType entityType = model.AddEntityType(typeof(SimpleRecord)); Property property = entityType.AddProperty(typeof(SimpleRecord) .GetTypeInfo() .GetProperty(nameof(SimpleRecord.Id))); var valueGeneratorCacheDependencies = new ValueGeneratorCacheDependencies(); var valueGeneratorCache = new ValueGeneratorCache(valueGeneratorCacheDependencies); var valueGeneratorSelectorDependencies = new ValueGeneratorSelectorDependencies(valueGeneratorCache); var mongoDbValueGeneratorSelector = new MongoDbValueGeneratorSelector(valueGeneratorSelectorDependencies); ValueGenerator valueGenerator = mongoDbValueGeneratorSelector.Select(property, entityType); Assert.IsAssignableFrom(typeof(ObjectIdValueGenerator), valueGenerator); }
public RedisDataStoreServices( [NotNull] RedisDataStore store, [NotNull] RedisDataStoreCreator creator, [NotNull] RedisConnection connection, [NotNull] ValueGeneratorCache valueGeneratorCache, [NotNull] RedisDatabase database, [NotNull] ModelBuilderFactory modelBuilderFactory) { Check.NotNull(store, "store"); Check.NotNull(creator, "creator"); Check.NotNull(connection, "connection"); Check.NotNull(valueGeneratorCache, "valueGeneratorCache"); Check.NotNull(database, "database"); Check.NotNull(modelBuilderFactory, "modelBuilderFactory"); _store = store; _creator = creator; _connection = connection; _valueGeneratorCache = valueGeneratorCache; _database = database; _modelBuilderFactory = modelBuilderFactory; }
public void Uses_pool_per_cache_key_when_pool_size_is_greater_than_one() { var property = CreateProperty(ValueGeneration.OnAdd); var factoryMock = new Mock <SimpleValueGeneratorFactory <GuidValueGenerator> >(); factoryMock.Setup(m => m.Create(property)).Returns(CreateValueGeneratorCallback); factoryMock.Setup(m => m.GetPoolSize(property)).Returns(2); factoryMock.Setup(m => m.GetCacheKey(property)).Returns("TheKeyMaster"); var selector = new ValueGeneratorSelector(factoryMock.Object); var cache = new ValueGeneratorCache(selector, Mock.Of <ForeignKeyValueGenerator>()); var generator1a = cache.GetGenerator(property); var generator1b = cache.GetGenerator(property); Assert.NotSame(generator1a, generator1b); Assert.Same(generator1a, cache.GetGenerator(property)); Assert.Same(generator1b, cache.GetGenerator(property)); Assert.Same(generator1a, cache.GetGenerator(property)); Assert.Same(generator1b, cache.GetGenerator(property)); factoryMock.Setup(m => m.GetCacheKey(property)).Returns("TheGatekeeper"); var generator2a = cache.GetGenerator(property); var generator2b = cache.GetGenerator(property); Assert.NotSame(generator2a, generator2b); Assert.NotSame(generator1a, generator2a); Assert.NotSame(generator1b, generator2a); Assert.Same(generator2a, cache.GetGenerator(property)); Assert.Same(generator2b, cache.GetGenerator(property)); Assert.Same(generator2a, cache.GetGenerator(property)); Assert.Same(generator2b, cache.GetGenerator(property)); }