| // Copyright 2024 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_students_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(ClassroomApiStudentsResponseTypesTest, ConvertsEmptyResponse) { |
| auto raw_students = JSONReader::Read("{}"); |
| ASSERT_TRUE(raw_students); |
| |
| auto students = Students::CreateFrom(raw_students.value()); |
| ASSERT_TRUE(students); |
| EXPECT_TRUE(students->items().empty()); |
| EXPECT_TRUE(students->next_page_token().empty()); |
| } |
| |
| TEST(ClassroomApiStudentsResponseTypesTest, ConvertsStudents) { |
| const auto raw_students = JSONReader::Read(R"( |
| { |
| "students":[ |
| { |
| "profile":{ |
| "id":"student-1", |
| "name":{ |
| "fullName":"Student1 full" |
| }, |
| "emailAddress":"student1@foo.com" |
| } |
| }, |
| { |
| "profile":{ |
| "id":"student-2", |
| "name":{ |
| "fullName":"Student2 full" |
| }, |
| "emailAddress":"student2@foo.com" |
| } |
| } |
| ] |
| })"); |
| ASSERT_TRUE(raw_students); |
| |
| const auto students = Students::CreateFrom(raw_students.value()); |
| ASSERT_TRUE(students); |
| EXPECT_EQ(students->items().size(), 2u); |
| EXPECT_TRUE(students->next_page_token().empty()); |
| |
| EXPECT_EQ(students->items().at(0)->profile().id(), "student-1"); |
| EXPECT_EQ(students->items().at(0)->profile().name().full_name(), |
| "Student1 full"); |
| EXPECT_EQ(students->items().at(0)->profile().email_address(), |
| "student1@foo.com"); |
| |
| EXPECT_EQ(students->items().at(1)->profile().id(), "student-2"); |
| EXPECT_EQ(students->items().at(1)->profile().name().full_name(), |
| "Student2 full"); |
| EXPECT_EQ(students->items().at(1)->profile().email_address(), |
| "student2@foo.com"); |
| } |
| |
| TEST(ClassroomApiStudentsResponseTypesTest, ConvertsNextPageToken) { |
| const auto raw_students = JSONReader::Read(R"( |
| { |
| "students": [], |
| "nextPageToken": "qwerty" |
| })"); |
| ASSERT_TRUE(raw_students); |
| |
| const auto students = Students::CreateFrom(raw_students.value()); |
| ASSERT_TRUE(students); |
| EXPECT_EQ(students->next_page_token(), "qwerty"); |
| } |
| |
| TEST(ClassroomApiStudentsResponseTypesTest, DoesNotCrashOnUnexpectedResponse) { |
| const auto raw_students = JSONReader::Read(R"( |
| { |
| "students": [{"id": []}], |
| "nextPageToken": true |
| })"); |
| ASSERT_TRUE(raw_students); |
| |
| const auto students = Students::CreateFrom(raw_students.value()); |
| ASSERT_FALSE(students); |
| } |
| |
| } // namespace google_apis::classroom |