public void ContainerSettingsWithIndexingPolicyTest() { string id = Guid.NewGuid().ToString(); string pkPath = "/partitionKey"; // Two equivalent definitions CosmosContainerSettings cosmosContainerSettings = new CosmosContainerSettings(id, pkPath); cosmosContainerSettings.IndexingPolicy.Automatic = true; cosmosContainerSettings.IndexingPolicy.IncludedPaths.Add(new Cosmos.IncludedPath() { Path = "/id1/*" }); Cosmos.UniqueKey cuk1 = new Cosmos.UniqueKey(); cuk1.Paths.Add("/u1"); cosmosContainerSettings.UniqueKeyPolicy.UniqueKeys.Add(cuk1); DocumentCollection collection = new DocumentCollection() { Id = id, PartitionKey = new PartitionKeyDefinition() { Paths = new Collection <string>() { pkPath }, } }; collection.IndexingPolicy.Automatic = true; collection.IndexingPolicy.IncludedPaths.Add(new Documents.IncludedPath() { Path = "/id1/*" }); Documents.UniqueKey duk1 = new Documents.UniqueKey(); duk1.Paths.Add("/u1"); collection.UniqueKeyPolicy.UniqueKeys.Add(duk1); string cosmosSerialized = SettingsContractTests.CosmosSerialize(cosmosContainerSettings); string directSerialized = SettingsContractTests.DirectSerialize(collection); // Swap de-serialize and validate CosmosContainerSettings containerDeserSettings = SettingsContractTests.CosmosDeserialize <CosmosContainerSettings>(directSerialized); DocumentCollection collectionDeser = SettingsContractTests.DirectDeSerialize <DocumentCollection>(cosmosSerialized); Assert.AreEqual(collection.Id, containerDeserSettings.Id); Assert.AreEqual(collection.PartitionKey.Paths[0], containerDeserSettings.PartitionKeyPath); Assert.AreEqual(collection.IndexingPolicy.Automatic, containerDeserSettings.IndexingPolicy.Automatic); Assert.AreEqual(collection.IndexingPolicy.IncludedPaths.Count, containerDeserSettings.IndexingPolicy.IncludedPaths.Count); Assert.AreEqual(collection.IndexingPolicy.IncludedPaths[0].Path, containerDeserSettings.IndexingPolicy.IncludedPaths[0].Path); Assert.AreEqual(collection.IndexingPolicy.IncludedPaths[0].Indexes.Count, containerDeserSettings.IndexingPolicy.IncludedPaths[0].Indexes.Count); Assert.AreEqual(collection.UniqueKeyPolicy.UniqueKeys.Count, containerDeserSettings.UniqueKeyPolicy.UniqueKeys.Count); Assert.AreEqual(collection.UniqueKeyPolicy.UniqueKeys[0].Paths.Count, containerDeserSettings.UniqueKeyPolicy.UniqueKeys[0].Paths.Count); Assert.AreEqual(collection.UniqueKeyPolicy.UniqueKeys[0].Paths[0], containerDeserSettings.UniqueKeyPolicy.UniqueKeys[0].Paths[0]); Assert.AreEqual(cosmosContainerSettings.Id, collectionDeser.Id); Assert.AreEqual(cosmosContainerSettings.PartitionKeyPath, collectionDeser.PartitionKey.Paths[0]); Assert.AreEqual(cosmosContainerSettings.IndexingPolicy.Automatic, collectionDeser.IndexingPolicy.Automatic); Assert.AreEqual(cosmosContainerSettings.IndexingPolicy.IncludedPaths.Count, collectionDeser.IndexingPolicy.IncludedPaths.Count); Assert.AreEqual(cosmosContainerSettings.IndexingPolicy.IncludedPaths[0].Path, collectionDeser.IndexingPolicy.IncludedPaths[0].Path); Assert.AreEqual(cosmosContainerSettings.IndexingPolicy.IncludedPaths[0].Indexes.Count, collectionDeser.IndexingPolicy.IncludedPaths[0].Indexes.Count); Assert.AreEqual(cosmosContainerSettings.UniqueKeyPolicy.UniqueKeys.Count, collectionDeser.UniqueKeyPolicy.UniqueKeys.Count); Assert.AreEqual(cosmosContainerSettings.UniqueKeyPolicy.UniqueKeys[0].Paths.Count, collectionDeser.UniqueKeyPolicy.UniqueKeys[0].Paths.Count); Assert.AreEqual(cosmosContainerSettings.UniqueKeyPolicy.UniqueKeys[0].Paths[0], collectionDeser.UniqueKeyPolicy.UniqueKeys[0].Paths[0]); }
public void ContainerSettingsDefaults() { string id = Guid.NewGuid().ToString(); string pkPath = "/partitionKey"; #if PREVIEW SettingsContractTests.TypeAccessorGuard(typeof(ContainerProperties), "Id", "UniqueKeyPolicy", "DefaultTimeToLive", "AnalyticalStoreTimeToLiveInSeconds", "IndexingPolicy", "GeospatialConfig", "TimeToLivePropertyPath", "PartitionKeyPath", "PartitionKeyDefinitionVersion", "ConflictResolutionPolicy", "ChangeFeedPolicy", "ClientEncryptionPolicy"); #else SettingsContractTests.TypeAccessorGuard(typeof(ContainerProperties), "Id", "UniqueKeyPolicy", "DefaultTimeToLive", "AnalyticalStoreTimeToLiveInSeconds", "IndexingPolicy", "GeospatialConfig", "TimeToLivePropertyPath", "PartitionKeyPath", "PartitionKeyDefinitionVersion", "ConflictResolutionPolicy"); #endif // Two equivalent definitions ContainerProperties cosmosContainerSettings = new ContainerProperties(id, pkPath); Assert.AreEqual(id, cosmosContainerSettings.Id); Assert.AreEqual(pkPath, cosmosContainerSettings.PartitionKeyPath); Assert.IsNull(cosmosContainerSettings.ResourceId); Assert.IsNull(cosmosContainerSettings.LastModified); Assert.IsNull(cosmosContainerSettings.ETag); Assert.IsNull(cosmosContainerSettings.DefaultTimeToLive); Assert.IsNotNull(cosmosContainerSettings.IndexingPolicy); Assert.IsNotNull(cosmosContainerSettings.ChangeFeedPolicy); Assert.IsNotNull(cosmosContainerSettings.ConflictResolutionPolicy); Assert.IsTrue(object.ReferenceEquals(cosmosContainerSettings.IndexingPolicy, cosmosContainerSettings.IndexingPolicy)); Assert.IsNotNull(cosmosContainerSettings.IndexingPolicy.IncludedPaths); Assert.IsTrue(object.ReferenceEquals(cosmosContainerSettings.IndexingPolicy.IncludedPaths, cosmosContainerSettings.IndexingPolicy.IncludedPaths)); Cosmos.IncludedPath ip = new Cosmos.IncludedPath(); Assert.IsNotNull(ip.Indexes); Assert.IsNotNull(cosmosContainerSettings.UniqueKeyPolicy); Assert.IsTrue(object.ReferenceEquals(cosmosContainerSettings.UniqueKeyPolicy, cosmosContainerSettings.UniqueKeyPolicy)); Assert.IsNotNull(cosmosContainerSettings.UniqueKeyPolicy.UniqueKeys); Assert.IsTrue(object.ReferenceEquals(cosmosContainerSettings.UniqueKeyPolicy.UniqueKeys, cosmosContainerSettings.UniqueKeyPolicy.UniqueKeys)); Cosmos.UniqueKey uk = new Cosmos.UniqueKey(); Assert.IsNotNull(uk.Paths); }