From 1c3767bd8c6980c8611cc63b34a17c8babc22da7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?D=C3=B3ra=20Kocsis?= <dora@dynare.org>
Date: Tue, 24 Mar 2020 17:38:46 +0100
Subject: [PATCH] modify template, add default_editor_base_url

---
 src/fetch_series.m             |  4 +++-
 src/fetch_series_by_api_link.m |  6 +++++-
 test.m => template.m           |  2 +-
 tests/run_all_tests_matlab.m   | 36 ++++++++++++++++++++++++++++++++++
 4 files changed, 45 insertions(+), 3 deletions(-)
 rename test.m => template.m (94%)
 create mode 100644 tests/run_all_tests_matlab.m

diff --git a/src/fetch_series.m b/src/fetch_series.m
index 9133ba3..795d7df 100644
--- a/src/fetch_series.m
+++ b/src/fetch_series.m
@@ -36,6 +36,8 @@ function df = fetch_series(varargin)
 %         
 
 default_api_base_url = 'https://api.db.nomics.world/v22/'; 
+default_editor_base_url = 'https://editor.nomics.world/api/v1/';
+
 p = inputParser;
 validStringInput = @(x) isstring(x) || ischar(x) || iscellstr(x);
 p.addParameter('provider_code', '', validStringInput);
@@ -92,6 +94,6 @@ if ~isempty(p.Results.series_ids)
     end
     api_link = sprintf('%s?observations=1&series_ids=%s', series_base_url, strjoin(p.Results.series_ids,','));
 end
-df = fetch_series_by_api_link(api_link, p.Results.dbnomics_filters, p.Results.max_nb_series);
+df = fetch_series_by_api_link(api_link, p.Results.dbnomics_filters, p.Results.max_nb_series, default_editor_base_url);
 end
 
diff --git a/src/fetch_series_by_api_link.m b/src/fetch_series_by_api_link.m
index cb3116e..0c94fb1 100644
--- a/src/fetch_series_by_api_link.m
+++ b/src/fetch_series_by_api_link.m
@@ -5,10 +5,14 @@ function df = fetch_series_by_api_link(api_link, varargin)
 % Example:
 % fetch_series_by_api_link("https://api.db.nomics.world/v22/series?provider_code=AMECO&dataset_code=ZUTN")
 
+default_editor_base_url = 'https://editor.nomics.world/api/v1/';
+
 p = inputParser;
+validStringInput = @(x) isstring(x) || ischar(x) || iscellstr(x);
 p.addRequired('api_link');
 p.addOptional('dbnomics_filters', '',@ischar);
 p.addOptional('max_nb_series', NaN, @isnumeric);
+p.addOptional('editor_api_base_url', default_editor_base_url, validStringInput);
 p.KeepUnmatched = false;
 p.parse(api_link, varargin{:});
 
@@ -68,7 +72,7 @@ else
                 flat_series.labels{jj, 1} = dimension_label;
                 dimension_value_code = regexprep(series_dims_by_dataset_code.(complete_dataset_code).(series_code).(dimension_codes{jj}),'[^a-zA-Z0-9]','_');
                 if isstrprop(dimension_value_code(1), 'digit') %MATLAB doesn't allow struct fieldnames to start with a digit
-                    dimension_value_code = ['x' dimension_value_code];
+                    dimension_value_code = strcat('x', dimension_value_code);
                 end
                 try
                     flat_series.labels{jj, 2} = dataset_dimensions.dimensions_values_labels.(dimension_codes{jj}).(dimension_value_code);
diff --git a/test.m b/template.m
similarity index 94%
rename from test.m
rename to template.m
index 9efd717..da5faa3 100644
--- a/test.m
+++ b/template.m
@@ -27,5 +27,5 @@ df_multi_freq = fetch_series('series_ids', ["BEA/NIUnderlyingDetail-U001BC/S315-
 %% TO BE IMPLEMENTED
 % fetch one series and apply interpolation filter %NOT IMPLEMENTED
 df_filter = fetch_series('series_ids', "AMECO/ZUTN/EA19.1.0.0.0.ZUTN",...
-                         'dbnomics_filters', '{"code":["interpolate"], "parameters": {"frequency": ["monthly"], "method": ["spline"]}}');
+                         'dbnomics_filters', '[{"code": "interpolate", "parameters": {"frequency": "monthly", "method": "spline"}}]');
 
diff --git a/tests/run_all_tests_matlab.m b/tests/run_all_tests_matlab.m
new file mode 100644
index 0000000..c163862
--- /dev/null
+++ b/tests/run_all_tests_matlab.m
@@ -0,0 +1,36 @@
+function run_all_tests()
+r = [];
+r = [r; run_this_test('test_fetch_series_by_code')];
+r = [r; run_this_test('test_fetch_series_by_code_mask')];
+r = [r; run_this_test('test_fetch_series_by_code_mask_with_plus_in_dimension_code')];
+r = [r; run_this_test('test_fetch_series_by_id')];
+r = [r; run_this_test('test_fetch_series_by_ids_in_same_dataset')];
+r = [r; run_this_test('test_fetch_series_by_ids_in_different_datasets')];
+r = [r; run_this_test('test_fetch_series_by_dimension')];
+r = [r; run_this_test('test_fetch_series_of_dataset')];
+r = [r; run_this_test('test_fetch_series_by_api_link')];
+r = [r; run_this_test('test_fetch_series_with_na_values')];
+r = [r; run_this_test('test_fetch_series_with_max_nb_series')];
+print_results(r);
+
+
+function o = run_this_test(file)
+try
+    tstart = tic;
+    run([file '.m']);
+    elapsed = toc(tstart);
+    o = {file, true, elapsed};
+catch
+    o = {file, false, NaN};
+end
+
+function print_results(r)
+message = sprintf('Testsuite results:\n');
+for i = 1:size(r, 1)
+    if r{i,2}
+        message = sprintf('%s\n%s\t\t PASS (%ss)', message, r{i,1}, num2str(r{i,3}));
+    else
+        message = sprintf('%s\n%s\t\t FAILED', message, r{i,1});
+    end
+end
+disp(message)
-- 
GitLab