libweave: Fixed loading state definitions
Name and definitions was swapped.
BUG=brillo:1253, chrome-os-partner:44212
TEST=`FEATURES=test emerge-gizmo libweave buffet`
Change-Id: I218eb9ac8aad6edf3bcf334d368f32e51bc9a487
Reviewed-on: https://chromium-review.googlesource.com/294310
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Vitaly Buka <vitalybuka@chromium.org>
Tested-by: Vitaly Buka <vitalybuka@chromium.org>
diff --git a/libweave/src/states/state_manager.cc b/libweave/src/states/state_manager.cc
index 9d78178..c277ab4 100644
--- a/libweave/src/states/state_manager.cc
+++ b/libweave/src/states/state_manager.cc
@@ -36,7 +36,7 @@
// Load component-specific device state definitions.
for (const auto& pair : config_store->LoadStateDefs())
- CHECK(LoadStateDefinition(pair.first, pair.second, nullptr));
+ CHECK(LoadStateDefinition(pair.second, pair.first, nullptr));
// Load standard device state defaults.
CHECK(LoadStateDefaults(config_store->LoadBaseStateDefaults(), nullptr));
diff --git a/libweave/src/states/state_manager_unittest.cc b/libweave/src/states/state_manager_unittest.cc
index cf3d904..98723f7 100644
--- a/libweave/src/states/state_manager_unittest.cc
+++ b/libweave/src/states/state_manager_unittest.cc
@@ -11,6 +11,7 @@
#include <base/values.h>
#include <gmock/gmock.h>
#include <gtest/gtest.h>
+#include <weave/mock_config_store.h>
#include "libweave/src/commands/schema_constants.h"
#include "libweave/src/commands/unittest_utils.h"
@@ -24,25 +25,30 @@
using unittests::CreateDictionaryValue;
namespace {
+
+const char kBaseDefinition[] = R"({
+ "base": {
+ "manufacturer":"string",
+ "serialNumber":"string"
+ },
+ "device": {
+ "state_property":"string"
+ }
+})";
+
std::unique_ptr<base::DictionaryValue> GetTestSchema() {
- return CreateDictionaryValue(R"({
- 'base': {
- 'manufacturer':'string',
- 'serialNumber':'string'
- },
- 'device': {
- 'state_property':'string'
- }
- })");
+ return CreateDictionaryValue(kBaseDefinition);
}
+const char kBaseDefaults[] = R"({
+ "base": {
+ "manufacturer":"Test Factory",
+ "serialNumber":"Test Model"
+ }
+})";
+
std::unique_ptr<base::DictionaryValue> GetTestValues() {
- return CreateDictionaryValue(R"({
- 'base': {
- 'manufacturer':'Test Factory',
- 'serialNumber':'Test Model'
- }
- })");
+ return CreateDictionaryValue(kBaseDefaults);
}
} // anonymous namespace
@@ -131,6 +137,40 @@
EXPECT_JSON_EQ(expected, *mgr_->GetStateValuesAsJson());
}
+TEST_F(StateManagerTest, Startup) {
+ unittests::MockConfigStore config_store;
+ StateManager manager(&mock_state_change_queue_);
+
+ EXPECT_CALL(config_store, LoadBaseStateDefs())
+ .WillOnce(Return(kBaseDefinition));
+
+ EXPECT_CALL(config_store, LoadStateDefs())
+ .WillOnce(Return(std::map<std::string, std::string>{
+ {"powerd", R"({"power": {"battery_level":"integer"}})"}}));
+
+ EXPECT_CALL(config_store, LoadBaseStateDefaults())
+ .WillOnce(Return(kBaseDefaults));
+ EXPECT_CALL(config_store, LoadStateDefaults())
+ .WillOnce(Return(std::vector<std::string>{
+ R"({"power": {"battery_level":44}})"}));
+
+ manager.Startup(&config_store);
+
+ auto expected = R"({
+ 'base': {
+ 'manufacturer': 'Test Factory',
+ 'serialNumber': 'Test Model'
+ },
+ 'power': {
+ 'battery_level': 44
+ },
+ 'device': {
+ 'state_property': ''
+ }
+ })";
+ EXPECT_JSON_EQ(expected, *manager.GetStateValuesAsJson());
+}
+
TEST_F(StateManagerTest, SetPropertyValue) {
ValueMap expected_prop_set{
{"device.state_property",