Remove retry "GetProperty" on fail

Removed retry "GetProperty" on fail when sensor is not present.
Monitoring PropertiesChanged signal is enough to get the latest
value from sensor when it is added to dbus environment. Added
test that check if newly added properties to dbus environment
send PropertiesChanged signal.

Tested: - All unit tests passed

Change-Id: Ibe92b23dd062a6d48b0b6d5bc0dc2198bcfa7a5e
Signed-off-by: Wludzik, Jozef <jozef.wludzik@intel.com>
diff --git a/tests/src/test_sensor.cpp b/tests/src/test_sensor.cpp
index 1398738..5339047 100644
--- a/tests/src/test_sensor.cpp
+++ b/tests/src/test_sensor.cpp
@@ -20,7 +20,7 @@
   public:
     void SetUp() override
     {
-        sensorObject.setValue(42.7);
+        sensorObject->setValue(42.7);
     }
 
     void TearDown() override
@@ -31,33 +31,36 @@
     void
         registerForUpdates(std::shared_ptr<interfaces::SensorListener> listener)
     {
-        DbusEnvironment::synchronizedPost(
-            [this, listener] { sut->registerForUpdates(listener); });
+        sut->registerForUpdates(listener);
+        DbusEnvironment::synchronizeIoc();
     }
 
-    std::chrono::milliseconds notifiesInGivenIntervalAfterSchedule(
-        std::chrono::milliseconds interval);
+    static std::unique_ptr<stubs::DbusSensorObject> makeSensorObject()
+    {
+        return std::make_unique<stubs::DbusSensorObject>(
+            DbusEnvironment::getIoc(), DbusEnvironment::getBus(),
+            DbusEnvironment::getObjServer());
+    }
 
-    stubs::DbusSensorObject sensorObject{DbusEnvironment::getIoc(),
-                                         DbusEnvironment::getBus(),
-                                         DbusEnvironment::getObjServer()};
+    std::unique_ptr<stubs::DbusSensorObject> sensorObject = makeSensorObject();
 
     SensorCache sensorCache;
     uint64_t timestamp = std::time(0);
     std::shared_ptr<Sensor> sut = sensorCache.makeSensor<Sensor>(
-        DbusEnvironment::serviceName(), sensorObject.path(),
+        DbusEnvironment::serviceName(), sensorObject->path(),
         DbusEnvironment::getIoc(), DbusEnvironment::getBus());
     std::shared_ptr<SensorListenerMock> listenerMock =
         std::make_shared<StrictMock<SensorListenerMock>>();
     std::shared_ptr<SensorListenerMock> listenerMock2 =
         std::make_shared<StrictMock<SensorListenerMock>>();
+    MockFunction<void()> checkPoint;
 };
 
 TEST_F(TestSensor, createsCorretlyViaSensorCache)
 {
     ASSERT_THAT(sut->id(),
                 Eq(Sensor::Id("Sensor", DbusEnvironment::serviceName(),
-                              sensorObject.path())));
+                              sensorObject->path())));
 }
 
 TEST_F(TestSensor, notifiesWithValueAfterRegister)
@@ -110,40 +113,36 @@
     EXPECT_CALL(*listenerMock, sensorUpdated(Ref(*sut), Ge(timestamp), 42.7))
         .WillOnce(InvokeWithoutArgs(DbusEnvironment::setPromise("notify")));
 
-    sensorObject.setValue(42.7);
+    sensorObject->setValue(42.7);
 
     ASSERT_TRUE(DbusEnvironment::waitForFuture("notify"));
 }
 
 TEST_F(TestSensorNotification, notifiesListenerWithValueWhenNoChangeOccurs)
 {
-    Sequence seq;
+    InSequence seq;
 
-    EXPECT_CALL(*listenerMock, sensorUpdated(Ref(*sut), Ge(timestamp), 42.7))
-        .InSequence(seq);
+    EXPECT_CALL(*listenerMock, sensorUpdated(Ref(*sut), Ge(timestamp), 42.7));
     EXPECT_CALL(*listenerMock, sensorUpdated(Ref(*sut), Ge(timestamp)))
-        .InSequence(seq)
         .WillOnce(InvokeWithoutArgs(DbusEnvironment::setPromise("notify")));
 
-    sensorObject.setValue(42.7);
-    sensorObject.setValue(42.7);
+    sensorObject->setValue(42.7);
+    sensorObject->setValue(42.7);
 
     ASSERT_TRUE(DbusEnvironment::waitForFuture("notify"));
 }
 
 TEST_F(TestSensorNotification, doesntNotifyExpiredListener)
 {
-    Sequence seq;
-    EXPECT_CALL(*listenerMock2, sensorUpdated(Ref(*sut), Ge(timestamp), 0.))
-        .InSequence(seq);
+    InSequence seq;
+    EXPECT_CALL(*listenerMock2, sensorUpdated(Ref(*sut), Ge(timestamp), 0.));
     EXPECT_CALL(*listenerMock2, sensorUpdated(Ref(*sut), Ge(timestamp), 42.7))
-        .InSequence(seq)
         .WillOnce(InvokeWithoutArgs(DbusEnvironment::setPromise("notify")));
 
     registerForUpdates(listenerMock2);
     listenerMock = nullptr;
 
-    sensorObject.setValue(42.7);
+    sensorObject->setValue(42.7);
 
     ASSERT_TRUE(DbusEnvironment::waitForFuture("notify"));
 }
@@ -154,3 +153,28 @@
 
     registerForUpdates(listenerMock2);
 }
+
+TEST_F(TestSensorNotification,
+       dbusSensorIsAddedToSystemAfterSensorIsCreatedThenValueIsUpdated)
+{
+    InSequence seq;
+
+    EXPECT_CALL(*listenerMock,
+                sensorUpdated(Ref(*sut), Ge(timestamp), DoubleEq(42.7)))
+        .WillOnce(
+            InvokeWithoutArgs(DbusEnvironment::setPromise("notify-change")));
+    EXPECT_CALL(checkPoint, Call());
+    EXPECT_CALL(*listenerMock,
+                sensorUpdated(Ref(*sut), Ge(timestamp), DoubleEq(0.)))
+        .WillOnce(
+            InvokeWithoutArgs(DbusEnvironment::setPromise("notify-create")));
+
+    sensorObject->setValue(42.7);
+    DbusEnvironment::waitForFuture("notify-change");
+
+    checkPoint.Call();
+
+    sensorObject = nullptr;
+    sensorObject = makeSensorObject();
+    DbusEnvironment::waitForFuture("notify-create");
+}