task_helper 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,16 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ require 'webmock/rspec'
4
+ require 'task_helper'
5
+
6
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
7
+
8
+ RSpec.configure do |config|
9
+ config.mock_with :rspec
10
+ config.order = 'random'
11
+
12
+ config.before(:each) do
13
+ WebMock.disable_net_connect!
14
+ stub_request(:any, /mytaskhelper/).to_rack(FakeMTH)
15
+ end
16
+ end
@@ -0,0 +1,74 @@
1
+ require 'sinatra/base'
2
+
3
+ class FakeMTH < Sinatra::Base
4
+ get '/apps/search.json' do
5
+ search = string_params
6
+ result = databases.find { |d| d.merge(search) == d }
7
+ { 'database' => result }.to_json if result
8
+ end
9
+
10
+ get '/apps/:id.json' do
11
+ result = databases.find { |d| d['id'] == params[:id] }
12
+ { 'database' => result }.to_json if result
13
+ end
14
+
15
+ get '/apps.json' do
16
+ json_response(200, 'databases')
17
+ end
18
+
19
+ get '/apps/search/entities/search.json' do
20
+ if db = databases.find { |d| d['name'] == params[:database_name] }
21
+ result = forms(db['id']).find { |f| f['name'] == params[:form_name] }
22
+ { 'form' => result }.to_json if result
23
+ end
24
+ end
25
+
26
+ get '/apps/:db_id/entities/:form_id.json' do
27
+ result = forms(params[:db_id]).find { |f| f['id'] == params[:form_id] }
28
+ { 'form' => result }.to_json if result
29
+ end
30
+
31
+ get '/apps/:db_id/entities.json' do
32
+ result = forms(params[:db_id])
33
+ { 'forms' => result }.to_json if result
34
+ end
35
+
36
+ get '/apps/:db_id/entities/:form_id/properties.json' do
37
+ result = FixtureParser.fields(params[:form_id], params[:db_id])
38
+ content_type :json
39
+ status 200
40
+ { 'fields' => result }.to_json if result
41
+ end
42
+
43
+ get '/apps/:db_id/dtypes/entity/:form_id.json' do
44
+ json_response(200, "databases/#{params[:db_id]}/forms/" \
45
+ "#{params[:form_id]}/records/#{params[:page]}")
46
+ end
47
+
48
+ private
49
+
50
+ def string_params
51
+ params.each_with_object({}) do |(k, v), result|
52
+ result[k.to_s] = v unless k.to_s == 'rest_api_key'
53
+ end
54
+ end
55
+
56
+ def forms(database_id)
57
+ if databases.any? { |db| db['id'] == database_id }
58
+ JSON.parse(json_response(200,
59
+ "databases/#{database_id}/forms"))['forms']
60
+ else
61
+ []
62
+ end
63
+ end
64
+
65
+ def databases
66
+ JSON.parse(json_response(200, 'databases'))['databases']
67
+ end
68
+
69
+ def json_response(response_code, file_name)
70
+ content_type :json
71
+ status response_code
72
+ File.open("#{File.dirname(__FILE__)}/fixtures/#{file_name}.json").read
73
+ end
74
+ end
@@ -0,0 +1,67 @@
1
+ module FixtureParser
2
+ module_function
3
+
4
+ def databases
5
+ parse_file('databases')['databases']
6
+ end
7
+
8
+ def database(id)
9
+ databases.find { |db| db['id'] == id }
10
+ end
11
+
12
+ def forms(database_id = nil)
13
+ if database_id.nil?
14
+ databases.flat_map do |db|
15
+ parse_file("databases/#{db['id']}/forms")['forms']
16
+ end
17
+ elsif database(database_id)
18
+ parse_file("databases/#{database_id}/forms")['forms']
19
+ else
20
+ []
21
+ end
22
+ end
23
+
24
+ def form(id, database_id = nil)
25
+ forms(database_id).find { |f| f['id'] == id }
26
+ end
27
+
28
+ def fields(form_id = nil, database_id = nil)
29
+ if form_id.nil?
30
+ forms(database_id).flat_map do |form|
31
+ parse_file("databases/#{form['app_id']}/forms/#{form['id']}/fields")['fields']
32
+ end
33
+ elsif form = form(form_id, database_id)
34
+ parse_file("databases/#{form['app_id']}/forms/#{form_id}/fields")['fields']
35
+ else
36
+ []
37
+ end
38
+ end
39
+
40
+ def field(id, form_id = nil, database_id = nil)
41
+ fields(form_id, database_id).find { |f| f['id'] == id }
42
+ end
43
+
44
+ def records(form_id, database_id, page = 1)
45
+ parse_file("databases/#{database_id}/forms/#{form_id}/records/#{page}")['records']
46
+ end
47
+
48
+ def pretty(method_name, *args)
49
+ case result = public_send(method_name, *args)
50
+ when Array
51
+ result.map { |e| OpenStruct.new(e) }
52
+ when Hash
53
+ OpenStruct.new(result)
54
+ else
55
+ result
56
+ end
57
+ end
58
+
59
+ private
60
+
61
+ module_function
62
+
63
+ def parse_file(file_name)
64
+ JSON.parse(File
65
+ .open("#{File.dirname(__FILE__)}/fixtures/#{file_name}.json").read)
66
+ end
67
+ end
File without changes
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'task_helper/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "task_helper"
8
+ spec.version = TaskHelper::VERSION
9
+ spec.authors = ["JC Wilcox"]
10
+ spec.email = ["84jwilcox@gmail.com"]
11
+ spec.summary = %q{Ruby wrapper for the MyTaskHelper.com API}
12
+ spec.description = %q{Offers a clean Ruby interface for interacting with select MyTaskHelper resources.}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.5"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency 'rspec', '~> 3.1'
24
+ spec.add_development_dependency 'sinatra', '~> 1.4'
25
+ spec.add_development_dependency 'webmock', '~> 1.19'
26
+ spec.add_runtime_dependency 'httparty', '~> 0.13'
27
+ end
metadata ADDED
@@ -0,0 +1,173 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: task_helper
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - JC Wilcox
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-01-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: sinatra
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.4'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.4'
69
+ - !ruby/object:Gem::Dependency
70
+ name: webmock
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.19'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.19'
83
+ - !ruby/object:Gem::Dependency
84
+ name: httparty
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.13'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.13'
97
+ description: Offers a clean Ruby interface for interacting with select MyTaskHelper
98
+ resources.
99
+ email:
100
+ - 84jwilcox@gmail.com
101
+ executables: []
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - ".gitignore"
106
+ - ".rspec"
107
+ - ".ruby-gemset"
108
+ - ".ruby-version"
109
+ - Gemfile
110
+ - LICENSE.txt
111
+ - README.md
112
+ - Rakefile
113
+ - lib/task_helper.rb
114
+ - lib/task_helper/api.rb
115
+ - lib/task_helper/api/cache.rb
116
+ - lib/task_helper/api/call.rb
117
+ - lib/task_helper/base.rb
118
+ - lib/task_helper/database.rb
119
+ - lib/task_helper/field.rb
120
+ - lib/task_helper/form.rb
121
+ - lib/task_helper/record.rb
122
+ - lib/task_helper/version.rb
123
+ - lib/tasks/spec_setup.rake
124
+ - spec/lib/task_helper/api/cache_spec.rb
125
+ - spec/lib/task_helper/api/call_spec.rb
126
+ - spec/lib/task_helper/api_spec.rb
127
+ - spec/lib/task_helper/database_spec.rb
128
+ - spec/lib/task_helper/field_spec.rb
129
+ - spec/lib/task_helper/form_spec.rb
130
+ - spec/lib/task_helper/record_spec.rb
131
+ - spec/lib/task_helper/version_spec.rb
132
+ - spec/spec_helper.rb
133
+ - spec/support/fake_mth.rb
134
+ - spec/support/fixture_parser.rb
135
+ - spec/support/fixtures/.keep
136
+ - task_helper.gemspec
137
+ homepage: ''
138
+ licenses:
139
+ - MIT
140
+ metadata: {}
141
+ post_install_message:
142
+ rdoc_options: []
143
+ require_paths:
144
+ - lib
145
+ required_ruby_version: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ required_rubygems_version: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ requirements: []
156
+ rubyforge_project:
157
+ rubygems_version: 2.2.2
158
+ signing_key:
159
+ specification_version: 4
160
+ summary: Ruby wrapper for the MyTaskHelper.com API
161
+ test_files:
162
+ - spec/lib/task_helper/api/cache_spec.rb
163
+ - spec/lib/task_helper/api/call_spec.rb
164
+ - spec/lib/task_helper/api_spec.rb
165
+ - spec/lib/task_helper/database_spec.rb
166
+ - spec/lib/task_helper/field_spec.rb
167
+ - spec/lib/task_helper/form_spec.rb
168
+ - spec/lib/task_helper/record_spec.rb
169
+ - spec/lib/task_helper/version_spec.rb
170
+ - spec/spec_helper.rb
171
+ - spec/support/fake_mth.rb
172
+ - spec/support/fixture_parser.rb
173
+ - spec/support/fixtures/.keep