| // Copyright 2023 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "google_apis/classroom/classroom_api_courses_response_types.h" |
| |
| #include <memory> |
| |
| #include "base/json/json_reader.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace google_apis::classroom { |
| |
| using ::base::JSONReader; |
| |
| TEST(ClassroomApiCoursesResponseTypesTest, ConvertsEmptyResponse) { |
| auto raw_courses = JSONReader::Read("{}"); |
| ASSERT_TRUE(raw_courses); |
| |
| auto courses = Courses::CreateFrom(raw_courses.value()); |
| ASSERT_TRUE(courses); |
| EXPECT_TRUE(courses->items().empty()); |
| EXPECT_TRUE(courses->next_page_token().empty()); |
| } |
| |
| TEST(ClassroomApiCoursesResponseTypesTest, ConvertsCourses) { |
| const auto raw_courses = JSONReader::Read(R"( |
| { |
| "courses": [ |
| {"id": "course-1", "name": "Course Name 1", "courseState": "ACTIVE"}, |
| {"id": "course-2", "name": "Course Name 2", "courseState": "ARCHIVED"} |
| ] |
| })"); |
| ASSERT_TRUE(raw_courses); |
| |
| const auto courses = Courses::CreateFrom(raw_courses.value()); |
| ASSERT_TRUE(courses); |
| EXPECT_EQ(courses->items().size(), 2u); |
| EXPECT_TRUE(courses->next_page_token().empty()); |
| |
| EXPECT_EQ(courses->items().at(0)->id(), "course-1"); |
| EXPECT_EQ(courses->items().at(0)->name(), "Course Name 1"); |
| EXPECT_EQ(courses->items().at(0)->state(), Course::State::kActive); |
| |
| EXPECT_EQ(courses->items().at(1)->id(), "course-2"); |
| EXPECT_EQ(courses->items().at(1)->name(), "Course Name 2"); |
| EXPECT_EQ(courses->items().at(1)->state(), Course::State::kOther); |
| } |
| |
| TEST(ClassroomApiCoursesResponseTypesTest, ConvertsNextPageToken) { |
| const auto raw_courses = JSONReader::Read(R"( |
| { |
| "courses": [], |
| "nextPageToken": "qwerty" |
| })"); |
| ASSERT_TRUE(raw_courses); |
| |
| const auto courses = Courses::CreateFrom(raw_courses.value()); |
| ASSERT_TRUE(courses); |
| EXPECT_EQ(courses->next_page_token(), "qwerty"); |
| } |
| |
| TEST(ClassroomApiCoursesResponseTypesTest, ConvertsCourseStateToString) { |
| EXPECT_EQ(Course::StateToString(Course::State::kActive), "ACTIVE"); |
| } |
| |
| TEST(ClassroomApiCoursesResponseTypesTest, DoesNotCrashOnUnexpectedResponse) { |
| const auto raw_courses = JSONReader::Read(R"( |
| { |
| "courses": [{"id": []}], |
| "nextPageToken": true |
| })"); |
| ASSERT_TRUE(raw_courses); |
| |
| const auto courses = Courses::CreateFrom(raw_courses.value()); |
| ASSERT_FALSE(courses); |
| } |
| |
| } // namespace google_apis::classroom |