PageRenderTime 50ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/Source/Bifrost.Specs/Serialization/for_SerializerContractResolver/when_serializing_saga_containing_properties_with_conflicting_names_using_contract_resolver.cs

#
C# | 51 lines | 44 code | 7 blank | 0 comment | 2 complexity | 1e5d8fe01a7fbd86e131caabff171d1f MD5 | raw file
Possible License(s): CC-BY-SA-3.0
  1. using System;
  2. using System.IO;
  3. using System.Linq;
  4. using Bifrost.Fakes.Sagas;
  5. using Bifrost.Sagas;
  6. using Machine.Specifications;
  7. using Newtonsoft.Json;
  8. namespace Bifrost.Specs.Serialization.for_SerializerContractResolver
  9. {
  10. public class when_serializing_saga_containing_properties_with_conflicting_names_using_contract_resolver: given.a_serializer_contract_resolver_that_ignores_saga_properties
  11. {
  12. static string[] saga_properties;
  13. static SimpleSagaWithConflictingPropertyNames saga;
  14. static string saga_as_json;
  15. static Guid saga_id = Guid.NewGuid();
  16. static Guid conflicting_id = Guid.NewGuid();
  17. Establish context = () =>
  18. {
  19. saga = new SimpleSagaWithConflictingPropertyNames
  20. {
  21. Id = saga_id,
  22. SomeOtherThing = new SomeOtherThing() {Id = conflicting_id.ToString()}
  23. };
  24. saga_properties = typeof(ISaga).GetProperties().Select(t => t.Name).ToArray();
  25. };
  26. Because of = () =>
  27. {
  28. using (var stringWriter = new StringWriter())
  29. {
  30. var serializer = new JsonSerializer
  31. {
  32. TypeNameHandling = TypeNameHandling.Auto,
  33. ContractResolver = contract_resolver
  34. };
  35. serializer.Serialize(stringWriter, saga);
  36. saga_as_json = stringWriter.ToString();
  37. }
  38. };
  39. It should_ignore_non_conflicting_properties = () => saga_properties.Where(s => s != "Id").Any(saga_as_json.Contains).ShouldBeFalse();
  40. It should_ignore_base_conflicting_property_and_include_on_child = () => saga_properties.Where(s => s == "Id").Any(saga_as_json.Contains).ShouldBeTrue();
  41. It should_not_include_guid_property_from_isaga = () => saga_as_json.ShouldContain(conflicting_id.ToString());
  42. It should_include_string_property_from_implementation = () => saga_as_json.ShouldContain(conflicting_id.ToString());
  43. }
  44. }