From 95d17926c65cde3af1c17d8b060ca0e1a309b496 Mon Sep 17 00:00:00 2001
From: Nicolas Werner <nicolas.werner@hotmail.de>
Date: Sun, 1 Mar 2020 14:46:40 +0100
Subject: [PATCH] Add some tests for optional thumbnail url

---
 lib/structs/events/common.cpp | 20 ++++++++++----------
 tests/messages.cpp            | 27 ++++++++++++++++++++++++++-
 2 files changed, 36 insertions(+), 11 deletions(-)

diff --git a/lib/structs/events/common.cpp b/lib/structs/events/common.cpp
index bd70df5c5..6245a2fda 100644
--- a/lib/structs/events/common.cpp
+++ b/lib/structs/events/common.cpp
@@ -60,13 +60,13 @@ from_json(const json &obj, ImageInfo &info)
 void
 to_json(json &obj, const ImageInfo &info)
 {
-        obj["h"]              = info.h;
-        obj["w"]              = info.w;
-        obj["size"]           = info.size;
-        obj["mimetype"]       = info.mimetype;
+        obj["h"]        = info.h;
+        obj["w"]        = info.w;
+        obj["size"]     = info.size;
+        obj["mimetype"] = info.mimetype;
         if (!info.thumbnail_url.empty()) {
-          obj["thumbnail_url"]  = info.thumbnail_url;
-          obj["thumbnail_info"] = info.thumbnail_info;
+                obj["thumbnail_url"]  = info.thumbnail_url;
+                obj["thumbnail_info"] = info.thumbnail_info;
         }
         if (info.thumbnail_file)
                 obj["thumbnail_file"] = info.thumbnail_file.value();
@@ -94,11 +94,11 @@ from_json(const json &obj, FileInfo &info)
 void
 to_json(json &obj, const FileInfo &info)
 {
-        obj["size"]           = info.size;
-        obj["mimetype"]       = info.mimetype;
+        obj["size"]     = info.size;
+        obj["mimetype"] = info.mimetype;
         if (!info.thumbnail_url.empty()) {
-          obj["thumbnail_url"] = info.thumbnail_url;
-          obj["thumbnail_info"] = info.thumbnail_info;
+                obj["thumbnail_url"]  = info.thumbnail_url;
+                obj["thumbnail_info"] = info.thumbnail_info;
         }
         if (info.thumbnail_file)
                 obj["thumbnail_file"] = info.thumbnail_file.value();
diff --git a/tests/messages.cpp b/tests/messages.cpp
index cfa1b9b5d..e0e613b42 100644
--- a/tests/messages.cpp
+++ b/tests/messages.cpp
@@ -130,7 +130,14 @@ TEST(RoomEvents, FileMessage)
             "body": "optimize.pdf",
             "info": {
               "mimetype": "application/pdf",
-              "size": 40565
+              "size": 40565,
+	      "thumbnail_info": {
+                "h": 200,
+                "mimetype": "image/png",
+                "size": 73602,
+                "w": 140
+              },
+	      "thumbnail_url": "mxc://matrix.org/XpxykZBESCSQnYkLKbbIKnVn"
             },
             "msgtype": "m.file",
             "url": "mxc://matrix.org/XpxykZBESCSQnYkLKbbIKnVn",
@@ -161,6 +168,15 @@ TEST(RoomEvents, FileMessage)
         EXPECT_EQ(event.content.info.size, 40565);
         EXPECT_EQ(event.content.relates_to.in_reply_to.event_id,
                   "$6GKhAfJOcwNd69lgSizdcTob8z2pWQgBOZPrnsWMA1E");
+
+        json withThumb = event;
+        EXPECT_EQ(withThumb["content"]["info"].count("thumbnail_url"), 1);
+        EXPECT_EQ(withThumb["content"]["info"].count("thumbnail_info"), 1);
+
+        event.content.info.thumbnail_url = "";
+        json withoutThumb                = event;
+        EXPECT_EQ(withoutThumb["content"]["info"].count("thumbnail_url"), 0);
+        EXPECT_EQ(withoutThumb["content"]["info"].count("thumbnail_info"), 0);
 }
 
 TEST(RoomEvents, EncryptedImageMessage)
@@ -300,6 +316,15 @@ TEST(RoomEvents, ImageMessage)
         EXPECT_EQ(event.content.info.thumbnail_info.size, 33504);
         EXPECT_EQ(event.content.relates_to.in_reply_to.event_id,
                   "$6GKhAfJOcwNd69lgSizdcTob8z2pWQgBOZPrnsWMA1E");
+
+        json withThumb = event;
+        EXPECT_EQ(withThumb["content"]["info"].count("thumbnail_url"), 1);
+        EXPECT_EQ(withThumb["content"]["info"].count("thumbnail_info"), 1);
+
+        event.content.info.thumbnail_url = "";
+        json withoutThumb                = event;
+        EXPECT_EQ(withoutThumb["content"]["info"].count("thumbnail_url"), 0);
+        EXPECT_EQ(withoutThumb["content"]["info"].count("thumbnail_info"), 0);
 }
 
 TEST(RoomEvents, LocationMessage) {}
-- 
GitLab