chromium/ash/glanceables/classroom/fake_glanceables_classroom_client.cc

// 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 "ash/glanceables/classroom/fake_glanceables_classroom_client.h"

#include <string>

#include "ash/glanceables/classroom/glanceables_classroom_types.h"
#include "base/functional/callback.h"
#include "base/functional/callback_forward.h"
#include "base/strings/stringprintf.h"
#include "base/time/time.h"
#include "url/gurl.h"

namespace ash {
namespace {

std::vector<std::unique_ptr<GlanceablesClassroomAssignment>>
CreateAssignmentsWithStringForStudents(
    const std::string& course_work_name_prefix,
    int count) {
  std::vector<std::unique_ptr<GlanceablesClassroomAssignment>> assignments;
  for (int i = 0; i < count; ++i) {
    assignments.push_back(std::make_unique<GlanceablesClassroomAssignment>(
        base::StringPrintf("Course %d", i),
        base::StringPrintf("%s Course Work %d", course_work_name_prefix.c_str(),
                           i),
        GURL(base::StringPrintf(
            "https://classroom.google.com/c/test/a/test_course_id_%d/details",
            i)),
        std::nullopt, base::Time(), std::nullopt));
  }
  return assignments;
}

}  // namespace

FakeGlanceablesClassroomClient::FakeGlanceablesClassroomClient() = default;

FakeGlanceablesClassroomClient::~FakeGlanceablesClassroomClient() = default;

void FakeGlanceablesClassroomClient::SetAssignmentsCount(size_t count) {
  assignments_count_ = count;
}

bool FakeGlanceablesClassroomClient::IsDisabledByAdmin() const {
  return is_disabled_by_admin_;
}

void FakeGlanceablesClassroomClient::IsStudentRoleActive(
    IsRoleEnabledCallback callback) {
  std::move(callback).Run(true);
}

void FakeGlanceablesClassroomClient::GetCompletedStudentAssignments(
    GetAssignmentsCallback callback) {
  std::move(callback).Run(true, CreateAssignmentsWithStringForStudents(
                                    "Completed", assignments_count_));
}

void FakeGlanceablesClassroomClient::
    GetStudentAssignmentsWithApproachingDueDate(
        GetAssignmentsCallback callback) {
  std::move(callback).Run(true, CreateAssignmentsWithStringForStudents(
                                    "Approaching", assignments_count_));
}

void FakeGlanceablesClassroomClient::GetStudentAssignmentsWithMissedDueDate(
    GetAssignmentsCallback callback) {
  std::move(callback).Run(true, CreateAssignmentsWithStringForStudents(
                                    "Missing", assignments_count_));
}

void FakeGlanceablesClassroomClient::GetStudentAssignmentsWithoutDueDate(
    GetAssignmentsCallback callback) {
  std::move(callback).Run(true, CreateAssignmentsWithStringForStudents(
                                    "No Due Date", assignments_count_));
}

void FakeGlanceablesClassroomClient::OnGlanceablesBubbleClosed() {}

}  // namespace ash