# Copyright 2018 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/dart/dart_library.gni")
import("//topaz/runtime/dart/flutter_test.gni")

dart_library("client") {
  package_name = "lib_setui_settings_client"

  sources = [
    "time_zone_controller.dart",
    "wireless_controller.dart",
  ]

  deps = [
    "//sdk/fidl/fuchsia.setui",
    "//topaz/lib/setui/common:common",
    "//topaz/lib/setui/flutter:flutter",
    "//topaz/lib/setui/settings/common:common",
  ]
}

flutter_test("lib_setui_settings_client_test") {
  sources = [
    "time_zone_controller_test.dart",
    # STOPSHIP(brycelee): add test back once migration to new api is complete.
    #"wireless_controller_test.dart",
  ]

  deps = [
    ":client",
    "//sdk/fidl/fuchsia.setui",
    "//third_party/dart-pkg/git/flutter/packages/flutter_test",
    "//third_party/dart-pkg/pub/mockito",
    "//third_party/dart-pkg/pub/test",
  ]
}
