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