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",