# 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("//peridot/build/tests_package.gni")

# Convenience dep for most Systems.
group("model") {
  public_deps = [
    ":story_mutator",
    ":story_observer",
    "//peridot/public/fidl/fuchsia.modular.storymodel",
  ]
}

hermetic_tests_package("story_model_unittests") {
  deps = [
    ":apply_mutations_unittest",
    ":story_model_owner_unittest",

    # DISALBED: FLAKY ":ledger_story_model_storage_unittest",
  ]
}

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

  public_deps = [
    "//peridot/public/fidl/fuchsia.modular.storymodel",
  ]
}

source_set("story_mutator") {
  sources = [
    "story_mutator.cc",
    "story_mutator.h",
  ]

  public_deps = [
    "//peridot/public/fidl/fuchsia.modular.storymodel",
  ]
}

source_set("story_model_storage") {
  sources = [
    "story_model_storage.cc",
    "story_model_storage.h",
  ]

  public_deps = [
    "//peridot/public/fidl/fuchsia.modular.storymodel",
  ]
}

source_set("apply_mutations") {
  sources = [
    "apply_mutations.cc",
    "apply_mutations.h",
  ]

  public_deps = [
    "//peridot/public/fidl/fuchsia.modular.storymodel",
    "//peridot/public/lib/fostr/fidl/fuchsia.modular.storymodel",
  ]

  deps = [
    "//garnet/public/lib/fxl",
  ]
}

executable("apply_mutations_unittest") {
  testonly = true

  sources = [
    "apply_mutations_unittest.cc",
  ]

  deps = [
    ":apply_mutations",
    "//third_party/googletest:gtest",
    "//third_party/googletest:gtest_main",
  ]
}

source_set("noop_story_model_storage") {
  sources = [
    "noop_story_model_storage.cc",
    "noop_story_model_storage.h",
  ]

  public_deps = [
    "//peridot/public/fidl/fuchsia.modular.storymodel",
  ]

  deps = [
    ":story_model_storage",
    "//garnet/public/lib/fxl",
  ]
}

source_set("ledger_story_model_storage") {
  sources = [
    "ledger_story_model_storage.cc",
    "ledger_story_model_storage.h",
  ]

  public_deps = [
    "//peridot/public/fidl/fuchsia.modular.storymodel",
  ]

  deps = [
    ":apply_mutations",
    ":story_model_storage",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/fxl",
    "//peridot/lib/fidl:array_to_string",
    "//peridot/lib/ledger_client:page_client",
    "//peridot/lib/ledger_client:promise",
    "//peridot/public/fidl/fuchsia.ledger",
  ]
}

executable("ledger_story_model_storage_unittest") {
  testonly = true

  sources = [
    "ledger_story_model_storage_unittest.cc",
  ]

  deps = [
    ":apply_mutations",
    ":ledger_story_model_storage",
    "testing",
    "//garnet/public/lib/async_promise",
    "//peridot/lib/ledger_client:page_client",
    "//peridot/lib/testing:test_with_ledger",
    "//third_party/googletest:gtest",
    "//third_party/googletest:gtest_main",
  ]
}

source_set("story_model_owner") {
  sources = [
    "story_model_owner.cc",
    "story_model_owner.h",
  ]

  public_deps = [
    "//garnet/public/lib/async_promise",
    "//garnet/public/lib/fxl",
    "//peridot/public/fidl/fuchsia.modular.storymodel",
  ]

  deps = [
    ":apply_mutations",
    ":story_model_storage",
    ":story_mutator",
    ":story_observer",
  ]
}

executable("story_model_owner_unittest") {
  testonly = true

  sources = [
    "story_model_owner_unittest.cc",
  ]

  deps = [
    ":story_model_owner",
    ":story_model_storage",
    "//garnet/public/lib/gtest",
    "//third_party/googletest:gtest",
    "//third_party/googletest:gtest_main",
  ]
}
