[modular][storymodel] Improve ergonomics of constructing a TestMutator.

TEST=fx run-test story_visibility_system_unittest

Change-Id: I2732c06d81696117c06ff339f655c1b1c4960d12
diff --git a/bin/sessionmgr/story/model/testing/test_mutator.cc b/bin/sessionmgr/story/model/testing/test_mutator.cc
index 56e69e3..1ee3a2a 100644
--- a/bin/sessionmgr/story/model/testing/test_mutator.cc
+++ b/bin/sessionmgr/story/model/testing/test_mutator.cc
@@ -6,6 +6,13 @@
 
 namespace modular {
 
+
+std::unique_ptr<StoryMutator> TestMutator::Create(TestMutator** ptr) {
+  auto mutator = std::make_unique<TestMutator>();
+  *ptr = mutator.get();
+  return mutator;
+}
+
 fit::consumer<> TestMutator::ExecuteInternal(
     std::vector<fuchsia::modular::storymodel::StoryModelMutation> commands) {
   fit::bridge<> bridge;
diff --git a/bin/sessionmgr/story/model/testing/test_mutator.h b/bin/sessionmgr/story/model/testing/test_mutator.h
index 072e6c9..52f044c 100644
--- a/bin/sessionmgr/story/model/testing/test_mutator.h
+++ b/bin/sessionmgr/story/model/testing/test_mutator.h
@@ -24,6 +24,15 @@
 // unblock.
 class TestMutator : public StoryMutator {
  public:
+  // Convenience factory allowing the caller to retain a pointer to the TestMutator
+  // when constructing a class that accepts a StoryMutator as a constructor argument.
+  //
+  // Usage:
+  //
+  // TestMutator* test_mutator;
+  // Foo foo(TestMutator::Create(&test_mutator));
+  static std::unique_ptr<StoryMutator> Create(TestMutator** ptr);
+
   fit::consumer<> ExecuteInternal(
       std::vector<fuchsia::modular::storymodel::StoryModelMutation> commands)
       override;
diff --git a/bin/sessionmgr/story/systems/story_visibility_system_unittest.cc b/bin/sessionmgr/story/systems/story_visibility_system_unittest.cc
index 94dd0f9..6dea661 100644
--- a/bin/sessionmgr/story/systems/story_visibility_system_unittest.cc
+++ b/bin/sessionmgr/story/systems/story_visibility_system_unittest.cc
@@ -19,9 +19,8 @@
 class StoryVisibilitySystemTest : public ::testing::Test {
  protected:
   StoryVisibilitySystemTest() {
-    auto mutator = std::make_unique<TestMutator>();
-    mutator_ = mutator.get();
-    system_ = std::make_unique<StoryVisibilitySystem>(std::move(mutator));
+    system_ =
+        std::make_unique<StoryVisibilitySystem>(TestMutator::Create(&mutator_));
   }
 
   std::unique_ptr<StoryVisibilitySystem> system_;