summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2020-04-22 13:02:39 +0300
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2020-04-22 19:21:56 +0300
commitd8639e2f9c332a1c2fa7d75aab04bc715e233066 (patch)
tree14f2d0123be4f3cf629ff1ed513f2ab9b12da325 /test
parentb120cdd207ef7d0f296ff6607cc481d882a2aa2d (diff)
downloadqtlocation-mapboxgl-d8639e2f9c332a1c2fa7d75aab04bc715e233066.tar.gz
[core] Database file source does not return stored tiles for volatile resources
The `DatabaseFileSource.VolatileResource` test is included.
Diffstat (limited to 'test')
-rw-r--r--test/storage/database_file_source.test.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/test/storage/database_file_source.test.cpp b/test/storage/database_file_source.test.cpp
index 62e5954605..f9f538c2f5 100644
--- a/test/storage/database_file_source.test.cpp
+++ b/test/storage/database_file_source.test.cpp
@@ -23,4 +23,35 @@ TEST(DatabaseFileSource, PauseResume) {
resumeTimer.start(Milliseconds(5), Duration::zero(), [dbfs] { dbfs->resume(); });
loop.run();
+}
+
+TEST(DatabaseFileSource, VolatileResource) {
+ util::RunLoop loop;
+
+ std::shared_ptr<FileSource> dbfs =
+ FileSourceManager::get()->getFileSource(FileSourceType::Database, ResourceOptions{});
+
+ Resource resource{Resource::Unknown, "http://127.0.0.1:3000/test", {}, Resource::LoadingMethod::CacheOnly};
+ Response response{};
+ response.data = std::make_shared<std::string>("Cached value");
+ std::unique_ptr<mbgl::AsyncRequest> req;
+
+ dbfs->forward(resource, response, [&] {
+ req = dbfs->request(resource, [&](Response res1) {
+ EXPECT_EQ(nullptr, res1.error);
+ ASSERT_TRUE(res1.data.get());
+ EXPECT_FALSE(res1.noContent);
+ EXPECT_EQ("Cached value", *res1.data);
+ resource.storagePolicy = Resource::StoragePolicy::Volatile;
+ req = dbfs->request(resource, [&](Response res2) {
+ req.reset();
+ ASSERT_TRUE(res2.error.get());
+ EXPECT_TRUE(res2.noContent);
+ EXPECT_EQ(Response::Error::Reason::NotFound, res2.error->reason);
+ EXPECT_EQ("Not found in offline database", res2.error->message);
+ loop.stop();
+ });
+ });
+ });
+ loop.run();
} \ No newline at end of file