# 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/package.gni")
import("//topaz/runtime/dart/flutter_test.gni")
import("//topaz/runtime/flutter_runner/flutter_app.gni")

flutter_app("settings") {

  main_dart = "lib/main.dart"

  package_name = "settings"

  manifest = "pubspec.yaml"

  meta = [
    {
      path = rebase_path("meta/settings.cmx")
      dest = "settings.cmx"
    },
  ]

  sources = [
    "src/models/settings_model.dart",
    "src/widgets/all_settings.dart",
  ]

  deps = [
    "//sdk/fidl/fuchsia.modular",
    "//sdk/fidl/fuchsia.timezone",
    "//sdk/fidl/fuchsia.ui.views",
    "//sdk/fidl/fuchsia.wlan.service",
    "//third_party/dart-pkg/git/flutter/packages/flutter_test",
    "//third_party/dart-pkg/git/flutter/packages/flutter",
    "//third_party/dart-pkg/pub/meta",
    "//topaz/lib/settings:lib.settings",
    "//topaz/public/dart/fuchsia_logger",
    "//topaz/public/dart/fuchsia_modular",
    "//topaz/public/dart/fuchsia_scenic_flutter",
    "//topaz/public/dart/fuchsia_services",
    "//topaz/public/dart/widgets:lib.widgets",
  ]
}

flutter_test("settings_tests") {
  sources = [
    "settings_model_test.dart",
  ]

  deps = [
    ":settings_dart_library",
    "//third_party/dart-pkg/pub/test",
  ]
}

group("tests") {
  testonly = true

  deps = [
    ":settings_tests",
  ]
}
