task_helper 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0f0bec83e9bd57e8829c3c5a0193de45677cb253
4
- data.tar.gz: ac45b04ad8a57b31affe767dc0816f3784bf6e2e
3
+ metadata.gz: 75c59dfe71a9f1b81bd73a2a40f21a56a493f4eb
4
+ data.tar.gz: 78b39cbecd5425f38f7e679654b72217f87c1d8d
5
5
  SHA512:
6
- metadata.gz: d1967e11fb7593c068839c5e0574fd5653b65dd7aa2df5b38f346a4070a1227722b6c022aa54ba50800ead687ca829352d4c4cd914aa0c693488034ef4a5c10e
7
- data.tar.gz: 79f758cb137743cc4a957f471986fec6516562dbd7ab30ae045661cf1f96d2e2fc5eea851fd7770c0675a43d44c5be926bf00fd5b3be93a2c167499838a35608
6
+ metadata.gz: 291b59c10fb4f99b7c18ad9fdedba1b87d62d8343e587fd1cfcf74a1cf42f9ab3e3a1dbcc02f0c30e9199b6f46e9b7dcbca0619f8a7cb48de9101fc4e57f48eb
7
+ data.tar.gz: 0cab071c5e705e6355513f08ac99865f6e784eed77137cf8b3056add007b534a935754f0d9e69dffabca7e17e2f2ca217c0958b1c9ff21ce10e7fa556664f11a
@@ -2,6 +2,12 @@ module TaskHelper
2
2
  class Record < Base
3
3
  data_member :app_id, :entity_id, :approved, :values
4
4
 
5
+ def self.find(id, database_id:)
6
+ if response = get(route: "apps/#{database_id}/dtypes/#{id}.json")
7
+ new response['record'] if response['record']
8
+ end
9
+ end
10
+
5
11
  def initialize(args = {}, form: nil, **params)
6
12
  @form = form
7
13
  super(args.merge(params))
@@ -1,3 +1,3 @@
1
1
  module TaskHelper
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -6,6 +6,21 @@ describe TaskHelper::Record do
6
6
  let(:data) { FixtureParser.pretty(:records, form.id, form.app_id).sample }
7
7
  subject { described_class.new(data.to_h) }
8
8
 
9
+ describe '::find' do
10
+ it 'should find the record with the given ID' do
11
+ record = form.records.first
12
+ expect(described_class.find(record.id, database_id: form.app_id))
13
+ .to eq(record)
14
+ end
15
+
16
+ context 'database or record not found' do
17
+ it 'should return nil' do
18
+ expect(described_class.find('foobar', database_id: 'barfoo')).to be_nil
19
+ expect(described_class.find('foobar', database_id: form.app_id)).to be_nil
20
+ end
21
+ end
22
+ end
23
+
9
24
  describe '.new' do
10
25
  it 'should pass all params except form to super' do
11
26
  form = TaskHelper::Form.all.first
@@ -4,11 +4,15 @@ class FakeMTH < Sinatra::Base
4
4
  get '/apps/search.json' do
5
5
  search = string_params
6
6
  result = databases.find { |d| d.merge(search) == d }
7
+ content_type :json
8
+ status 200
7
9
  { 'database' => result }.to_json if result
8
10
  end
9
11
 
10
12
  get '/apps/:id.json' do
11
13
  result = databases.find { |d| d['id'] == params[:id] }
14
+ content_type :json
15
+ status 200
12
16
  { 'database' => result }.to_json if result
13
17
  end
14
18
 
@@ -17,6 +21,8 @@ class FakeMTH < Sinatra::Base
17
21
  end
18
22
 
19
23
  get '/apps/search/entities/search.json' do
24
+ content_type :json
25
+ status 200
20
26
  if db = databases.find { |d| d['name'] == params[:database_name] }
21
27
  result = forms(db['id']).find { |f| f['name'] == params[:form_name] }
22
28
  { 'form' => result }.to_json if result
@@ -25,11 +31,15 @@ class FakeMTH < Sinatra::Base
25
31
 
26
32
  get '/apps/:db_id/entities/:form_id.json' do
27
33
  result = forms(params[:db_id]).find { |f| f['id'] == params[:form_id] }
34
+ content_type :json
35
+ status 200
28
36
  { 'form' => result }.to_json if result
29
37
  end
30
38
 
31
39
  get '/apps/:db_id/entities.json' do
32
40
  result = forms(params[:db_id])
41
+ content_type :json
42
+ status 200
33
43
  { 'forms' => result }.to_json if result
34
44
  end
35
45
 
@@ -40,6 +50,21 @@ class FakeMTH < Sinatra::Base
40
50
  { 'fields' => result }.to_json if result
41
51
  end
42
52
 
53
+ get '/apps/:db_id/dtypes/:id.json' do
54
+ forms = FixtureParser.forms(params[:db_id])
55
+ record = nil
56
+ forms.each do |form|
57
+ records = (1...Float::INFINITY).lazy
58
+ .map { |n| FixtureParser.records(form['id'], form['app_id'], n) }
59
+ .take_while { |r| !r.nil? }
60
+ .flat_map { |r| r }
61
+ break if (record = records.find { |r| r['id'] == params[:id] })
62
+ end
63
+ content_type :json
64
+ status 200
65
+ { 'record' => record }.to_json if record
66
+ end
67
+
43
68
  get '/apps/:db_id/dtypes/entity/:form_id.json' do
44
69
  json_response(200, "databases/#{params[:db_id]}/forms/" \
45
70
  "#{params[:form_id]}/records/#{params[:page]}")
@@ -61,7 +61,11 @@ module FixtureParser
61
61
  module_function
62
62
 
63
63
  def parse_file(file_name)
64
- JSON.parse(File
65
- .open("#{File.dirname(__FILE__)}/fixtures/#{file_name}.json").read)
64
+ full_name = "#{File.dirname(__FILE__)}/fixtures/#{file_name}.json"
65
+ if File.exist?(full_name)
66
+ JSON.parse(File.open(full_name).read)
67
+ else
68
+ {}
69
+ end
66
70
  end
67
71
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: task_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - JC Wilcox
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-24 00:00:00.000000000 Z
11
+ date: 2015-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler