-
Notifications
You must be signed in to change notification settings - Fork 820
/
SerializationHelperTests.cs
129 lines (96 loc) · 3.74 KB
/
SerializationHelperTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
using Raven.Abstractions;
using Raven.Client.Connection;
using Raven.Json.Linq;
namespace Raven.Tests.Silverlight
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Silverlight.Testing;
using Microsoft.VisualStudio.TestTools.UnitTesting;
public class SerializationHelperTests : RavenTestBase
{
[Asynchronous]
public IEnumerable<Task> Handles_conversion_when_there_is_no_metadata()
{
var input = new List<RavenJObject> {new RavenJObject()};
var output = SerializationHelper.RavenJObjectsToJsonDocuments(input);
Assert.AreEqual(1, output.Count());
yield break;
}
[TestMethod]
public void Extracts_key_from_metadata()
{
var doc = new RavenJObject();
doc["@metadata"] = new RavenJObject();
((RavenJObject)doc["@metadata"])["@id"] = "some_key";
var output = SerializationHelper.RavenJObjectsToJsonDocuments(new List<RavenJObject> { doc });
Assert.AreEqual("some_key", output.First().Key);
}
[TestMethod]
public void Assumes_empty_string_if_key_is_not_in_metadata()
{
var doc = new RavenJObject();
doc["@metadata"] = new RavenJObject();
var output = SerializationHelper.RavenJObjectsToJsonDocuments(new List<RavenJObject> { doc });
Assert.AreEqual(string.Empty, output.First().Key);
}
[TestMethod]
public void Extracts_last_modified_date_from_metadata()
{
var april_fools = new DateTime(2011, 4, 1, 4, 20, 0, DateTimeKind.Utc);
var doc = new RavenJObject();
doc["@metadata"] = new RavenJObject();
((RavenJObject)doc["@metadata"])["Last-Modified"] = april_fools.ToString("r");
var output = SerializationHelper.RavenJObjectsToJsonDocuments(new List<RavenJObject> { doc });
Assert.AreEqual(april_fools, output.First().LastModified);
}
[TestMethod]
public void Assumes_now_if_last_modified_date_is_not_in_metadata()
{
var doc = new RavenJObject();
doc["@metadata"] = new RavenJObject();
var now = SystemTime.Now;
var output = SerializationHelper.RavenJObjectsToJsonDocuments(new List<RavenJObject> { doc });
var last_modified = output.First().LastModified;
var delta = Math.Abs((last_modified - now).Value.TotalSeconds);
Assert.IsTrue(delta < 1);
}
[TestMethod]
public void Extracts_etag_from_metadata()
{
var etag = Guid.NewGuid();
var doc = new RavenJObject();
doc["@metadata"] = new RavenJObject();
((RavenJObject)doc["@metadata"])["@etag"] = etag.ToString();
var output = SerializationHelper.RavenJObjectsToJsonDocuments(new List<RavenJObject> { doc });
Assert.AreEqual(etag, output.First().Etag);
}
[TestMethod]
public void Assumes_empty_guid_if_etag_is_not_in_metadata()
{
var doc = new RavenJObject();
doc["@metadata"] = new RavenJObject();
var output = SerializationHelper.RavenJObjectsToJsonDocuments(new List<RavenJObject> { doc });
Assert.AreEqual(Guid.Empty, output.First().Etag);
}
[TestMethod]
public void Extracts_Non_Authoritive_flag_from_metadata()
{
var doc = new RavenJObject();
doc["@metadata"] = new RavenJObject();
((RavenJObject)doc["@metadata"])["Non-Authoritive-Information"] = true;
var output = SerializationHelper.RavenJObjectsToJsonDocuments(new List<RavenJObject> { doc });
Assert.AreEqual(true, output.First().NonAuthoritiveInformation);
}
[TestMethod]
public void Assumes_false_if_Non_Authoritive_flag_is_not_in_metadata()
{
var doc = new RavenJObject();
doc["@metadata"] = new RavenJObject();
var output = SerializationHelper.RavenJObjectsToJsonDocuments(new List<RavenJObject> { doc });
Assert.AreEqual(false, output.First().NonAuthoritiveInformation);
}
}
}