[grilo-plugins] steam-store: add tests for plugin



commit 9e8315e486222a0db37a79a7784258dd48fb01af
Author: Tony Crisci <tony dubstepdish com>
Date:   Mon Oct 1 11:07:13 2018 -0400

    steam-store: add tests for plugin
    
    Related: #29

 tests/meson.build                          |   1 +
 tests/steam-store/data/network-data.ini    |   5 +
 tests/steam-store/data/resolve-641990.data |   1 +
 tests/steam-store/meson.build              |  22 ++++
 tests/steam-store/test_steam_store.c       | 159 +++++++++++++++++++++++++++++
 5 files changed, 188 insertions(+)
---
diff --git a/tests/meson.build b/tests/meson.build
index 861c23b..1eaf243 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -17,6 +17,7 @@ test_plugins = [
 test_lua_sources = [
     'games',
     'spotify-cover',
+    'steam-store',
 ]
 
 # Plugins
diff --git a/tests/steam-store/data/network-data.ini b/tests/steam-store/data/network-data.ini
new file mode 100644
index 0000000..3500b53
--- /dev/null
+++ b/tests/steam-store/data/network-data.ini
@@ -0,0 +1,5 @@
+[default]
+version=1
+
+[https://store.steampowered.com/api/appdetails?appids=641990]
+data=resolve-641990.data
diff --git a/tests/steam-store/data/resolve-641990.data b/tests/steam-store/data/resolve-641990.data
new file mode 100644
index 0000000..cdb4b88
--- /dev/null
+++ b/tests/steam-store/data/resolve-641990.data
@@ -0,0 +1 @@
+{"641990":{"success":true,"data":{"type":"game","name":"The Escapists 
2","steam_appid":641990,"required_age":0,"is_free":false,"controller_support":"full","dlc":[666350,701180,716580,784930,821170],"detailed_description":"<h1>Just
 Updated<\/h1><p><img 
src=\"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/extras\/Untitled-1.png?t=1525881861\" ><h2 
class=\"bb_tag\">Festive fun in free Santa\u2019s Shakedown update<\/h2><br>Deck the cells with bars and 
escape attempts! Christmas has come early in the latest free game update to The Escapists 2, featuring a 
brand new map \u2013 Santa\u2019s Shakedown. Not content with life in a perpetually festive lock-up, you must 
devise ingenious new ways of getting out of prison without getting caught in the tinsel! Featuring brand new 
items and some very unique craftables, you must pitch in with new prison jobs such as Christmas 
tree-decorating and toy soldier construction to blend in until the time is right to ho-ho-hop out of there!
 <br>Wrap
  up warm, grab some fellow inmates if it tickles your fancy, and head to the Play Game menu now to 
experience Santa\u2019s Shakedown.<\/p><br><h1>Featured DLC<\/h1><p><img 
src=\"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/extras\/WW.jpg?t=1525881861\" ><br><br>Things 
have taken a strange turn in the locked off rooms of an abandoned hospital. Once again, you\u2019ll have to 
craft, fight and scheme your way to freedom from this eerie supernatural slammer.<\/p><br><h1>About the 
Game<\/h1><img 
src=\"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/extras\/TheEscapists2_Smaller_key_art.png?t=1525881861\"
<h2 class=\"bb_tag\">The Ultimate Prison Sandbox!<\/h2><img 
src=\"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/extras\/Escapists2Danny1.jpg?t=1525881861\" 
<br>Risk it all to breakout from the toughest prisons in the world. Explore the biggest prisons yet, with 
multiple floors, roofs, vents and underground tunnels. <br>You\u2019ll have to live by th
 e prison
  rules, attending roll call, doing prison jobs and following strict routines; all the while secretly 
engineering your bid for freedom!<br>Your prison escape antics will take you from the frosty Fort Tundra, a 
train hurtling through the desert, and even to the final frontier!<h2 class=\"bb_tag\">Escape Team 
Assemble!<\/h2><img 
src=\"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/extras\/Escapists2Danny4.jpg?t=1525881861\" > 
<br>Unite with up to 3 friends to create the ultimate escape crew and engineer the wildest escapes yet! Jump 
online or gather round on a couch to prepare for your sneaky adventures. By working together you\u2019ll be 
able to create even more elaborate and daring plans.<br><br>Feeling competitive? Dive into the versus mode 
and show that you\u2019ve got the skills to break out of any prison faster than your friends can. If all else 
fails, settle your rivalry in the court yard with a prison punch up!<h2 class=\"bb_tag\">Create YOUR 
Con!<\/h2><img src
 =\"https
 :\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/extras\/Escapists2Danny3.jpg?t=1525881861\" 
<br>It\u2019s time to make your prisoner truly yours. Choose from a massive array of customisations to make 
your character unique to you. It\u2019s important to look stylish whilst you mastermind your escape.<h2 
class=\"bb_tag\">Craft your Escape!<\/h2><img 
src=\"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/extras\/Escapists2Danny8.jpg?t=1525881861\" 
<br>Being in prison forces you to be creative and work with the limited tools at your disposal. You\u2019ll 
have to combine everyday objects like soap and socks to craft new weapons and tools to help you achieve your 
goal. Steal forks from the cafeteria to chip a tunnel in your room, and craft a poster from magazines and 
duct tape to hide the evidence. You\u2019ll soon learn that duct tape solves (almost) everything!<h2 
class=\"bb_tag\">Prepare for a fight!\u00a0<\/h2><img src=\"https:\/\/steamcdn-a.akamaihd.net\/steam\/ap
 ps\/6419
 90\/extras\/Escapists2Danny7.jpg?t=1525881861\" ><br>The Escapists 2 introduces a brand new combat system to 
make every prison brawl more exciting and interactive. You\u2019ll have to block and tie together chains of 
attacks whilst strafing around your locked on targets to gain the upper hand in combat. Make sure your visit 
the gym first to build up those muscles!<h2 class=\"bb_tag\">New ways to escape!<\/h2><img 
src=\"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/extras\/Escapists2Danny2.jpg?t=1525881861\" 
<br>As the prisons get tougher you\u2019re going to have to get more creative with your escape plans. 
There\u2019s a ton of options to tackle almost any prison escape.<h2 class=\"bb_tag\">Construct a 
clink!<\/h2><img 
src=\"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/extras\/Editor.jpg?t=1525881861\" ><br>With the 
Prison Map Editor, it\u2019s your turn to construct a prison worthy of housing the toughest inmates! It 
includes all the rooms, fences and
  guard d
 ogs you need to build a prison that\u2019s as hard as your imagination makes it \u2013 no duct-tape 
required.<br>You can pick up those prison blueprints and start crafting your own creations through the Custom 
Prisons option on the main menu, and when you\u2019re ready you can show the world by sharing them through 
Steam Workshop where you can download subscribe to fellow architects\u2019 lock-ups \u2013 all custom maps 
can be played either solo or in both local and online multiplayer!<h2 class=\"bb_tag\">Features<\/h2><ul 
class=\"bb_ul\"><li>11 Prisons<br><\/li><li>Up to 4 player co-operative and versus multiplayer<br><\/li><li> 
Drop-in\/ Drop-out Online\/Splitscreen multiplayer<br><\/li><li>Over 300 
customisations<br><\/li><li>Multi-storey Prisons<\/li><\/ul><br><img 
src=\"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/extras\/Multiplayer.png?t=1525881861\" 
","about_the_game":"<ABOUT_THE_GAME>","short_description":"Craft, Steal, Brawl and Escape! It\u2019s time t
 o bust o
 ut of the toughest prisons in the world as you return to the life of an inmate in The Escapists 2, now with 
multiplayer! Have you got what it takes to escape?","supported_languages":"English, French, German, Spanish, 
Russian, Simplified Chinese, 
Italian","header_image":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/header.jpg?t=1525881861","website":"https:\/\/www.team17.com\/games\/the-escapists-2\/","pc_requirements":{"minimum":"<strong>Minimum:<\/strong><br><ul
 class=\"bb_ul\"><li><strong>OS:<\/strong> Windows 7\/8.1\/10 (32-bit 
versions)<br><\/li><li><strong>Processor:<\/strong> Intel Core Duo E6600 @ 
2.4GHz<br><\/li><li><strong>Memory:<\/strong> 2 GB RAM<br><\/li><li><strong>Graphics:<\/strong> Intel 4400, 
GeForce GT 8800, AMD Radeon HD 4650<br><\/li><li><strong>DirectX:<\/strong> Version 
11<br><\/li><li><strong>Storage:<\/strong> 4 GB available space<br><\/li><li><strong>Sound Card:<\/strong> 
Windows Compatible Sound card<\/li><\/ul>","recommended":"<strong>R
 ecommend
 ed:<\/strong><br><ul class=\"bb_ul\"><li><strong>OS:<\/strong> Windows 7\/8.1\/10 (64-bit 
versions)<br><\/li><li><strong>Processor:<\/strong> i5-2500k@3.3GHz, AMD FX 6300 
3.5GHz<br><\/li><li><strong>Memory:<\/strong> 4 GB RAM<br><\/li><li><strong>Graphics:<\/strong> GeForce GTX 
750, AMD R7 370<br><\/li><li><strong>DirectX:<\/strong> Version 11<br><\/li><li><strong>Storage:<\/strong> 4 
GB available space<br><\/li><li><strong>Sound Card:<\/strong> Windows Compatible Sound 
card<\/li><\/ul>"},"mac_requirements":{"minimum":"<strong>Minimum:<\/strong><br><ul 
class=\"bb_ul\"><li><strong>OS:<\/strong> OSX 10.10 Yosemite<br><\/li><li><strong>Processor:<\/strong> Intel 
Core i5 @2.7Ghz<br><\/li><li><strong>Memory:<\/strong> 2 GB RAM<br><\/li><li><strong>Graphics:<\/strong> 
Nvidia GT 640M, AMD Radeon HD 5750, Intel HD Graphics 6100<br><\/li><li><strong>Storage:<\/strong> 4 GB 
available space<\/li><\/ul>"},"linux_requirements":{"minimum":"<strong>Minimum:<\/strong><br><ul 
class=\"bb_ul\"
<li><st
 rong>OS:<\/strong> Ubuntu 14.04, Mint 18.2<br><\/li><li><strong>Processor:<\/strong> Intel Core i5 
@3.3Ghz<br><\/li><li><strong>Memory:<\/strong> 4 GB RAM<br><\/li><li><strong>Graphics:<\/strong> Nvidia GTS 
8800, AMD Radeon HD 4650, Intel HD Graphics 6100<br><\/li><li><strong>Storage:<\/strong> 4 GB available 
space<\/li><\/ul>"},"legal_notice":"The Escapists 2 developed by Mouldy Toof Studios and Team17 Digital Ltd 
\u00a9 2017. Published by Team17 Digital Ltd. All trademarks, copyrights and logos are property of their 
respective owners.","developers":["Team17 Digital Ltd","Mouldy Toof Studios"],"publishers":["Team17 Digital 
Ltd"],"price_overview":{"currency":"USD","initial":1999,"final":1999,"discount_percent":0},"packages":[178436],"package_groups":[{"name":"default","title":"Buy
 The Escapists 2","description":"","selection_text":"Select a purchase 
option","save_text":"","display_type":0,"is_recurring_subscription":"false","subs":[{"packageid":178436,"percent_savings_text":
 "","perc
 ent_savings":0,"option_text":"The Escapists 2 - 
$19.99","option_description":"","can_get_free_license":"0","is_free_license":false,"price_in_cents_with_discount":1999}]}],"platforms":{"windows":true,"mac":true,"linux":true},"metacritic":{"score":75,"url":"https:\/\/www.metacritic.com\/game\/pc\/the-escapists-2?ftag=MCD-06-10aaa1f"},"categories":[{"id":2,"description":"Single-player"},{"id":1,"description":"Multi-player"},{"id":36,"description":"Online
 Multi-Player"},{"id":37,"description":"Local 
Multi-Player"},{"id":9,"description":"Co-op"},{"id":38,"description":"Online 
Co-op"},{"id":39,"description":"Local Co-op"},{"id":24,"description":"Shared\/Split 
Screen"},{"id":22,"description":"Steam Achievements"},{"id":28,"description":"Full controller 
support"},{"id":29,"description":"Steam Trading Cards"},{"id":23,"description":"Steam 
Cloud"},{"id":25,"description":"Steam 
Leaderboards"}],"genres":[{"id":"23","description":"Indie"},{"id":"28","description":"Simulation"},{"id":"2",
 "descrip
 
tion":"Strategy"}],"screenshots":[{"id":0,"path_thumbnail":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_4c06641e551c04e72abb54d3c190233ff02c05ca.600x338.jpg?t=1525881861","path_full":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_4c06641e551c04e72abb54d3c190233ff02c05ca.1920x1080.jpg?t=1525881861"},{"id":1,"path_thumbnail":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_75c9e0c479c4fb6cc2a40686685ed26d0488f332.600x338.jpg?t=1525881861","path_full":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_75c9e0c479c4fb6cc2a40686685ed26d0488f332.1920x1080.jpg?t=1525881861"},{"id":2,"path_thumbnail":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_2bb6149a553bbc28c85a624f7628f18fb1573860.600x338.jpg?t=1525881861","path_full":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_2bb6149a553bbc28c85a624f7628f18fb1573860.1920x1080.jpg?t=1525881861"},{"id":3,"path_thumbnail":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\
 /641990\
 
/ss_797e85fff36b0c2f5da3caa5028132ab52f3c97c.600x338.jpg?t=1525881861","path_full":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_797e85fff36b0c2f5da3caa5028132ab52f3c97c.1920x1080.jpg?t=1525881861"},{"id":4,"path_thumbnail":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_84fff3cb6e8306970c8b2fbe7210552646b6f2b2.600x338.jpg?t=1525881861","path_full":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_84fff3cb6e8306970c8b2fbe7210552646b6f2b2.1920x1080.jpg?t=1525881861"},{"id":5,"path_thumbnail":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_d74be4a2cc7e25873607d8292775002468f09bc5.600x338.jpg?t=1525881861","path_full":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_d74be4a2cc7e25873607d8292775002468f09bc5.1920x1080.jpg?t=1525881861"},{"id":6,"path_thumbnail":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_5834c153aeeea9c574af95a0d60de9ea148063a9.600x338.jpg?t=1525881861","path_full":"https:\/\/steamcdn-a.ak
 amaihd.n
 
et\/steam\/apps\/641990\/ss_5834c153aeeea9c574af95a0d60de9ea148063a9.1920x1080.jpg?t=1525881861"},{"id":7,"path_thumbnail":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_fbe51beaf5081f76a1319c99f79793ee6beff01a.600x338.jpg?t=1525881861","path_full":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_fbe51beaf5081f76a1319c99f79793ee6beff01a.1920x1080.jpg?t=1525881861"},{"id":8,"path_thumbnail":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_83de34c51055759a4dfdb5bedca6b488a723b56c.600x338.jpg?t=1525881861","path_full":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_83de34c51055759a4dfdb5bedca6b488a723b56c.1920x1080.jpg?t=1525881861"},{"id":9,"path_thumbnail":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_134045d5dea19e087095399246a11e846e84a592.600x338.jpg?t=1525881861","path_full":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_134045d5dea19e087095399246a11e846e84a592.1920x1080.jpg?t=1525881861"},{"id":10,
 "path_th
 
umbnail":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_3e2919ba1f41a32e95c3df99222c441567fa02ac.600x338.jpg?t=1525881861","path_full":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_3e2919ba1f41a32e95c3df99222c441567fa02ac.1920x1080.jpg?t=1525881861"},{"id":11,"path_thumbnail":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_1cd75b9d80bfabe8dddf26b9af08eb10dfcc2ecc.600x338.jpg?t=1525881861","path_full":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_1cd75b9d80bfabe8dddf26b9af08eb10dfcc2ecc.1920x1080.jpg?t=1525881861"},{"id":12,"path_thumbnail":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_f365ece08877bc0edb7b5b328c1e6b935fd760d5.600x338.jpg?t=1525881861","path_full":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/ss_f365ece08877bc0edb7b5b328c1e6b935fd760d5.1920x1080.jpg?t=1525881861"}],"movies":[{"id":256694499,"name":"Launch
 Trailer","thumbnail":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/256694499
 \/movie.
 
293x165.jpg?t=1504542318","webm":{"480":"http:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/256694499\/movie480.webm?t=1504542318","max":"http:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/256694499\/movie_max.webm?t=1504542318"},"highlight":true},{"id":256703598,"name":"Santa's
 Shakedown 
Update","thumbnail":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/256703598\/movie.293x165.jpg?t=1513178847","webm":{"480":"http:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/256703598\/movie480.webm?t=1513178847","max":"http:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/256703598\/movie_max.webm?t=1513178847"},"highlight":true},{"id":256689565,"name":"The
 Escapists 2 - Multiplayer 
Trailer","thumbnail":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/256689565\/movie.293x165.jpg?t=1499788850","webm":{"480":"http:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/256689565\/movie480.webm?t=1499788850","max":"http:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/256689565\/movie_max.webm?t=1499788850"},"highlight":true},
 {"id":25
 6689574,"name":"The Escapists 2 - Old West 
Trailer","thumbnail":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/256689574\/movie.293x165.jpg?t=1499788861","webm":{"480":"http:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/256689574\/movie480.webm?t=1499788861","max":"http:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/256689574\/movie_max.webm?t=1499788861"},"highlight":true}],"recommendations":{"total":5257},"achievements":{"total":58,"highlighted":[{"name":"Ripped
 on the 
Inside","path":"https:\/\/steamcdn-a.akamaihd.net\/steamcommunity\/public\/images\/apps\/641990\/5764dbe0ef0580f7a48cad556d9bdb7888ea3e81.jpg"},{"name":"Criminal
 
Mastermind","path":"https:\/\/steamcdn-a.akamaihd.net\/steamcommunity\/public\/images\/apps\/641990\/2551bb894fc4a5ed5725b336f89f55467eecdd4a.jpg"},{"name":"The
 
Olympian","path":"https:\/\/steamcdn-a.akamaihd.net\/steamcommunity\/public\/images\/apps\/641990\/852757a092902302f59d12e876222e0fa4c5ddfe.jpg"},{"name":"Statistician","path":"https:\/\/steamcdn-a
 .akamaih
 
d.net\/steamcommunity\/public\/images\/apps\/641990\/33a6d5b7ec9db7c3a3f2a3e4a662ce2086ad3ce1.jpg"},{"name":"Bad
 
Intentions","path":"https:\/\/steamcdn-a.akamaihd.net\/steamcommunity\/public\/images\/apps\/641990\/ff867f080295abbd0753634b3f70269033686359.jpg"},{"name":"Bad
 Intentions Part 
2","path":"https:\/\/steamcdn-a.akamaihd.net\/steamcommunity\/public\/images\/apps\/641990\/ab7cab24baa11c5571bcabe7fe4622cc116a8254.jpg"},{"name":"Dr.
 
Love","path":"https:\/\/steamcdn-a.akamaihd.net\/steamcommunity\/public\/images\/apps\/641990\/abe1349d436ea989b5856310ef0befe376f5fde1.jpg"},{"name":"Artful
 
Dodger","path":"https:\/\/steamcdn-a.akamaihd.net\/steamcommunity\/public\/images\/apps\/641990\/b62ed4f44bfd8a7be72a3bc6ccf10cbb445f6ef3.jpg"},{"name":"The
 Great 
Escape","path":"https:\/\/steamcdn-a.akamaihd.net\/steamcommunity\/public\/images\/apps\/641990\/c46b887e687231d2a021bc15fd1ba945060755cd.jpg"},{"name":"Artisan","path":"https:\/\/steamcdn-a.akamaihd.net\/steamcommunity\/publi
 c\/image
 
s\/apps\/641990\/07c34c9c0431a8e3d9d166d6a0519d7a8668aaf8.jpg"}]},"release_date":{"coming_soon":false,"date":"Aug
 21, 2017"},"support_info":{"url":"https:\/\/www.team17.com\/support\/","email":"help team17support 
com"},"background":"https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/641990\/page_bg_generated_v6b.jpg?t=1525881861","content_descriptors":{"ids":[],"notes":null}}}}
diff --git a/tests/steam-store/meson.build b/tests/steam-store/meson.build
new file mode 100644
index 0000000..ad61e22
--- /dev/null
+++ b/tests/steam-store/meson.build
@@ -0,0 +1,22 @@
+#
+# meson.build
+#
+# Author: Tony Crisci <tony dubstepdish com>
+#
+# Copyright (C) 2016 Igalia S.L. All rights reserved.
+
+source_tests = [
+    'test_steam_store',
+]
+
+foreach t: source_tests
+    exe = executable(t, t + '.c',
+        install: false,
+        dependencies: must_deps,
+        c_args: [
+            '-DSTEAM_STORE_DATA_PATH="@0@/data/"'.format(meson.current_source_dir()),
+            '-DLUA_FACTORY_PLUGIN_PATH="@0@/src/lua-factory/"'.format(meson.build_root()),
+            '-DLUA_SOURCES_PATH="@0@/src/lua-factory/sources/"'.format(meson.source_root()),
+        ])
+    test(t, exe)
+endforeach
diff --git a/tests/steam-store/test_steam_store.c b/tests/steam-store/test_steam_store.c
new file mode 100644
index 0000000..a295b0c
--- /dev/null
+++ b/tests/steam-store/test_steam_store.c
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 2018 Igalia S.L.
+ *
+ * Author: Tony Crisci <tony dubstepdish com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ *
+ */
+
+#include <grilo.h>
+#include <stdio.h>
+
+static void
+test_setup (void)
+{
+  GError *error = NULL;
+  GrlRegistry *registry;
+
+  registry = grl_registry_get_default ();
+  grl_registry_load_all_plugins (registry, TRUE, &error);
+  g_assert_no_error (error);
+}
+
+static void
+test_resolve_game_found (void)
+{
+  GError *error = NULL;
+  GrlRegistry *registry;
+  GrlSource *source;
+  GrlOperationOptions *options;
+  GList *keys;
+  guint expected_n_thumbnails, expected_n_publishers, expected_n_developers;
+  GrlKeyID publisher_key, developer_key;
+  const GValue *developers, *publishers;
+  GList *publishers_list, *developers_list;
+
+  registry = grl_registry_get_default ();
+  source = grl_registry_lookup_source (registry, "grl-steam-store");
+  g_assert (source);
+
+  GrlMedia *media = grl_media_new ();
+  grl_media_set_id(media, "641990");
+  keys = grl_metadata_key_list_new (GRL_METADATA_KEY_TITLE,
+                                    GRL_METADATA_KEY_THUMBNAIL,
+                                    GRL_METADATA_KEY_DESCRIPTION,
+                                    GRL_METADATA_KEY_EXTERNAL_URL,
+                                    GRL_METADATA_KEY_RATING,
+                                    GRL_METADATA_KEY_PUBLICATION_DATE,
+                                    NULL);
+  options = grl_operation_options_new (NULL);
+  grl_operation_options_set_resolution_flags (options, GRL_RESOLVE_FULL);
+  grl_source_resolve_sync (source, media, keys, options, &error);
+  g_assert_no_error (error);
+
+  /* Thumbnail */
+  expected_n_thumbnails = grl_data_length (GRL_DATA (media), GRL_METADATA_KEY_THUMBNAIL);
+  g_assert_cmpuint (expected_n_thumbnails, ==, 1);
+  g_assert_cmpstr (grl_media_get_thumbnail_nth (media, 0),
+                                                ==,
+                                                
"https://steamcdn-a.akamaihd.net/steam/apps/641990/header.jpg?t=1525881861";);
+
+  /* Description */
+  g_assert_cmpstr (grl_media_get_description (media),
+                   ==,
+                   "<ABOUT_THE_GAME>");
+  /* Title */
+  g_assert_cmpstr (grl_media_get_title (media),
+                   ==,
+                   "The Escapists 2");
+
+  /* Publication Date */
+  GDateTime *date_time = grl_media_get_publication_date (media);
+  g_assert_cmpint (g_date_time_get_year (date_time), ==, 2017);
+
+  /* External URL */
+  g_assert_cmpstr (grl_media_get_external_url (media),
+                   ==,
+                   "https://www.team17.com/games/the-escapists-2/";);
+
+  /* Rating */
+  g_assert_cmpfloat (grl_media_get_rating (media),
+                     ==,
+                     75.0);
+
+  /* Genres */
+  gint expected_n_genres = grl_data_length (GRL_DATA (media), GRL_METADATA_KEY_GENRE);
+  g_assert_cmpuint (expected_n_genres, ==, 3);
+  g_assert_cmpstr (grl_media_get_genre_nth (media, 0),
+                   ==,
+                   "Indie");
+  g_assert_cmpstr (grl_media_get_genre_nth (media, 1),
+                   ==,
+                   "Simulation");
+  g_assert_cmpstr (grl_media_get_genre_nth (media, 2),
+                   ==,
+                   "Strategy");
+
+  /* Publishers */
+  publisher_key = grl_registry_lookup_metadata_key (registry, "publisher");
+  publishers = grl_data_get (GRL_DATA (media), publisher_key);
+  g_assert_nonnull (publishers);
+  expected_n_publishers = grl_data_length (GRL_DATA (media), publisher_key);
+  g_assert_cmpuint (expected_n_publishers, ==, 1);
+  publishers_list = grl_data_get_single_values_for_key_string (GRL_DATA (media), publisher_key);
+  g_assert_nonnull (publishers_list);
+  g_assert_cmpstr ((gchar *)g_list_nth_data (publishers_list, 0),
+                   ==,
+                   "Team17 Digital Ltd");
+
+  /* Developers */
+  developer_key = grl_registry_lookup_metadata_key(registry, "developer");
+  developers = grl_data_get (GRL_DATA (media), developer_key);
+  g_assert_nonnull (developers);
+  expected_n_developers = grl_data_length (GRL_DATA (media), developer_key);
+  g_assert_cmpuint (expected_n_developers, ==, 2);
+  developers_list = grl_data_get_single_values_for_key_string (GRL_DATA (media), developer_key);
+  g_assert_nonnull (developers_list);
+  g_assert_cmpstr ((gchar *)g_list_nth_data (developers_list, 0),
+                   ==,
+                   "Team17 Digital Ltd");
+  g_assert_cmpstr ((gchar *)g_list_nth_data (developers_list, 1),
+                   ==,
+                   "Mouldy Toof Studios");
+}
+
+int
+main (int argc, char **argv)
+{
+  g_setenv ("GRL_PLUGIN_PATH", LUA_FACTORY_PLUGIN_PATH, TRUE);
+  g_setenv ("GRL_LUA_SOURCES_PATH", LUA_SOURCES_PATH, TRUE);
+  g_setenv ("GRL_PLUGIN_LIST", "grl-lua-factory", TRUE);
+  g_setenv ("GRL_NET_MOCKED", STEAM_STORE_DATA_PATH "network-data.ini", TRUE);
+
+  grl_init (&argc, &argv);
+  g_test_init (&argc, &argv, NULL);
+
+  test_setup ();
+
+  g_test_add_func ("/steam-store/resolve/game-found", test_resolve_game_found);
+
+  gint result = g_test_run ();
+
+  grl_deinit ();
+
+  return result;
+}


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]