# 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("//src/experiences/settings/build/settings_app.gni")
import("//topaz/runtime/dart/flutter_test.gni")
import("//topaz/runtime/flutter_runner/flutter_app.gni")

settings_app("settings") {
  config = "settings.config"

  additional_sources = [
    "main.dart",
    "src/models/embedded_module.dart",
    "src/models/settings_status.dart",
    "src/setting_entry_parser.dart",
  ]

  additional_deps = [
    "//sdk/fidl/fuchsia.sys",
    "//sdk/fidl/fuchsia.ui.app",
    "//third_party/dart-pkg/pub/yaml",
    "//topaz/public/dart/zircon",
  ]
}

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

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

group("tests") {
  testonly = true

  deps = [ ":settings_tests" ]
}
