calendar_api_response_types_unittest.cc 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. // Copyright 2021 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "google_apis/calendar/calendar_api_response_types.h"
  5. #include "base/time/time.h"
  6. #include "base/values.h"
  7. #include "google_apis/common/test_util.h"
  8. #include "testing/gtest/include/gtest/gtest.h"
  9. namespace google_apis {
  10. namespace calendar {
  11. TEST(CalendarAPIResponseTypesTest, ParseEventList) {
  12. std::unique_ptr<base::Value> events =
  13. test_util::LoadJSONFile("calendar/events.json");
  14. ASSERT_TRUE(events.get());
  15. ASSERT_EQ(base::Value::Type::DICTIONARY, events->type());
  16. auto event_list = EventList::CreateFrom(*events);
  17. EXPECT_EQ("America/Los_Angeles", event_list->time_zone());
  18. EXPECT_EQ("calendar#events", event_list->kind());
  19. EXPECT_EQ("\"p32ofplf5q6gf20g\"", event_list->etag());
  20. EXPECT_EQ(3U, event_list->items().size());
  21. const CalendarEvent& event = *event_list->items()[0];
  22. base::Time start_time;
  23. ASSERT_TRUE(base::Time::FromUTCExploded(
  24. {2020, 11 /* November */, 1 /* Monday */, 2, 18, 0, 0, 0}, &start_time));
  25. EXPECT_EQ(start_time, event.start_time().date_time());
  26. base::Time end_time;
  27. ASSERT_TRUE(base::Time::FromUTCExploded(
  28. {2020, 11 /* November */, 1 /* Monday */, 2, 18, 30, 0, 0}, &end_time));
  29. EXPECT_EQ(end_time, event.end_time().date_time());
  30. EXPECT_EQ(event.summary(), "Mobile weekly team meeting ");
  31. EXPECT_EQ(event.id(), "or8221sirt4ogftest");
  32. EXPECT_EQ(
  33. event.html_link(),
  34. "https://www.google.com/calendar/event?eid=b3I4MjIxc2lydDRvZ2Ztest");
  35. EXPECT_EQ(event.color_id(), "3");
  36. EXPECT_EQ(event.status(), CalendarEvent::EventStatus::kConfirmed);
  37. EXPECT_EQ(event.self_response_status(),
  38. CalendarEvent::ResponseStatus::kNeedsAction);
  39. }
  40. TEST(CalendarAPIResponseTypesTest, ParseEventListWithCorrectEventStatuses) {
  41. std::unique_ptr<base::Value> events =
  42. test_util::LoadJSONFile("calendar/event_statuses.json");
  43. ASSERT_TRUE(events.get());
  44. ASSERT_EQ(base::Value::Type::DICTIONARY, events->type());
  45. auto event_list = EventList::CreateFrom(*events);
  46. EXPECT_EQ(4U, event_list->items().size());
  47. EXPECT_EQ(event_list->items()[0]->status(),
  48. CalendarEvent::EventStatus::kConfirmed);
  49. EXPECT_EQ(event_list->items()[1]->status(),
  50. CalendarEvent::EventStatus::kCancelled);
  51. EXPECT_EQ(event_list->items()[2]->status(),
  52. CalendarEvent::EventStatus::kTentative);
  53. EXPECT_EQ(event_list->items()[3]->status(),
  54. CalendarEvent::EventStatus::kUnknown);
  55. }
  56. TEST(CalendarAPIResponseTypesTest,
  57. ParseEventListWithCorrectSelfResponseStatus) {
  58. std::unique_ptr<base::Value> events =
  59. test_util::LoadJSONFile("calendar/event_self_response_statuses.json");
  60. ASSERT_TRUE(events.get());
  61. ASSERT_EQ(base::Value::Type::DICTIONARY, events->type());
  62. auto event_list = EventList::CreateFrom(*events);
  63. EXPECT_EQ(8U, event_list->items().size());
  64. EXPECT_EQ(event_list->items()[0]->self_response_status(),
  65. CalendarEvent::ResponseStatus::kUnknown);
  66. EXPECT_EQ(event_list->items()[1]->self_response_status(),
  67. CalendarEvent::ResponseStatus::kAccepted);
  68. EXPECT_EQ(event_list->items()[2]->self_response_status(),
  69. CalendarEvent::ResponseStatus::kDeclined);
  70. EXPECT_EQ(event_list->items()[3]->self_response_status(),
  71. CalendarEvent::ResponseStatus::kNeedsAction);
  72. EXPECT_EQ(event_list->items()[4]->self_response_status(),
  73. CalendarEvent::ResponseStatus::kTentative);
  74. EXPECT_EQ(event_list->items()[5]->self_response_status(),
  75. CalendarEvent::ResponseStatus::kAccepted);
  76. EXPECT_EQ(event_list->items()[6]->self_response_status(),
  77. CalendarEvent::ResponseStatus::kUnknown);
  78. EXPECT_EQ(event_list->items()[7]->self_response_status(),
  79. CalendarEvent::ResponseStatus::kUnknown);
  80. }
  81. TEST(CalendarAPIResponseTypesTest, ParseFailed) {
  82. std::unique_ptr<base::Value> events =
  83. test_util::LoadJSONFile("calendar/invalid_events.json");
  84. ASSERT_TRUE(events.get());
  85. ASSERT_EQ(base::Value::Type::DICTIONARY, events->type());
  86. auto event_list = EventList::CreateFrom(*events);
  87. ASSERT_EQ(event_list, nullptr);
  88. }
  89. } // namespace calendar
  90. } // namespace google_apis