|
23 | 23 |
|
24 | 24 | let(:properties) { {
|
25 | 25 | "message" => "This is a message!",
|
26 |
| - "hashField" => { |
27 |
| - "numField" => 1, |
28 |
| - "hashField" => { |
| 26 | + "rootHashField" => { |
| 27 | + "numFieldInHash" => 1, |
| 28 | + "hashFieldInHash" => { |
29 | 29 | "numField": 2
|
30 | 30 | },
|
31 |
| - "arrayField" => ["one", "two", "three"] |
| 31 | + "arrayFieldInHash" => ["one", "two", "three"] |
32 | 32 | },
|
33 |
| - "arrayField": [ |
34 |
| - {"strField" => "four"}, |
35 |
| - {"strField" => "five"}, |
36 |
| - {"strField" => "six"}, |
37 |
| - "numField" => 3 |
| 33 | + "rootArrayField": [ |
| 34 | + {"strFieldInArray" => "four"}, |
| 35 | + {"strFieldInArray" => "five"}, |
| 36 | + {"strFieldInArray" => "six"} |
| 37 | + ], |
| 38 | + "nestedArrayField": [ |
| 39 | + {"strFieldInArray" => "four", "arrayFieldInArray" => [3, 4], "hashFieldInArray" => {"numField" => 9}}, |
| 40 | + {"strFieldInArray" => "five", "arrayFieldInArray" => [5, 6], "hashFieldInArray" => {"numField" => 10}}, |
| 41 | + {"strFieldInArray" => "six", "arrayFieldInArray" => [7, 8], "hashFieldInArray" => {"numField" => 11}} |
38 | 42 | ]
|
39 | 43 | } }
|
40 | 44 | let(:event) { LogStash::Event.new(properties) }
|
|
56 | 60 |
|
57 | 61 | describe "when processing an event with nested hash" do
|
58 | 62 |
|
59 |
| - it "should send a document update to mongodb with dotted notation" do |
| 63 | + it "should send a document update to mongodb with dotted notation for fields in inner hashes" do |
60 | 64 | expect(event).to receive(:timestamp).and_return(nil)
|
61 | 65 | expect(event).to receive(:to_hash).and_return(properties)
|
62 | 66 | expect(collection).to receive(:bulk_write).with(
|
63 | 67 | [{:update_one => {:filter => {"_id" => query_value}, :update => {"$set" => {
|
64 | 68 | "message" => "This is a message!",
|
65 |
| - "hashField.numField" => 1, |
66 |
| - "hashField.hashField.numField" => 2, |
67 |
| - "hashField.arrayField.0" => "one", |
68 |
| - "hashField.arrayField.1" => "two", |
69 |
| - "hashField.arrayField.2" => "three", |
70 |
| - "arrayField.0.strField" => "four", |
71 |
| - "arrayField.1.strField" => "five", |
72 |
| - "arrayField.2.strField" => "six", |
73 |
| - "arrayField.3.numField" => 3, |
| 69 | + "rootHashField.numFieldInHash" => 1, |
| 70 | + "rootHashField.hashFieldInHash.numField" => 2, |
| 71 | + "rootHashField.arrayFieldInHash" => ["one", "two", "three"], |
| 72 | + "rootArrayField" => [ |
| 73 | + {"strFieldInArray" => "four"}, |
| 74 | + {"strFieldInArray" => "five"}, |
| 75 | + {"strFieldInArray" => "six"} |
| 76 | + ], |
| 77 | + "nestedArrayField" => [ |
| 78 | + {"strFieldInArray" => "four", "arrayFieldInArray" => [3, 4], "hashFieldInArray" => {"numField" => 9}}, |
| 79 | + {"strFieldInArray" => "five", "arrayFieldInArray" => [5, 6], "hashFieldInArray" => {"numField" => 10}}, |
| 80 | + {"strFieldInArray" => "six", "arrayFieldInArray" => [7, 8], "hashFieldInArray" => {"numField" => 11}} |
| 81 | + ], |
74 | 82 | }}, :upsert => false}}]
|
75 | 83 | )
|
76 | 84 | subject.receive(event)
|
|
0 commit comments