phone_gap-build 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +3 -1
- data/lib/phone_gap/build/app.rb +15 -2
- data/lib/phone_gap/build/rest_resource.rb +16 -4
- data/lib/phone_gap/build/version.rb +1 -1
- data/spec/fixtures/index.html +8 -0
- data/spec/phone_gap/build/app_spec.rb +37 -1
- data/spec/phone_gap/build/rest_resource_spec.rb +20 -3
- data/spec/support/fixtures.rb +4 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b7d9c20c29ac0055691fac9fabb28e826f8f4886
|
4
|
+
data.tar.gz: a62b82a3c032051c18b30335440c1b6bafb3a28c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b97eac4703677d6f6840ca14902520f82e4872d9e514f9d23a419b0b1bdccc9223ae62229d246002b80abb904f024f4deb95dbecf57f9b64cb2d1b8e760b5aa4
|
7
|
+
data.tar.gz: 20294eb0791f250b3916e1136b6c1fdc8f21485a7d1f5ff7b6d9b7612631379c7ede10e78ccc2a1ed5d734b80012ddf23bbdbfdd3444cedfc0dce95ac8b27d86
|
data/Rakefile
CHANGED
data/lib/phone_gap/build/app.rb
CHANGED
@@ -6,10 +6,23 @@ module PhoneGap
|
|
6
6
|
class App < RestResource
|
7
7
|
|
8
8
|
PATH = '/apps'
|
9
|
-
attr_creatable :title, :create_method, :package, :version, :description, :debug, :keys, :private, :phonegap_version, :hydrates
|
10
|
-
attr_updatable :title, :package, :version, :description, :debug, :private, :phonegap_version
|
11
9
|
|
10
|
+
attr_accessor :title, :create_method, :package, :version, :description, :debug, :keys, :private,
|
11
|
+
:phonegap_version, :hydrates, :file
|
12
|
+
|
13
|
+
attr_creatable :title, :create_method, :package, :version, :description, :debug, :keys, :private,
|
14
|
+
:phonegap_version, :hydrates, :file
|
15
|
+
attr_updatable :title, :package, :version, :description, :debug, :private, :phonegap_version
|
12
16
|
|
17
|
+
def post_options
|
18
|
+
if file
|
19
|
+
data_attributes = creatable_attributes
|
20
|
+
data_attributes.delete('@file')
|
21
|
+
{query: {file: file, data: as_json(only: data_attributes, remove_nils: true)}, detect_mime_type: true}
|
22
|
+
else
|
23
|
+
{query: {data: as_json(only: creatable_attributes, remove_nils: true)}}
|
24
|
+
end
|
25
|
+
end
|
13
26
|
end
|
14
27
|
end
|
15
28
|
end
|
@@ -16,10 +16,11 @@ module PhoneGap
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def create
|
19
|
-
response = self.class.post(path,
|
19
|
+
response = self.class.post(path, post_options)
|
20
20
|
if response.success?
|
21
21
|
populate_from_json(JSON.parse(response.body))
|
22
22
|
end
|
23
|
+
self
|
23
24
|
end
|
24
25
|
|
25
26
|
def update
|
@@ -36,17 +37,22 @@ module PhoneGap
|
|
36
37
|
|
37
38
|
def as_json(params = {})
|
38
39
|
if params[:only]
|
39
|
-
params[:only].inject({}) do | memo, attribute_name|
|
40
|
+
json = params[:only].inject({}) do | memo, attribute_name|
|
40
41
|
memo[attribute_name[1..-1].to_sym] = instance_variable_get(attribute_name)
|
41
42
|
memo
|
42
43
|
end
|
43
44
|
else
|
44
|
-
{}
|
45
|
+
json = {}
|
45
46
|
end
|
47
|
+
params[:remove_nils] ? json.delete_if {|k, v| v.nil? } : json
|
46
48
|
end
|
47
49
|
|
48
50
|
private
|
49
51
|
|
52
|
+
def post_options
|
53
|
+
{ query: { data: as_json(only: creatable_attributes) } }
|
54
|
+
end
|
55
|
+
|
50
56
|
def path
|
51
57
|
@id ? "#{self.class.const_get('PATH')}/#{@id}?auth_token=#{token}" : "#{self.class.const_get('PATH')}?auth_token=#{token}"
|
52
58
|
end
|
@@ -56,7 +62,13 @@ module PhoneGap
|
|
56
62
|
end
|
57
63
|
|
58
64
|
def populate_from_json(json)
|
59
|
-
|
65
|
+
json.each do |key, value|
|
66
|
+
if respond_to?("#{key}=")
|
67
|
+
send("#{key}=", value)
|
68
|
+
else
|
69
|
+
instance_variable_set("@#{key}", value)
|
70
|
+
end
|
71
|
+
end
|
60
72
|
end
|
61
73
|
end
|
62
74
|
end
|
@@ -11,7 +11,7 @@ describe PhoneGap::Build::App do
|
|
11
11
|
subject { PhoneGap::Build::App }
|
12
12
|
|
13
13
|
%w(title create_method package version description debug keys private phonegap_version hydrates).each do |attribute|
|
14
|
-
it "'#{attribute}' is
|
14
|
+
it "'#{attribute}' is creatable" do
|
15
15
|
expect(subject.class_variable_get('@@creatable_attributes')[subject]).to include "@#{attribute}"
|
16
16
|
end
|
17
17
|
end
|
@@ -27,4 +27,40 @@ describe PhoneGap::Build::App do
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
30
|
+
|
31
|
+
describe '#create' do
|
32
|
+
|
33
|
+
let(:response) { double('response', :success? => false) }
|
34
|
+
|
35
|
+
context 'when there are populated and non-populated creatable variables' do
|
36
|
+
|
37
|
+
before do
|
38
|
+
subject.title = 'title'
|
39
|
+
subject.create_method = 'create method'
|
40
|
+
subject.package = nil
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'sends query data for all creatable attributes that do not have a value of nil' do
|
44
|
+
expected_options = { query: {data: { title: 'title', create_method: 'create method'}}}
|
45
|
+
expect(subject.class).to receive(:post).with(anything, expected_options ).and_return response
|
46
|
+
subject.create
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'when a file is present' do
|
50
|
+
|
51
|
+
let(:file) { fixture_file('index.html') }
|
52
|
+
|
53
|
+
before do
|
54
|
+
subject.file = file
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'sends the file through as part of the query' do
|
58
|
+
expected_options =
|
59
|
+
{ query: { file: file, data: {title: 'title', create_method: 'create method'}}, detect_mime_type: true}
|
60
|
+
expect(subject.class).to receive(:post).with(anything, expected_options).and_return response
|
61
|
+
subject.create
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
30
66
|
end
|
@@ -16,7 +16,7 @@ describe PhoneGap::Build::RestResource do
|
|
16
16
|
|
17
17
|
class Child < PhoneGap::Build::RestResource
|
18
18
|
|
19
|
-
attr_accessor :id
|
19
|
+
attr_accessor :id, :file
|
20
20
|
|
21
21
|
PATH = 'users'
|
22
22
|
|
@@ -42,10 +42,27 @@ describe PhoneGap::Build::RestResource do
|
|
42
42
|
subject.create
|
43
43
|
end
|
44
44
|
|
45
|
+
context 'child class has #post_options' do
|
46
|
+
|
47
|
+
let(:post_options) { lambda{ 'wonder woman'} }
|
48
|
+
|
49
|
+
before do
|
50
|
+
subject.define_singleton_method(:post_options, post_options)
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'posts using options from the child class' do
|
54
|
+
expect(subject.class).to receive(:post).with(anything, 'wonder woman').and_return response
|
55
|
+
subject.create
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
context 'child class does not have #post_options' do
|
60
|
+
|
45
61
|
it 'sends a body containing all the json representation of the object' do
|
46
|
-
expect(subject.class).to receive(:post).with(anything
|
62
|
+
expect(subject.class).to receive(:post).with(anything, query: {data: subject.as_json}).and_return response
|
47
63
|
subject.create
|
48
64
|
end
|
65
|
+
end
|
49
66
|
|
50
67
|
context 'after successful creation' do
|
51
68
|
|
@@ -57,7 +74,7 @@ describe PhoneGap::Build::RestResource do
|
|
57
74
|
|
58
75
|
it 'updates the object with any response attributes' do
|
59
76
|
response = subject.create
|
60
|
-
expect(response).to
|
77
|
+
expect(response.object_id).to be subject.object_id
|
61
78
|
expect(response.instance_variable_get('@title')).to eq 'Batman'
|
62
79
|
expect(response.instance_variable_get('@rating')).to eq 5
|
63
80
|
end
|
data/spec/support/fixtures.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phone_gap-build
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Seb Glazebrook
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httmultiparty
|
@@ -102,6 +102,7 @@ files:
|
|
102
102
|
- phone_gap-build.gemspec
|
103
103
|
- spec/fixtures/api_responses/get-apps.json
|
104
104
|
- spec/fixtures/api_responses/rest-resource-create.json
|
105
|
+
- spec/fixtures/index.html
|
105
106
|
- spec/phone_gap/build/app_spec.rb
|
106
107
|
- spec/phone_gap/build/rest_resource_spec.rb
|
107
108
|
- spec/phone_gap/build_spec.rb
|
@@ -134,6 +135,7 @@ summary: PhoneGap Build Api gem
|
|
134
135
|
test_files:
|
135
136
|
- spec/fixtures/api_responses/get-apps.json
|
136
137
|
- spec/fixtures/api_responses/rest-resource-create.json
|
138
|
+
- spec/fixtures/index.html
|
137
139
|
- spec/phone_gap/build/app_spec.rb
|
138
140
|
- spec/phone_gap/build/rest_resource_spec.rb
|
139
141
|
- spec/phone_gap/build_spec.rb
|