1 //  Copyright (c) 2020 650 Industries, Inc. All rights reserved.
2 
3 import ExpoModulesTestCore
4 
5 @testable import EXUpdates
6 
7 class StringStringDictionarySerializerSpec : ExpoSpec {
specnull8   override func spec() {
9     describe("serialization") {
10       it("validates") {
11         expect(try StringStringDictionarySerializer.serialize(dictionary: ["hello": "world"])) == "hello=\"world\""
12         expect(try StringStringDictionarySerializer.serialize(dictionary: ["*hello": "world"])) == "*hello=\"world\""
13         expect(try StringStringDictionarySerializer.serialize(dictionary: ["*_-.*": ""])) == "*_-.*=\"\""
14 
15         // escapes
16         expect(try StringStringDictionarySerializer.serialize(dictionary: ["test": "\\test\""])) == "test=\"\\\\test\\\"\""
17 
18         // empty key
19         expect {
20           try StringStringDictionarySerializer.serialize(dictionary: ["": "world"])
21         }.to(throwError(SerializerError.emptyKey))
22 
23         // capital letter in key
24         expect {
25           try StringStringDictionarySerializer.serialize(dictionary: ["Hello": "world"])
26         }.to(throwError(SerializerError.invalidCharacterInKey(key: "Hello", character: "H")))
27 
28         // capital letter in key
29         expect {
30           try StringStringDictionarySerializer.serialize(dictionary: ["Hello": "world"])
31         }.to(throwError(SerializerError.invalidCharacterInKey(key: "Hello", character: "H")))
32 
33         // invalid character in key
34         expect {
35           try StringStringDictionarySerializer.serialize(dictionary: ["Hell&o": "world"])
36         }.to(throwError(SerializerError.invalidCharacterInKey(key: "hell&o", character: "&")))
37       }
38     }
39   }
40 }
41