# Copyright 2016 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.

group("testing") {
  testonly = true
  deps = [
    ":component_base",
    ":component_context_fake",
    ":component_main",
    ":entity_resolver_fake",
    ":fake_agent_runner_storage",
    ":ledger_repository_for_testing",
    ":mock_base",
    ":module_facet_reader_fake",
    ":module_resolver_fake",
    ":session_shell_base",
    ":session_shell_impl",
    ":story_controller_mock",
    ":story_provider_mock",
    ":test_driver",
    ":test_story_command_executor",
    ":test_with_ledger",
    ":test_with_session_storage",
    ":wait_until_idle",
  ]
}

source_set("component_base") {
  testonly = true

  sources = [
    "component_base.h",
  ]

  public_deps = [
    ":component_main",
    "//garnet/public/lib/component/cpp",
    "//peridot/lib/fidl:single_service_app",
    "//peridot/public/lib/integration_testing/cpp",
    "//src/lib/fxl",
  ]
}

source_set("component_main") {
  testonly = true

  sources = [
    "component_main.h",
  ]

  public_deps = [
    "//peridot/public/lib/app_driver/cpp:app_driver",
    "//zircon/public/lib/async-loop-cpp",
  ]
}

source_set("component_context_fake") {
  testonly = true

  sources = [
    "component_context_fake.cc",
    "component_context_fake.h",
  ]

  public_deps = [
    ":entity_resolver_fake",
    "//sdk/fidl/fuchsia.modular",
    "//src/lib/fxl",
  ]
}

source_set("entity_resolver_fake") {
  testonly = true

  sources = [
    "entity_resolver_fake.cc",
    "entity_resolver_fake.h",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.modular",
    "//src/lib/fxl",
  ]
}

source_set("module_resolver_fake") {
  testonly = true

  sources = [
    "module_resolver_fake.cc",
    "module_resolver_fake.h",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.modular",
    "//sdk/lib/fidl/cpp",
  ]
}

source_set("module_facet_reader_fake") {
  testonly = true

  sources = [
    "module_facet_reader_fake.cc",
    "module_facet_reader_fake.h",
  ]

  public_deps = [
    "//peridot/lib/module_manifest:module_facet_reader",
    "//sdk/fidl/fuchsia.modular",
    "//src/lib/fxl",
  ]
}

source_set("session_shell_base") {
  testonly = true

  sources = [
    "session_shell_base.h",
  ]

  public_deps = [
    ":component_base",
    ":session_shell_impl",
  ]
}

source_set("session_shell_impl") {
  testonly = true

  sources = [
    "session_shell_impl.cc",
    "session_shell_impl.h",
  ]

  public_deps = [
    "//garnet/public/lib/component/cpp",
    "//garnet/public/lib/fsl",
    "//peridot/public/lib/integration_testing/cpp",
    "//sdk/fidl/fuchsia.modular",
    "//sdk/fidl/fuchsia.ui.views",
    "//sdk/lib/fidl/cpp",
    "//src/lib/fxl",
    "//zircon/public/lib/async-loop-cpp",
  ]
}

source_set("story_controller_mock") {
  testonly = true

  sources = [
    "story_controller_mock.h",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.modular",
    "//sdk/fidl/fuchsia.ui.views",
    "//src/lib/fxl",
  ]

  deps = [
    "//sdk/lib/fidl/cpp",
  ]
}

source_set("story_provider_mock") {
  testonly = true

  sources = [
    "story_provider_mock.h",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.modular",
    "//src/lib/fxl",
  ]

  deps = [
    ":story_controller_mock",
    "//sdk/lib/fidl/cpp",
  ]
}

source_set("test_story_command_executor") {
  testonly = true

  sources = [
    "test_story_command_executor.cc",
    "test_story_command_executor.h",
  ]

  deps = [
    "//peridot/bin/sessionmgr/puppet_master:story_command_executor",
    "//peridot/lib/fidl:clone",
    "//sdk/fidl/fuchsia.modular",
  ]
}

source_set("test_with_ledger") {
  testonly = true

  sources = [
    "test_with_ledger.cc",
    "test_with_ledger.h",
  ]

  public_deps = [
    ":ledger_repository_for_testing",
    "//garnet/public/lib/component/cpp",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/gtest",
    "//peridot/lib/ledger_client:page_client",
    "//src/lib/fxl",
    "//third_party/googletest:gtest",
  ]
}

source_set("test_with_session_storage") {
  testonly = true

  sources = [
    "test_with_session_storage.cc",
    "test_with_session_storage.h",
  ]

  public_deps = [
    ":test_with_ledger",
    "//peridot/bin/sessionmgr/storage",
    "//sdk/fidl/fuchsia.modular",
  ]
}

source_set("fake_agent_runner_storage") {
  testonly = true

  sources = [
    "fake_agent_runner_storage.h",
  ]

  deps = [
    "//garnet/public/lib/fsl",
    "//peridot/bin/sessionmgr/agent_runner:public",
    "//src/lib/fxl",
  ]
}

source_set("ledger_repository_for_testing") {
  testonly = true

  sources = [
    "ledger_repository_for_testing.cc",
    "ledger_repository_for_testing.h",
  ]

  deps = [
    "//garnet/public/lib/component/cpp",
    "//garnet/public/lib/fsl",
    "//peridot/lib/common:teardown",
    "//peridot/lib/fidl:app_client",
    "//peridot/lib/ledger_client:constants",
    "//peridot/lib/ledger_client:status",
    "//sdk/fidl/fuchsia.ledger",
    "//sdk/fidl/fuchsia.sys",
    "//src/ledger/bin/fidl",
    "//src/lib/fxl",
  ]

  public_deps = [
    "//peridot/lib/scoped_tmpfs",
    "//sdk/fidl/fuchsia.modular",
  ]
}

source_set("mock_base") {
  testonly = true

  sources = [
    "mock_base.cc",
    "mock_base.h",
  ]

  deps = [
    "//src/lib/fxl",
    "//third_party/googletest:gtest",
  ]
}

source_set("wait_until_idle") {
  testonly = true

  sources = [
    "wait_until_idle.h",
  ]

  public_deps = [
    "//zircon/public/lib/async-loop-cpp",
  ]

  deps = [
    "//garnet/public/lib/fsl",
    "//third_party/googletest:gtest",
  ]
}

source_set("test_driver") {
  sources = [
    "test_driver.h",
  ]
}
