PageRenderTime 45ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 1ms

/tests/MongoDB.Driver.Tests/WriteModelTests.cs

http://github.com/mongodb/mongo-csharp-driver
C# | 134 lines | 102 code | 18 blank | 14 comment | 0 complexity | 0825bcfa0c10d9279df80e9f363e4e6d MD5 | raw file
Possible License(s): Apache-2.0
  1. /* Copyright 2010-present MongoDB Inc.
  2. *
  3. * Licensed under the Apache License, Version 2.0 (the "License");
  4. * you may not use this file except in compliance with the License.
  5. * You may obtain a copy of the License at
  6. *
  7. * http://www.apache.org/licenses/LICENSE-2.0
  8. *
  9. * Unless required by applicable law or agreed to in writing, software
  10. * distributed under the License is distributed on an "AS IS" BASIS,
  11. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. * See the License for the specific language governing permissions and
  13. * limitations under the License.
  14. */
  15. using System;
  16. using System.Collections.Generic;
  17. using System.Linq;
  18. using System.Text;
  19. using System.Threading.Tasks;
  20. using FluentAssertions;
  21. using MongoDB.Bson;
  22. using MongoDB.Driver.Core.Operations;
  23. using Xunit;
  24. namespace MongoDB.Driver.Tests
  25. {
  26. public class WriteModelTests
  27. {
  28. [Fact]
  29. public void Should_convert_from_InsertRequest_to_BsonDocument()
  30. {
  31. var document = BsonDocument.Parse("{a:1}");
  32. var request = new InsertRequest(new BsonDocumentWrapper(document));
  33. var result = WriteModel<BsonDocument>.FromCore(request);
  34. result.Should().BeOfType<InsertOneModel<BsonDocument>>();
  35. var insertModel = (InsertOneModel<BsonDocument>)result;
  36. insertModel.Document.Should().BeSameAs(document);
  37. }
  38. [Fact]
  39. public void Should_convert_from_InsertRequest_to_Class()
  40. {
  41. var document = new TestClass { a = 1 };
  42. var request = new InsertRequest(new BsonDocumentWrapper(document));
  43. var result = WriteModel<TestClass>.FromCore(request);
  44. result.Should().BeOfType<InsertOneModel<TestClass>>();
  45. var model = (InsertOneModel<TestClass>)result;
  46. model.Document.Should().BeSameAs(document);
  47. }
  48. [Theory]
  49. [InlineData(false)]
  50. [InlineData(true)]
  51. public void Should_convert_from_UpdateRequest_to_ReplaceOne_with_BsonDocument(bool isUpsert)
  52. {
  53. var filter = new BsonDocument("a", 1);
  54. var replacement = BsonDocument.Parse("{a:2}");
  55. var request = new UpdateRequest(UpdateType.Update,
  56. new BsonDocumentWrapper(filter),
  57. new BsonDocumentWrapper(replacement))
  58. {
  59. IsMulti = false,
  60. IsUpsert = isUpsert
  61. };
  62. var result = WriteModel<BsonDocument>.FromCore(request);
  63. result.Should().BeOfType<ReplaceOneModel<BsonDocument>>();
  64. var model = (ReplaceOneModel<BsonDocument>)result;
  65. ((BsonDocumentFilterDefinition<BsonDocument>)model.Filter).Document.Should().Be(filter);
  66. model.Replacement.Should().BeSameAs(replacement);
  67. model.IsUpsert.Should().Be(isUpsert);
  68. }
  69. [Theory]
  70. [InlineData(false)]
  71. [InlineData(true)]
  72. public void Should_convert_from_UpdateRequest_to_ReplaceOne_with_Class(bool isUpsert)
  73. {
  74. var filter = new BsonDocument("a", 1);
  75. var replacement = new TestClass { a = 2 };
  76. var request = new UpdateRequest(UpdateType.Replacement,
  77. new BsonDocumentWrapper(filter),
  78. new BsonDocumentWrapper(replacement))
  79. {
  80. IsMulti = false,
  81. IsUpsert = isUpsert
  82. };
  83. var result = WriteModel<TestClass>.FromCore(request);
  84. result.Should().BeOfType<ReplaceOneModel<TestClass>>();
  85. var model = (ReplaceOneModel<TestClass>)result;
  86. ((BsonDocumentFilterDefinition<TestClass>)model.Filter).Document.Should().Be(filter);
  87. model.Replacement.Should().BeSameAs(replacement);
  88. model.IsUpsert.Should().Be(isUpsert);
  89. }
  90. [Theory]
  91. [InlineData(false)]
  92. [InlineData(true)]
  93. public void Should_convert_from_UpdateRequest_to_UpdateMany(bool isUpsert)
  94. {
  95. var filter = BsonDocument.Parse("{a:1}");
  96. var update = BsonDocument.Parse("{$set: {a:2}}");
  97. var request = new UpdateRequest(UpdateType.Update,
  98. new BsonDocumentWrapper(filter),
  99. new BsonDocumentWrapper(update))
  100. {
  101. IsMulti = true,
  102. IsUpsert = isUpsert
  103. };
  104. var result = WriteModel<BsonDocument>.FromCore(request);
  105. result.Should().BeOfType<UpdateManyModel<BsonDocument>>();
  106. var model = (UpdateManyModel<BsonDocument>)result;
  107. ((BsonDocumentFilterDefinition<BsonDocument>)model.Filter).Document.Should().BeSameAs(filter);
  108. ((BsonDocumentUpdateDefinition<BsonDocument>)model.Update).Document.Should().BeSameAs(update);
  109. model.IsUpsert.Should().Be(isUpsert);
  110. }
  111. private class TestClass
  112. {
  113. public int a;
  114. }
  115. }
  116. }