#include #include #include "DatasetDetailController.hpp" #include "repo/IDatasetRepository.hpp" using namespace geopro; namespace { struct StubRepo : data::IDatasetRepository { bool fail = false; std::vector loadStructure() override { return {}; } core::Grid loadGrid(const std::string&) override { if (fail) throw std::runtime_error("x"); core::Grid g(2,2); g.x={0,1}; g.y={0,1}; return g; } core::ScatterField loadScatter(const std::string&) override { return {}; } core::ColorScale loadColorScale(const std::string&) override { return {}; } core::ColorScale loadScatterColorScale(const std::string&) override { return {}; } std::vector loadAnomalies(const std::string&) override { return {}; } }; } TEST(DatasetDetailController, EmitsChartReadyOnSuccess) { StubRepo repo; controller::DatasetDetailController c(repo); QSignalSpy spy(&c, &controller::DatasetDetailController::chartReady); c.openDataset("ds1", "dd_inversion_data"); EXPECT_EQ(spy.count(), 1); } TEST(DatasetDetailController, EmitsLoadFailedOnThrow) { StubRepo repo; repo.fail = true; controller::DatasetDetailController c(repo); QSignalSpy spy(&c, &controller::DatasetDetailController::loadFailed); c.openDataset("ds1", "dd_inversion_data"); EXPECT_EQ(spy.count(), 1); }