@@ -17,6 +17,34 @@ namespace CSAPItest {
1717 {
1818 private:
1919 TestHelper testHelper;
20+
21+ ConnectedSystemsAPI::DataModels::Data::DataBlockMixed createTestDataBlock (const std::string& dataStreamId) {
22+ // Get the schema to know what kind of observation to create
23+ auto schemaResponse = testHelper.csapi .getDataStreamsAPI ().getObservationSchema (dataStreamId);
24+ auto schema = schemaResponse.getItems ().at (0 ).getResultSchema ();
25+ auto schemaDataRecord = dynamic_cast <const ConnectedSystemsAPI::DataModels::Component::DataRecord*>(schema);
26+ // Create a data block according to the schema
27+ ConnectedSystemsAPI::DataModels::Data::DataBlockMixed dataBlock = schemaDataRecord->createDataBlock ();
28+ return dataBlock;
29+ }
30+
31+ ConnectedSystemsAPI::DataModels::Observation pushTestObservation (const std::string& dataStreamId, const ConnectedSystemsAPI::DataModels::Data::DataBlockMixed& dataBlock) {
32+ auto now = ConnectedSystemsAPI::DataModels::TimeInstant (std::chrono::system_clock::now ());
33+ auto observation = ConnectedSystemsAPI::DataModels::ObservationBuilder ()
34+ .withResultTime (now)
35+ .withResult (dataBlock)
36+ .build ();
37+ testHelper.csapi .getObservationsAPI ().createObservation (dataStreamId, observation);
38+ return getTestObservation (dataStreamId);
39+ }
40+
41+ ConnectedSystemsAPI::DataModels::Observation getTestObservation (const std::string& dataStreamId) {
42+ auto observationsResponse = testHelper.csapi .getObservationsAPI ().getObservationsOfDataStream (dataStreamId);
43+ Assert::IsTrue (observationsResponse.isSuccessful ());
44+ Assert::IsTrue (observationsResponse.getItems ().size () > 0 );
45+ return observationsResponse.getItems ().at (0 );
46+ }
47+
2048 public:
2149 TEST_METHOD_INITIALIZE (ClassInitialize) {
2250 testHelper = TestHelper ();
@@ -45,54 +73,17 @@ namespace CSAPItest {
4573 }
4674
4775 TEST_METHOD (CreateObservation) {
48- testHelper.createTestSystem ();
49- std::string systemId = testHelper.getTestSystemId ();
50- auto dataStream = testHelper.createDataStream ();
51- auto dataStreamCreateResponse = testHelper.csapi .getDataStreamsAPI ().createDataStream (systemId, dataStream);
52- auto dataStreamGetResponse = testHelper.csapi .getDataStreamsAPI ().getDataStreams ();
53-
54- // First create a datastream
55- std::string dataStreamId;
56- for (const auto & ds : dataStreamGetResponse.getItems ()) {
57- if (ds.getName ().value_or (" " ) == dataStream.getName ().value_or (" " )) {
58- dataStreamId = ds.getId ().value_or (" " );
59- break ;
60- }
61- }
62- assert (!dataStreamId.empty ());
76+ auto systemId = testHelper.createTestSystem ();
77+ auto dataStreamId = testHelper.createTestDataStream (systemId);
78+ auto dataBlock = createTestDataBlock (dataStreamId);
6379
64- // Get the schema to know what kind of observation to create
65- auto schemaResponse = testHelper.csapi .getDataStreamsAPI ().getObservationSchema (dataStreamId);
66- Assert::IsTrue (schemaResponse.isSuccessful ());
67- auto schema = schemaResponse.getItems ().at (0 ).getResultSchema ();
68- auto schemaDataRecord = dynamic_cast <const ConnectedSystemsAPI::DataModels::Component::DataRecord*>(schema);
69- Assert::IsNotNull (schemaDataRecord);
70- // Create a data block according to the schema
71- auto dataBlock = schemaDataRecord->createDataBlock ();
7280 dataBlock.setField (" booleanField" , ConnectedSystemsAPI::DataModels::Data::DataValue (true ));
81+ auto observation = pushTestObservation (dataStreamId, dataBlock);
7382
74- auto now = ConnectedSystemsAPI::DataModels::TimeInstant (std::chrono::system_clock::now ());
75-
76- // Then create an observation for that datastream
77- auto observation = ConnectedSystemsAPI::DataModels::ObservationBuilder ()
78- .withResultTime (now)
79- .withResult (dataBlock)
80- .build ();
81- // Print out the observation JSON
82- std::cout << " Observation to Create: " << observation.toJson ().dump (2 ) << std::endl;
83-
84- auto observationCreateResponse = testHelper.csapi .getObservationsAPI ().createObservation (dataStreamId, observation);
85- std::cout << " Create Observation Response Code: " << observationCreateResponse.getResponseCode () << std::endl;
86- Assert::IsTrue (observationCreateResponse.isSuccessful ());
87-
88- // Get the observations to verify
89- auto observationsResponse = testHelper.csapi .getObservationsAPI ().getObservationsOfDataStream (dataStreamId);
90- Assert::IsTrue (observationsResponse.isSuccessful ());
91- Assert::IsTrue (observationsResponse.getItems ().size () > 0 );
9283 // Verify the data stream id matches
93- Assert::AreEqual (dataStreamId, observationsResponse. getItems (). at ( 0 ) .getDataStreamId ().value_or (" " ));
84+ Assert::AreEqual (dataStreamId, observation .getDataStreamId ().value_or (" " ));
9485 // Verify the result matches
95- const auto * resultValue = observationsResponse. getItems (). at ( 0 ) .getResult ().getField (" booleanField" );
86+ const auto * resultValue = observation .getResult ().getField (" booleanField" );
9687 Assert::IsNotNull (resultValue);
9788 Assert::IsTrue (std::holds_alternative<bool >(resultValue->value ));
9889 }
@@ -138,9 +129,33 @@ namespace CSAPItest {
138129 // Verify the result matches
139130 const auto * resultValue = observationsResponse.getItems ().at (0 ).getResult ().getField (" data" );
140131 Assert::IsNotNull (resultValue);
141- std::cout << " Result value type index: " << resultValue->value .index () << std::endl;
142132 Assert::IsTrue (std::holds_alternative<std::string>(resultValue->value ));
143- std::cout << " Result value: " << std::get<std::string>(resultValue->value ) << std::endl;
133+ }
134+
135+ TEST_METHOD (GetObservationById) {
136+ auto systemId = testHelper.createTestSystem ();
137+ auto dataStreamId = testHelper.createTestDataStream (systemId);
138+ auto dataBlock = createTestDataBlock (dataStreamId);
139+ auto observation = pushTestObservation (dataStreamId, dataBlock);
140+ auto observationId = observation.getId ().value_or (" " );
141+
142+ auto getResponse = testHelper.csapi .getObservationsAPI ().getObservationById (observationId);
143+ Assert::IsTrue (getResponse.isSuccessful ());
144+ Assert::AreEqual (observationId, getResponse.getItems ().at (0 ).getId ().value_or (" " ));
145+ }
146+
147+ TEST_METHOD (DeleteObservation) {
148+ auto systemId = testHelper.createTestSystem ();
149+ auto dataStreamId = testHelper.createTestDataStream (systemId);
150+ auto dataBlock = createTestDataBlock (dataStreamId);
151+ auto observation = pushTestObservation (dataStreamId, dataBlock);
152+ auto observationId = observation.getId ().value_or (" " );
153+
154+ auto deleteResponse = testHelper.csapi .getObservationsAPI ().deleteObservation (observationId);
155+ Assert::IsTrue (deleteResponse.isSuccessful ());
156+
157+ auto getResponse = testHelper.csapi .getObservationsAPI ().getObservationById (observationId);
158+ Assert::IsFalse (getResponse.isSuccessful ());
144159 }
145160 };
146161}
0 commit comments