diff --git a/Microsoft.Azure.Cosmos/src/Fluent/Settings/ContainerBuilder.cs b/Microsoft.Azure.Cosmos/src/Fluent/Settings/ContainerBuilder.cs
index 397aab9566..3ba0168265 100644
--- a/Microsoft.Azure.Cosmos/src/Fluent/Settings/ContainerBuilder.cs
+++ b/Microsoft.Azure.Cosmos/src/Fluent/Settings/ContainerBuilder.cs
@@ -28,15 +28,22 @@ protected ContainerBuilder()
{
}
- internal ContainerBuilder(
- Database cosmosContainers,
- CosmosClientContext clientContext,
+ ///
+ /// Creates an instance of ContainerBuilder .
+ ///
+ /// The Microsoft.Azure.Cosmos.Database object.
+ /// Azure Cosmos container name to create.
+ /// The path to the partition key. Example: /partitionKey
+ public ContainerBuilder(
+ Database database,
string name,
- string partitionKeyPath = null)
- : base(name, partitionKeyPath)
+ string partitionKeyPath)
+ : base(
+ string.IsNullOrEmpty(name) ? throw new ArgumentNullException(nameof(name)) : name,
+ string.IsNullOrEmpty(partitionKeyPath) ? throw new ArgumentNullException(nameof(partitionKeyPath)) : partitionKeyPath)
{
- this.database = cosmosContainers;
- this.clientContext = clientContext;
+ this.database = database ?? throw new ArgumentNullException(nameof(database));
+ this.clientContext = database.Client.ClientContext;
this.containerUri = UriFactory.CreateDocumentCollectionUri(this.database.Id, name);
}
diff --git a/Microsoft.Azure.Cosmos/src/Resource/Database/DatabaseCore.cs b/Microsoft.Azure.Cosmos/src/Resource/Database/DatabaseCore.cs
index ab0cc9f918..faab570dda 100644
--- a/Microsoft.Azure.Cosmos/src/Resource/Database/DatabaseCore.cs
+++ b/Microsoft.Azure.Cosmos/src/Resource/Database/DatabaseCore.cs
@@ -681,17 +681,7 @@ public override ContainerBuilder DefineContainer(
string name,
string partitionKeyPath)
{
- if (string.IsNullOrEmpty(name))
- {
- throw new ArgumentNullException(nameof(name));
- }
-
- if (string.IsNullOrEmpty(partitionKeyPath))
- {
- throw new ArgumentNullException(nameof(partitionKeyPath));
- }
-
- return new ContainerBuilder(this, this.ClientContext, name, partitionKeyPath);
+ return new ContainerBuilder(this, name, partitionKeyPath);
}
#if PREVIEW
diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Contracts/DotNetSDKAPI.json b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Contracts/DotNetSDKAPI.json
index 31507703ae..edf73ebdfd 100644
--- a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Contracts/DotNetSDKAPI.json
+++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Contracts/DotNetSDKAPI.json
@@ -2910,6 +2910,11 @@
"AsyncStateMachineAttribute"
],
"MethodInfo": "System.Threading.Tasks.Task`1[Microsoft.Azure.Cosmos.ContainerResponse] CreateIfNotExistsAsync(System.Nullable`1[System.Int32], System.Threading.CancellationToken);IsAbstract:False;IsStatic:False;IsVirtual:False;IsGenericMethod:False;IsConstructor:False;IsFinal:False;"
+ },
+ "Void .ctor(Microsoft.Azure.Cosmos.Database, System.String, System.String)": {
+ "Type": "Constructor",
+ "Attributes": [],
+ "MethodInfo": "[Void .ctor(Microsoft.Azure.Cosmos.Database, System.String, System.String), Void .ctor(Microsoft.Azure.Cosmos.Database, System.String, System.String)]"
}
},
"NestedTypes": {}
diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Fluent/ContainerDefinitionForCreateTests.cs b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Fluent/ContainerDefinitionForCreateTests.cs
index e47d300421..58361f89bb 100644
--- a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Fluent/ContainerDefinitionForCreateTests.cs
+++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Fluent/ContainerDefinitionForCreateTests.cs
@@ -28,10 +28,10 @@ public class ContainerDefinitionForCreateTests
public async Task MissingPKForCreateThrows()
{
Mock mockContainers = new Mock();
-
+ Mock mockClient = new Mock();
+ mockContainers.Setup(m => m.Client).Returns(mockClient.Object);
ContainerBuilder containerFluentDefinitionForCreate = new ContainerBuilder(
mockContainers.Object,
- GetContext(),
containerName,
null);
@@ -53,6 +53,8 @@ public async Task MissingPKForReplace_CallsReadAsync()
.ReturnsAsync(mockContainerResponse.Object);
Mock mockContainers = new Mock();
+ Mock mockClient = new Mock();
+ mockContainers.Setup(m => m.Client).Returns(mockClient.Object);
mockContainers
.Setup(c => c.CreateContainerAsync(
It.Is((settings) => settings.PartitionKeyPath.Equals(partitionKey)),
@@ -65,7 +67,6 @@ public async Task MissingPKForReplace_CallsReadAsync()
ContainerBuilder containerFluentDefinitionForCreate = new ContainerBuilder(
mockContainers.Object,
- GetContext(),
containerName,
null);
@@ -79,6 +80,8 @@ public async Task WithThroughput()
{
Mock mockContainerResponse = new Mock();
Mock mockContainers = new Mock();
+ Mock mockClient = new Mock();
+ mockContainers.Setup(m => m.Client).Returns(mockClient.Object);
mockContainers
.Setup(c => c.CreateContainerAsync(
It.IsAny(),
@@ -92,7 +95,6 @@ public async Task WithThroughput()
ContainerBuilder containerFluentDefinitionForCreate = new ContainerBuilder(
mockContainers.Object,
- GetContext(),
containerName,
partitionKey);
@@ -111,6 +113,8 @@ public async Task WithTimeToLivePropertyPath()
{
Mock mockContainerResponse = new Mock();
Mock mockContainers = new Mock();
+ Mock mockClient = new Mock();
+ mockContainers.Setup(m => m.Client).Returns(mockClient.Object);
mockContainers
.Setup(c => c.CreateContainerAsync(
#pragma warning disable CS0612 // Type or member is obsolete
@@ -126,7 +130,6 @@ public async Task WithTimeToLivePropertyPath()
ContainerBuilder containerFluentDefinitionForCreate = new ContainerBuilder(
mockContainers.Object,
- GetContext(),
containerName,
partitionKey);
@@ -148,6 +151,8 @@ public async Task WithDefaultTimeToLiveTimeSpan()
{
Mock mockContainerResponse = new Mock();
Mock mockContainers = new Mock();
+ Mock mockClient = new Mock();
+ mockContainers.Setup(m => m.Client).Returns(mockClient.Object);
mockContainers
.Setup(c => c.CreateContainerAsync(
It.Is((settings) => settings.DefaultTimeToLive.Equals((int)timeToLive.TotalSeconds)),
@@ -161,7 +166,6 @@ public async Task WithDefaultTimeToLiveTimeSpan()
ContainerBuilder containerFluentDefinitionForCreate = new ContainerBuilder(
mockContainers.Object,
- GetContext(),
containerName,
partitionKey);
@@ -181,6 +185,8 @@ public async Task WithDefaultTimeToLiveInt()
{
Mock mockContainerResponse = new Mock();
Mock mockContainers = new Mock();
+ Mock mockClient = new Mock();
+ mockContainers.Setup(m => m.Client).Returns(mockClient.Object);
mockContainers
.Setup(c => c.CreateContainerAsync(
It.Is((settings) => settings.DefaultTimeToLive.Equals((int)timeToLive.TotalSeconds)),
@@ -194,7 +200,6 @@ public async Task WithDefaultTimeToLiveInt()
ContainerBuilder containerFluentDefinitionForCreate = new ContainerBuilder(
mockContainers.Object,
- GetContext(),
containerName,
partitionKey);
@@ -214,6 +219,8 @@ public async Task WithIndexingPolicy()
{
Mock mockContainerResponse = new Mock();
Mock mockContainers = new Mock();
+ Mock mockClient = new Mock();
+ mockContainers.Setup(m => m.Client).Returns(mockClient.Object);
mockContainers
.Setup(c => c.CreateContainerAsync(
It.Is((settings) => IndexingMode.None.Equals(settings.IndexingPolicy.IndexingMode) && !settings.IndexingPolicy.Automatic),
@@ -227,7 +234,6 @@ public async Task WithIndexingPolicy()
ContainerBuilder containerFluentDefinitionForCreate = new ContainerBuilder(
mockContainers.Object,
- GetContext(),
containerName,
partitionKey);
@@ -250,6 +256,8 @@ public async Task WithUniqueKey()
{
Mock mockContainerResponse = new Mock();
Mock mockContainers = new Mock();
+ Mock mockClient = new Mock();
+ mockContainers.Setup(m => m.Client).Returns(mockClient.Object);
mockContainers
.Setup(c => c.CreateContainerAsync(
It.Is((settings) => settings.UniqueKeyPolicy.UniqueKeys.Count == 1 && path.Equals(settings.UniqueKeyPolicy.UniqueKeys[0].Paths[0])),
@@ -263,7 +271,6 @@ public async Task WithUniqueKey()
ContainerBuilder containerFluentDefinitionForCreate = new ContainerBuilder(
mockContainers.Object,
- GetContext(),
containerName,
partitionKey);