diff --git a/phosphor-regulators/test/actions/action_environment_tests.cpp b/phosphor-regulators/test/actions/action_environment_tests.cpp
index de52845..cea1bd2 100644
--- a/phosphor-regulators/test/actions/action_environment_tests.cpp
+++ b/phosphor-regulators/test/actions/action_environment_tests.cpp
@@ -19,6 +19,7 @@
 #include "id_map.hpp"
 #include "mock_services.hpp"
 #include "mocked_i2c_interface.hpp"
+#include "phase_fault.hpp"
 #include "rule.hpp"
 
 #include <cstddef> // for size_t
@@ -53,8 +54,10 @@
     try
     {
         ActionEnvironment env{idMap, "regulator1", services};
+        EXPECT_EQ(env.getAdditionalErrorData().size(), 0);
         EXPECT_EQ(env.getDevice().getID(), "regulator1");
         EXPECT_EQ(env.getDeviceID(), "regulator1");
+        EXPECT_EQ(env.getPhaseFaults().size(), 0);
         EXPECT_EQ(env.getRuleDepth(), 0);
         EXPECT_EQ(env.getVolts().has_value(), false);
     }
@@ -64,6 +67,44 @@
     }
 }
 
+TEST(ActionEnvironmentTests, AddAdditionalErrorData)
+{
+    IDMap idMap{};
+    MockServices services{};
+    ActionEnvironment env{idMap, "", services};
+    EXPECT_EQ(env.getAdditionalErrorData().size(), 0);
+
+    env.addAdditionalErrorData("foo", "foo_value");
+    env.addAdditionalErrorData("bar", "bar_value");
+    EXPECT_EQ(env.getAdditionalErrorData().size(), 2);
+    EXPECT_EQ(env.getAdditionalErrorData().at("foo"), "foo_value");
+    EXPECT_EQ(env.getAdditionalErrorData().at("bar"), "bar_value");
+}
+
+TEST(ActionEnvironmentTests, AddPhaseFault)
+{
+    IDMap idMap{};
+    MockServices services{};
+    ActionEnvironment env{idMap, "", services};
+    EXPECT_EQ(env.getPhaseFaults().size(), 0);
+
+    // Add N phase fault
+    env.addPhaseFault(PhaseFaultType::n);
+    EXPECT_EQ(env.getPhaseFaults().size(), 1);
+    EXPECT_EQ(env.getPhaseFaults().count(PhaseFaultType::n), 1);
+    EXPECT_EQ(env.getPhaseFaults().count(PhaseFaultType::n_plus_1), 0);
+
+    // Add N+1 phase fault
+    env.addPhaseFault(PhaseFaultType::n_plus_1);
+    EXPECT_EQ(env.getPhaseFaults().size(), 2);
+    EXPECT_EQ(env.getPhaseFaults().count(PhaseFaultType::n), 1);
+    EXPECT_EQ(env.getPhaseFaults().count(PhaseFaultType::n_plus_1), 1);
+
+    // Add N+1 phase fault again; should be ignored since stored in a std::set
+    env.addPhaseFault(PhaseFaultType::n_plus_1);
+    EXPECT_EQ(env.getPhaseFaults().size(), 2);
+}
+
 TEST(ActionEnvironmentTests, DecrementRuleDepth)
 {
     IDMap idMap{};
@@ -81,6 +122,22 @@
     EXPECT_EQ(env.getRuleDepth(), 0);
 }
 
+TEST(ActionEnvironmentTests, GetAdditionalErrorData)
+{
+    IDMap idMap{};
+    MockServices services{};
+    ActionEnvironment env{idMap, "", services};
+    EXPECT_EQ(env.getAdditionalErrorData().size(), 0);
+
+    env.addAdditionalErrorData("foo", "foo_value");
+    EXPECT_EQ(env.getAdditionalErrorData().size(), 1);
+    EXPECT_EQ(env.getAdditionalErrorData().at("foo"), "foo_value");
+
+    env.addAdditionalErrorData("bar", "bar_value");
+    EXPECT_EQ(env.getAdditionalErrorData().size(), 2);
+    EXPECT_EQ(env.getAdditionalErrorData().at("bar"), "bar_value");
+}
+
 TEST(ActionEnvironmentTests, GetDevice)
 {
     // Create IDMap
@@ -140,6 +197,20 @@
     EXPECT_EQ(env.getDeviceID(), "regulator1");
 }
 
+TEST(ActionEnvironmentTests, GetPhaseFaults)
+{
+    IDMap idMap{};
+    MockServices services{};
+    ActionEnvironment env{idMap, "", services};
+    EXPECT_EQ(env.getPhaseFaults().size(), 0);
+
+    env.addPhaseFault(PhaseFaultType::n);
+    env.addPhaseFault(PhaseFaultType::n_plus_1);
+    EXPECT_EQ(env.getPhaseFaults().size(), 2);
+    EXPECT_EQ(env.getPhaseFaults().count(PhaseFaultType::n), 1);
+    EXPECT_EQ(env.getPhaseFaults().count(PhaseFaultType::n_plus_1), 1);
+}
+
 TEST(ActionEnvironmentTests, GetRule)
 {
     // Create IDMap
diff --git a/phosphor-regulators/test/meson.build b/phosphor-regulators/test/meson.build
index 3f16812..897e540 100644
--- a/phosphor-regulators/test/meson.build
+++ b/phosphor-regulators/test/meson.build
@@ -14,6 +14,7 @@
     'exception_utils_tests.cpp',
     'ffdc_file_tests.cpp',
     'id_map_tests.cpp',
+    'phase_fault_tests.cpp',
     'pmbus_error_tests.cpp',
     'pmbus_utils_tests.cpp',
     'presence_detection_tests.cpp',
diff --git a/phosphor-regulators/test/phase_fault_tests.cpp b/phosphor-regulators/test/phase_fault_tests.cpp
new file mode 100644
index 0000000..5c18add
--- /dev/null
+++ b/phosphor-regulators/test/phase_fault_tests.cpp
@@ -0,0 +1,26 @@
+/**
+ * Copyright © 2021 IBM Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include "phase_fault.hpp"
+
+#include <gtest/gtest.h>
+
+using namespace phosphor::power::regulators;
+
+TEST(PhaseFaultTests, ToString)
+{
+    EXPECT_EQ(toString(PhaseFaultType::n), "n");
+    EXPECT_EQ(toString(PhaseFaultType::n_plus_1), "n+1");
+}
