quandl 0.2.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +15 -0
- data/.gitignore +16 -0
- data/.travis.yml +20 -0
- data/Gemfile +14 -0
- data/Guardfile +8 -0
- data/LICENSE +7 -0
- data/README.md +316 -0
- data/Rakefile +39 -0
- data/UPGRADE.md +143 -0
- data/bin/quandl +26 -0
- data/dist/resources/pkg/Distribution.erb +15 -0
- data/dist/resources/pkg/PackageInfo.erb +6 -0
- data/dist/resources/pkg/postinstall +45 -0
- data/dist/resources/pkg/quandl +25 -0
- data/dist/resources/ruby/PackageInfo +3 -0
- data/lib/commander/command/quandl_ext.rb +21 -0
- data/lib/quandl/command.rb +45 -0
- data/lib/quandl/command/client_ext.rb +1 -0
- data/lib/quandl/command/client_ext/user.rb +11 -0
- data/lib/quandl/command/compatibility_check.rb +11 -0
- data/lib/quandl/command/qconfig.rb +76 -0
- data/lib/quandl/command/tasks.rb +15 -0
- data/lib/quandl/command/tasks/base.rb +263 -0
- data/lib/quandl/command/tasks/delete.rb +58 -0
- data/lib/quandl/command/tasks/download.rb +111 -0
- data/lib/quandl/command/tasks/info.rb +46 -0
- data/lib/quandl/command/tasks/list.rb +40 -0
- data/lib/quandl/command/tasks/login.rb +46 -0
- data/lib/quandl/command/tasks/update.rb +205 -0
- data/lib/quandl/command/tasks/upload.rb +69 -0
- data/lib/quandl/command/version.rb +5 -0
- data/lib/quandl/utility.rb +2 -0
- data/lib/quandl/utility/config.rb +43 -0
- data/lib/quandl/utility/ruby_version.rb +143 -0
- data/quandl.gemspec +39 -0
- data/scripts/compile_ruby_pkg.sh +34 -0
- data/scripts/install.sh +51 -0
- data/scripts/win/quandl_toolbelt.iss +82 -0
- data/spec/lib/quandl/command/delete_spec.rb +31 -0
- data/spec/lib/quandl/command/download_spec.rb +42 -0
- data/spec/lib/quandl/command/upload_spec.rb +39 -0
- data/spec/lib/quandl/command_spec.rb +46 -0
- data/spec/spec_helper.rb +20 -0
- data/tasks/toolbelt.rake +133 -0
- data/tasks/toolbelt.rb +92 -0
- data/tasks/toolbelt/build.rb +2 -0
- data/tasks/toolbelt/build/darwin.rb +71 -0
- data/tasks/toolbelt/build/ruby.rb +105 -0
- data/tasks/toolbelt/build/tarball.rb +73 -0
- data/tasks/toolbelt/build/windows.rb +25 -0
- data/tasks/toolbelt/push.rb +15 -0
- data/tasks/toolbelt/storage.rb +28 -0
- data/tasks/toolbelt/tar.rb +21 -0
- metadata +354 -0
@@ -0,0 +1,143 @@
|
|
1
|
+
### usage examples
|
2
|
+
# RubyVersion
|
3
|
+
### check for the main version with a Float
|
4
|
+
# RubyVersion.is? 1.8
|
5
|
+
### use strings for exacter checking
|
6
|
+
# RubyVersion.is.above '1.8.7'
|
7
|
+
# RubyVersion.is.at_least '1.8.7' # or below, at_most, not
|
8
|
+
### you can use the common comparison operators
|
9
|
+
# RubyVersion >= '1.8.7'
|
10
|
+
# RubyVersion.is.between? '1.8.6', '1.8.7'
|
11
|
+
### relase date checks
|
12
|
+
# RubyVersion.is.older_than Date.today
|
13
|
+
# RubyVersion.is.newer_than '2009-08-19'
|
14
|
+
### accessors
|
15
|
+
# RubyVersion.major # e.g. => 1
|
16
|
+
# RubyVersion.minor # e.g. => 8
|
17
|
+
# RubyVersion.tiny # e.g. => 7
|
18
|
+
# RubyVersion.patchlevel # e.g. => 249
|
19
|
+
# RubyVersion.description # e.g. => "ruby 1.8.7 (2010-01-10 patchlevel 249) [i486-linux]"
|
20
|
+
|
21
|
+
require 'date'
|
22
|
+
require 'time'
|
23
|
+
|
24
|
+
module Quandl
|
25
|
+
module Utility
|
26
|
+
module RubyVersion
|
27
|
+
class << self
|
28
|
+
def to_s
|
29
|
+
RUBY_VERSION
|
30
|
+
end
|
31
|
+
|
32
|
+
def full_version
|
33
|
+
"#{RUBY_VERSION}-p#{patchlevel}"
|
34
|
+
end
|
35
|
+
|
36
|
+
# comparable
|
37
|
+
def <=>(other)
|
38
|
+
value = case other
|
39
|
+
when Integer
|
40
|
+
RUBY_VERSION.to_i
|
41
|
+
when Float
|
42
|
+
RUBY_VERSION.to_f
|
43
|
+
when String
|
44
|
+
RUBY_VERSION
|
45
|
+
when Date,Time
|
46
|
+
other.class.parse(RUBY_RELEASE_DATE)
|
47
|
+
else
|
48
|
+
other = other.to_s
|
49
|
+
RUBY_VERSION
|
50
|
+
end
|
51
|
+
value <=> other
|
52
|
+
end
|
53
|
+
include Comparable
|
54
|
+
|
55
|
+
# chaining for dsl-like language
|
56
|
+
def is?(other = nil)
|
57
|
+
if other
|
58
|
+
RubyVersion == other
|
59
|
+
else
|
60
|
+
RubyVersion
|
61
|
+
end
|
62
|
+
end
|
63
|
+
alias is is?
|
64
|
+
|
65
|
+
# aliases
|
66
|
+
alias below <
|
67
|
+
alias below? <
|
68
|
+
alias at_most <=
|
69
|
+
alias at_most? <=
|
70
|
+
alias above >
|
71
|
+
alias above? >
|
72
|
+
alias at_least >=
|
73
|
+
alias at_least? >=
|
74
|
+
alias exactly ==
|
75
|
+
alias exactly? ==
|
76
|
+
def not(other)
|
77
|
+
self != other
|
78
|
+
end
|
79
|
+
alias not? not
|
80
|
+
alias between between?
|
81
|
+
|
82
|
+
# compare dates
|
83
|
+
def newer_than(other)
|
84
|
+
if other.is_a? Date or other.is_a? Time
|
85
|
+
RubyVersion > other
|
86
|
+
else
|
87
|
+
RUBY_RELEASE_DATE > other.to_s
|
88
|
+
end
|
89
|
+
end
|
90
|
+
alias newer_than? newer_than
|
91
|
+
|
92
|
+
def older_than(other)
|
93
|
+
if other.is_a? Date or other.is_a? Time
|
94
|
+
RubyVersion < other
|
95
|
+
else
|
96
|
+
RUBY_RELEASE_DATE < other.to_s
|
97
|
+
end
|
98
|
+
end
|
99
|
+
alias older_than? older_than
|
100
|
+
|
101
|
+
def released_today
|
102
|
+
RubyVersion.date == Date.today
|
103
|
+
end
|
104
|
+
alias released_today? released_today
|
105
|
+
|
106
|
+
# accessors
|
107
|
+
|
108
|
+
def major
|
109
|
+
RUBY_VERSION.to_i
|
110
|
+
end
|
111
|
+
alias main major
|
112
|
+
|
113
|
+
def minor
|
114
|
+
RUBY_VERSION.split('.')[1].to_i
|
115
|
+
end
|
116
|
+
alias mini minor
|
117
|
+
|
118
|
+
def tiny
|
119
|
+
RUBY_VERSION.split('.')[2].to_i
|
120
|
+
end
|
121
|
+
|
122
|
+
alias teeny tiny
|
123
|
+
|
124
|
+
def patchlevel
|
125
|
+
RUBY_PATCHLEVEL
|
126
|
+
end
|
127
|
+
|
128
|
+
def platform
|
129
|
+
RUBY_PLATFORM
|
130
|
+
end
|
131
|
+
|
132
|
+
def release_date
|
133
|
+
Date.parse RUBY_RELEASE_DATE
|
134
|
+
end
|
135
|
+
alias date release_date
|
136
|
+
|
137
|
+
def description
|
138
|
+
RUBY_DESCRIPTION
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
data/quandl.gemspec
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "quandl/command/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "quandl"
|
7
|
+
s.version = Quandl::Command::VERSION
|
8
|
+
s.authors = ["Blake Hilscher"]
|
9
|
+
s.email = ["blake@hilscher.ca"]
|
10
|
+
s.homepage = "http://blake.hilscher.ca/"
|
11
|
+
s.license = "MIT"
|
12
|
+
s.summary = "Quandl Toolbelt"
|
13
|
+
s.description = "http://quandl.com/help/toolbelt"
|
14
|
+
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
+
s.executables = ["quandl"]
|
18
|
+
s.require_paths = ["lib"]
|
19
|
+
|
20
|
+
s.add_runtime_dependency "commander", '4.1.5'
|
21
|
+
s.add_runtime_dependency "quandl_format", "0.2.8"
|
22
|
+
s.add_runtime_dependency "quandl_client", '2.5.1'
|
23
|
+
s.add_runtime_dependency "quandl_data", '1.3.9'
|
24
|
+
s.add_runtime_dependency "quandl_operation", '0.3.2'
|
25
|
+
s.add_runtime_dependency "quandl_babelfish", '0.0.9'
|
26
|
+
s.add_runtime_dependency "quandl_logger", '0.2.5'
|
27
|
+
s.add_runtime_dependency "json", '1.7.7'
|
28
|
+
s.add_runtime_dependency "minitar", '0.5.4'
|
29
|
+
s.add_runtime_dependency "thread", "0.1.3"
|
30
|
+
|
31
|
+
s.add_development_dependency "rake", "~> 10.1"
|
32
|
+
s.add_development_dependency "fog", "~> 1.19"
|
33
|
+
s.add_development_dependency "factory_girl", "~> 4.3"
|
34
|
+
s.add_development_dependency "rspec", "~> 2.13"
|
35
|
+
s.add_development_dependency "fivemat", "~> 1.2"
|
36
|
+
s.add_development_dependency "pry", "~> 0.9"
|
37
|
+
s.add_development_dependency "guard", "~> 2.3"
|
38
|
+
s.add_development_dependency "guard-rspec", "~> 4.2"
|
39
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# configure
|
2
|
+
arch_flags="-mmacosx-version-min=10.5"
|
3
|
+
export CFLAGS="$arch_flags "
|
4
|
+
export CXXFLAGS="$arch_flags"
|
5
|
+
export CPPFLAGS="$arch_flags"
|
6
|
+
export LDFLAGS="$arch_flags"
|
7
|
+
export OBJCFLAGS="$arch_flags"
|
8
|
+
export OBJCXXFLAGS="$arch_flags"
|
9
|
+
|
10
|
+
QUANDL_PATH=/usr/local/quandl
|
11
|
+
INSTALL_PATH=$QUANDL_PATH/ruby/
|
12
|
+
ROOT_DIR=$(pwd)
|
13
|
+
# clean
|
14
|
+
rm -rf $INSTALL_PATH
|
15
|
+
rm -rf $ROOT_DIR/*
|
16
|
+
# download
|
17
|
+
wget http://xyz.lcs.mit.edu/ruby/ruby-1.9.3-p448.zip
|
18
|
+
extract ruby-1.9.3-p448.zip
|
19
|
+
cd ruby-1.9.3-p448
|
20
|
+
# compile
|
21
|
+
./configure --with-static-linked-ext --prefix=$INSTALL_PATH
|
22
|
+
make
|
23
|
+
sudo make install
|
24
|
+
# make package
|
25
|
+
sudo chown $USER:staff $QUANDL_PATH
|
26
|
+
mkdir $QUANDL_PATH/ruby-1.9.3-p448-pkg/
|
27
|
+
cp $ROOT_DIR/../dist/resources/ruby/PackageInfo $QUANDL_PATH/ruby-1.9.3-p448-pkg/PackageInfo
|
28
|
+
cd $INSTALL_PATH
|
29
|
+
mkbom -s . $QUANDL_PATH/ruby-1.9.3-p448-pkg/Bom
|
30
|
+
pax -wz -x cpio . > $QUANDL_PATH/ruby-1.9.3-p448-pkg/Payload
|
31
|
+
# package
|
32
|
+
cd $QUANDL_PATH
|
33
|
+
pkgutil --flatten ruby-1.9.3-p448-pkg $ROOT_DIR/ruby.pkg
|
34
|
+
cd $ROOT_DIR
|
data/scripts/install.sh
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
{
|
3
|
+
PACKAGE_URL="https://s3.amazonaws.com/quandl-command/quandl-command$1.tar.gz"
|
4
|
+
PACKAGE_PATH="/usr/local/quandl"
|
5
|
+
|
6
|
+
echo "Welcome to the Quandl Toolbelt."
|
7
|
+
ruby -v >/dev/null 2>&1 || { echo -e >&2 "\033[0;31mI require ruby 1.9 but it's not installed. Aborting.
|
8
|
+
\033[0;33mapt-get install ruby1.9.1\033[0;29m"; exit 1; }
|
9
|
+
echo "Superuser is required, you will be prompted for your password."
|
10
|
+
|
11
|
+
# clear sudo
|
12
|
+
sudo -k
|
13
|
+
# run inside sudo
|
14
|
+
sudo bash <<SCRIPT
|
15
|
+
|
16
|
+
rm -rf "$PACKAGE_PATH.new"
|
17
|
+
mkdir -p "$PACKAGE_PATH.new"
|
18
|
+
cd "$PACKAGE_PATH.new"
|
19
|
+
|
20
|
+
if [[ -z "$(which wget)" ]]; then
|
21
|
+
curl -s $PACKAGE_URL | tar xz
|
22
|
+
else
|
23
|
+
wget -qO- $PACKAGE_URL | tar xz
|
24
|
+
fi
|
25
|
+
|
26
|
+
if [ -d "quandl-command" ]; then
|
27
|
+
mv quandl-command/* .
|
28
|
+
rmdir quandl-command
|
29
|
+
rm -rf $PACKAGE_PATH
|
30
|
+
mv "$PACKAGE_PATH.new" "$PACKAGE_PATH"
|
31
|
+
sudo chown -R $USER:$GROUP $PACKAGE_PATH
|
32
|
+
else
|
33
|
+
echo -e "\033[0;33mWARNING: Revision $1 not found. \033[0;29m"
|
34
|
+
rmdir "$PACKAGE_PATH.new"
|
35
|
+
fi
|
36
|
+
SCRIPT
|
37
|
+
# remind the user to add to $PATH
|
38
|
+
if [[ ":$PATH:" != *":/usr/local/quandl/bin:"* ]]; then
|
39
|
+
echo "----"
|
40
|
+
echo -e "Installation is complete, but there is one more step you need to take."
|
41
|
+
echo -e "\033[0;33mBefore you start using Quandl Toolbelt, you must type: 'source $HOME/.bash_profile'\033[0;29m"
|
42
|
+
|
43
|
+
echo "
|
44
|
+
# Added by Quandl Toolbelt
|
45
|
+
PATH=\"/usr/local/quandl/bin:\$PATH\"" >> "$HOME/.bash_profile"
|
46
|
+
else
|
47
|
+
echo "----"
|
48
|
+
echo -e "\033[0;32mInstallation complete!\033[0;29m"
|
49
|
+
fi
|
50
|
+
|
51
|
+
}
|
@@ -0,0 +1,82 @@
|
|
1
|
+
; Script generated by the Inno Setup Script Wizard.
|
2
|
+
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
|
3
|
+
|
4
|
+
#define MyAppName "Quandl Toolbelt"
|
5
|
+
#define MyAppVersion "0.1"
|
6
|
+
#define MyAppPublisher "Quandl"
|
7
|
+
#define MyAppURL "http://www.quandl.com/"
|
8
|
+
#define MyAppExeName "quandl.bat"
|
9
|
+
|
10
|
+
[Setup]
|
11
|
+
; NOTE: The value of AppId uniquely identifies this application.
|
12
|
+
; Do not use the same AppId value in installers for other applications.
|
13
|
+
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
|
14
|
+
AppId={{BC3A2597-57FE-4B8E-8105-B2945862AA97}
|
15
|
+
AppName={#MyAppName}
|
16
|
+
AppVersion={#MyAppVersion}
|
17
|
+
;AppVerName={#MyAppName} {#MyAppVersion}
|
18
|
+
AppPublisher={#MyAppPublisher}
|
19
|
+
AppPublisherURL={#MyAppURL}
|
20
|
+
AppSupportURL={#MyAppURL}
|
21
|
+
AppUpdatesURL={#MyAppURL}
|
22
|
+
DefaultDirName=c:\Quandl
|
23
|
+
DisableDirPage=yes
|
24
|
+
DefaultGroupName={#MyAppName}
|
25
|
+
OutputBaseFilename=Quandl Setup
|
26
|
+
OutputDir=..\..\build\pkg\
|
27
|
+
Compression=lzma
|
28
|
+
SolidCompression=yes
|
29
|
+
|
30
|
+
[Languages]
|
31
|
+
Name: "english"; MessagesFile: "compiler:Default.isl"
|
32
|
+
|
33
|
+
[Files]
|
34
|
+
Source: "..\..\build\tarball\installer\rubyinstaller.exe"; DestDir: "{tmp}";
|
35
|
+
Source: "..\..\build\tarball\quandl-command\bin\*.*"; DestDir: "{app}\bin"; Flags: recursesubdirs;
|
36
|
+
Source: "..\..\build\tarball\quandl-command\lib\*.*"; DestDir: "{app}\lib"; Flags: recursesubdirs;
|
37
|
+
Source: "..\..\build\tarball\quandl-command\vendor\*.*"; DestDir: "{app}\vendor"; Flags: recursesubdirs;
|
38
|
+
Source: "..\..\build\tarball\quandl\quandl.bat"; DestDir: "{app}\bin"; Flags: recursesubdirs;
|
39
|
+
|
40
|
+
[Registry]
|
41
|
+
Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: "expandsz"; ValueName: "QuandlPath"; \
|
42
|
+
ValueData: "{app}"
|
43
|
+
Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: "expandsz"; ValueName: "Path"; \
|
44
|
+
ValueData: "{olddata};{app}\bin"; Check: NeedsAddPath(ExpandConstant('{app}\bin'))
|
45
|
+
|
46
|
+
[Run]
|
47
|
+
Filename: "{tmp}\rubyinstaller.exe"; Parameters: "/verysilent /noreboot /nocancel /noicons /dir=""{app}/ruby-1.9.3"""; \
|
48
|
+
Flags: shellexec waituntilterminated; StatusMsg: "Installing Ruby"; AfterInstall: MyProgress(1);
|
49
|
+
[Code]
|
50
|
+
|
51
|
+
procedure MyProgress(Mult: Integer);
|
52
|
+
begin
|
53
|
+
WizardForm.ProgressGauge.Min := 0;
|
54
|
+
WizardForm.ProgressGauge.Max := 100;
|
55
|
+
WizardForm.ProgressGauge.Position := Mult*33;
|
56
|
+
end;
|
57
|
+
|
58
|
+
function NeedsAddPath(Param: string): boolean;
|
59
|
+
var
|
60
|
+
OrigPath: string;
|
61
|
+
begin
|
62
|
+
if not RegQueryStringValue(HKEY_LOCAL_MACHINE,
|
63
|
+
'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
|
64
|
+
'Path', OrigPath)
|
65
|
+
then begin
|
66
|
+
Result := True;
|
67
|
+
exit;
|
68
|
+
end;
|
69
|
+
// look for the path with leading and trailing semicolon
|
70
|
+
// Pos() returns 0 if not found
|
71
|
+
Result := Pos(';' + Param + ';', ';' + OrigPath + ';') = 0;
|
72
|
+
end;
|
73
|
+
|
74
|
+
[UninstallDelete]
|
75
|
+
Type: filesandordirs; Name: "{app}/bin"
|
76
|
+
Type: filesandordirs; Name: "{app}/lib"
|
77
|
+
Type: filesandordirs; Name: "{app}/ruby-1.9.3"
|
78
|
+
Type: filesandordirs; Name: "{app}/vendor"
|
79
|
+
Type: filesandordirs; Name: "{app}/backup"
|
80
|
+
Type: filesandordirs; Name: "{app}/update"
|
81
|
+
Type: files; Name: "{app}/*"
|
82
|
+
Type: dirifempty; Name: "{app}"
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Quandl::Command::Tasks::Delete do
|
5
|
+
|
6
|
+
let(:subject_args){ [] }
|
7
|
+
subject{ Quandl::Command::Tasks::Delete.call(*subject_args) }
|
8
|
+
|
9
|
+
context "spec/fixtures/data/datasets.qdf" do
|
10
|
+
|
11
|
+
before(:each){ Quandl::Command::Tasks::Upload.call( 'spec/fixtures/data/datasets.qdf' ) }
|
12
|
+
|
13
|
+
it "should delete spec/fixtures/data/datasets.qdf" do
|
14
|
+
Quandl::Logger.should_receive(:info).with(/Deleted/).exactly(4).times
|
15
|
+
# load each dataset from file
|
16
|
+
datasets = Quandl::Format::Dataset.load_from_file('spec/fixtures/data/datasets.qdf')
|
17
|
+
# send command to delete each dataset
|
18
|
+
datasets.each{|d| Quandl::Command::Tasks::Delete.call( d.code, force_yes: true ) }
|
19
|
+
|
20
|
+
Quandl::Logger.should_receive(:error).with(/Not Found/).exactly(4).times
|
21
|
+
datasets.each{|d| Quandl::Command::Tasks::Download.call( d.code ) }
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should fail to delete missing dataset" do
|
27
|
+
Quandl::Logger.should_receive(:error).with(/Not Found/).exactly(1).times
|
28
|
+
Quandl::Command::Tasks::Delete.call("DOES_NOT_EXIST", force_yes: true )
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Quandl::Command::Tasks::Download do
|
5
|
+
|
6
|
+
def self.it_should_download(code, options={})
|
7
|
+
it "should download #{code}, #{options}" do
|
8
|
+
Quandl::Logger.should_receive(:info).with(/code: #{code}/)
|
9
|
+
Quandl::Command::Tasks::Download.call( code, options )
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
context "spec/fixtures/data/datasets.qdf" do
|
14
|
+
|
15
|
+
before(:all){ Quandl::Command::Tasks::Upload.call( 'spec/fixtures/data/datasets.qdf' ) }
|
16
|
+
|
17
|
+
it_should_download 'TEST_1'
|
18
|
+
it_should_download 'TEST_2'
|
19
|
+
it_should_download 'TEST_4', column: 2
|
20
|
+
it_should_download 'TEST_4', order: 'asc'
|
21
|
+
it_should_download 'TEST_4', order: 'desc'
|
22
|
+
it_should_download 'TEST_4', limit: 10
|
23
|
+
it_should_download 'TEST_4', row: 10
|
24
|
+
it_should_download 'TEST_4', offset: 10
|
25
|
+
# test each transformation
|
26
|
+
Quandl::Operation::Transform.valid_transformations.each{|v| it_should_download('TEST_4', transformation: v.to_s ) }
|
27
|
+
# test each collapse
|
28
|
+
Quandl::Operation::Collapse.valid_collapses.each{|v| it_should_download('TEST_4', collapse: v.to_s ) }
|
29
|
+
|
30
|
+
after(:all){
|
31
|
+
Quandl::Format::Dataset.load_from_file('spec/fixtures/data/datasets.qdf').each{|d|
|
32
|
+
Quandl::Command::Tasks::Delete.call( d.code, force_yes: true ) }
|
33
|
+
}
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should not download TEST_DOES_NOT_EXIST." do
|
38
|
+
Quandl::Logger.should_receive(:error).with(/Not Found/)
|
39
|
+
Quandl::Command::Tasks::Download.call( 'TEST_DOES_NOT_EXIST' )
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Quandl::Command::Tasks::Upload do
|
5
|
+
|
6
|
+
it "should upload spec/fixtures/data/datasets.qdf" do
|
7
|
+
Quandl::Logger.should_receive(:info).with(/OK|Created/).exactly(4).times
|
8
|
+
Quandl::Command::Tasks::Upload.call( 'spec/fixtures/data/datasets.qdf' )
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should upload spec/fixtures/data/metadata.qdf" do
|
12
|
+
Quandl::Logger.should_receive(:info).with(/OK|Created/).exactly(3).times
|
13
|
+
Quandl::Command::Tasks::Upload.call( 'spec/fixtures/data/metadata.qdf' )
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should upload spec/fixtures/data/QUGC-42.qdf" do
|
17
|
+
Quandl::Logger.should_receive(:info).with(/OK|Created/).exactly(1).times
|
18
|
+
Quandl::Command::Tasks::Upload.call( 'spec/fixtures/data/QUGC-42.qdf' )
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.it_should_expect_error(file, error)
|
22
|
+
it "#{file}.qdf should error with #{error}" do
|
23
|
+
Quandl::Logger.should_receive(:error).with(error).exactly(1).times
|
24
|
+
Quandl::Command::Tasks::Upload.call( "spec/fixtures/data/errors/#{file}.qdf" )
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
it_should_expect_error :invalid_code, /code is invalid/
|
29
|
+
it_should_expect_error :column_count_mismatch, /Expected 4 but found 5 based/
|
30
|
+
it_should_expect_error :date_parse_error, /DateParseError/
|
31
|
+
it_should_expect_error :invalid_date, /InvalidDate/
|
32
|
+
it_should_expect_error :psych, /Could not find expected ':'/
|
33
|
+
it_should_expect_error :unknown_attribute, /UnknownAttribute/
|
34
|
+
|
35
|
+
# delete test data after run
|
36
|
+
after(:all){ Quandl::Format::Dataset.load_from_file('spec/fixtures/data/datasets.qdf')
|
37
|
+
.collect(&:client).each(&:destroy) }
|
38
|
+
|
39
|
+
end
|