dune-api 1.0.2 → 1.1.0
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 +4 -4
- data/.travis.yml +1 -1
- data/Gemfile.lock +55 -56
- data/apiary.apib +25 -25
- data/app/controllers/dune/api/v1/{investments_controller.rb → contributions_controller.rb} +16 -16
- data/app/models/dune/api/{investment.rb → contribution.rb} +1 -1
- data/app/serializers/dune/api/{investment_serializer.rb → contribution_serializer.rb} +1 -1
- data/app/serializers/reward_serializer.rb +1 -1
- data/config/routes.rb +1 -1
- data/lib/dune/api/version.rb +1 -1
- data/spec/controllers/dune/api/v1/{investments_controller_spec.rb → contributions_controller_spec.rb} +47 -47
- data/spec/factories.rb +1 -1
- data/spec/models/dune/api/{investment_spec.rb → contribution_spec.rb} +9 -9
- metadata +10 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d4975afea401af45c6ea6036b7848f41903b4e1
|
4
|
+
data.tar.gz: 9a0731bbc16e6de737ff6e86c32a77a0da29b7e8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 280572acc54dc4904d969a869c97e8b73a3a110bb0ea8f058e86d7f6019a495c2801cc96aedc770aeab1f04517c83085c652d609ebe8b7d0ab33d998f1ec72cb
|
7
|
+
data.tar.gz: 44bbbf7f0ca8643adc4fc04fc4259e5b997621534ca14cb155d6c6c96e00a06fb983ee091b44fefac1b5f72e074cab42fb069f158e6fb18a1b2c17ee3331086a
|
data/.travis.yml
CHANGED
data/Gemfile.lock
CHANGED
@@ -30,32 +30,33 @@ PATH
|
|
30
30
|
rails (~> 4.0)
|
31
31
|
|
32
32
|
GEM
|
33
|
+
remote: https://rubygems.org/
|
33
34
|
remote: https://rubygems.org/
|
34
35
|
specs:
|
35
36
|
CFPropertyList (2.3.0)
|
36
|
-
actionmailer (4.1.
|
37
|
-
actionpack (= 4.1.
|
38
|
-
actionview (= 4.1.
|
37
|
+
actionmailer (4.1.7)
|
38
|
+
actionpack (= 4.1.7)
|
39
|
+
actionview (= 4.1.7)
|
39
40
|
mail (~> 2.5, >= 2.5.4)
|
40
|
-
actionpack (4.1.
|
41
|
-
actionview (= 4.1.
|
42
|
-
activesupport (= 4.1.
|
41
|
+
actionpack (4.1.7)
|
42
|
+
actionview (= 4.1.7)
|
43
|
+
activesupport (= 4.1.7)
|
43
44
|
rack (~> 1.5.2)
|
44
45
|
rack-test (~> 0.6.2)
|
45
|
-
actionview (4.1.
|
46
|
-
activesupport (= 4.1.
|
46
|
+
actionview (4.1.7)
|
47
|
+
activesupport (= 4.1.7)
|
47
48
|
builder (~> 3.1)
|
48
49
|
erubis (~> 2.7.0)
|
49
50
|
active_model_serializers (0.8.3)
|
50
51
|
activemodel (>= 3.0)
|
51
|
-
activemodel (4.1.
|
52
|
-
activesupport (= 4.1.
|
52
|
+
activemodel (4.1.7)
|
53
|
+
activesupport (= 4.1.7)
|
53
54
|
builder (~> 3.1)
|
54
|
-
activerecord (4.1.
|
55
|
-
activemodel (= 4.1.
|
56
|
-
activesupport (= 4.1.
|
55
|
+
activerecord (4.1.7)
|
56
|
+
activemodel (= 4.1.7)
|
57
|
+
activesupport (= 4.1.7)
|
57
58
|
arel (~> 5.0.0)
|
58
|
-
activesupport (4.1.
|
59
|
+
activesupport (4.1.7)
|
59
60
|
i18n (~> 0.6, >= 0.6.9)
|
60
61
|
json (~> 1.7, >= 1.7.7)
|
61
62
|
minitest (~> 5.1)
|
@@ -70,7 +71,7 @@ GEM
|
|
70
71
|
auto_html (1.6.4)
|
71
72
|
redcarpet (~> 3.1)
|
72
73
|
rinku (~> 1.5.0)
|
73
|
-
autoprefixer-rails (5.1.
|
74
|
+
autoprefixer-rails (5.1.6)
|
74
75
|
execjs
|
75
76
|
json
|
76
77
|
awesome_print (1.6.1)
|
@@ -162,6 +163,29 @@ GEM
|
|
162
163
|
best_in_place (~> 3.0.0.rc1)
|
163
164
|
postgres-copy (~> 0.8.0, >= 0.8.0)
|
164
165
|
rails (~> 4.0)
|
166
|
+
dune-balanced (1.0.0)
|
167
|
+
balanced (~> 1.1)
|
168
|
+
draper (~> 1.3)
|
169
|
+
faraday (= 0.8.9)
|
170
|
+
faraday_middleware (= 0.9.0)
|
171
|
+
rails (~> 4.0)
|
172
|
+
dune-balanced-bankaccount (1.0.0)
|
173
|
+
dune-balanced (~> 1.0)
|
174
|
+
rails (~> 4.0)
|
175
|
+
sidekiq (~> 3.0)
|
176
|
+
slim (~> 2.0)
|
177
|
+
dune-balanced-creditcard (1.0.0)
|
178
|
+
dune-balanced (~> 1.0)
|
179
|
+
rails (~> 4.0)
|
180
|
+
slim (~> 2.0)
|
181
|
+
dune-dashboard (1.0.0)
|
182
|
+
bootstrap-sass
|
183
|
+
coffee-rails
|
184
|
+
ember-rails (~> 0.15)
|
185
|
+
emblem-rails (~> 0.2)
|
186
|
+
font-awesome-sass (~> 4.2)
|
187
|
+
rails (~> 4.0)
|
188
|
+
sass-rails
|
165
189
|
ember-data-source (1.0.0.beta.15)
|
166
190
|
ember-source (~> 1.8)
|
167
191
|
ember-rails (0.16.1)
|
@@ -323,29 +347,6 @@ GEM
|
|
323
347
|
multi_json (1.10.1)
|
324
348
|
multi_xml (0.5.5)
|
325
349
|
multipart-post (1.2.0)
|
326
|
-
neighborly-balanced (2.0.2)
|
327
|
-
balanced (~> 1.1)
|
328
|
-
draper (~> 1.3)
|
329
|
-
faraday (= 0.8.9)
|
330
|
-
faraday_middleware (= 0.9.0)
|
331
|
-
rails (~> 4.0)
|
332
|
-
neighborly-balanced-bankaccount (2.0.3)
|
333
|
-
neighborly-balanced (~> 2.0)
|
334
|
-
rails (~> 4.0)
|
335
|
-
sidekiq (~> 3.0)
|
336
|
-
slim (~> 2.0)
|
337
|
-
neighborly-balanced-creditcard (2.0.0)
|
338
|
-
neighborly-balanced (~> 2.0)
|
339
|
-
rails (~> 4.0)
|
340
|
-
slim (~> 2.0)
|
341
|
-
neighborly-dashboard (1.0.2)
|
342
|
-
bootstrap-sass
|
343
|
-
coffee-rails
|
344
|
-
ember-rails (~> 0.15)
|
345
|
-
emblem-rails (~> 0.2)
|
346
|
-
font-awesome-sass (~> 4.2)
|
347
|
-
rails (~> 4.0)
|
348
|
-
sass-rails
|
349
350
|
net-scp (1.2.1)
|
350
351
|
net-ssh (>= 2.6.5)
|
351
352
|
net-ssh (2.9.2)
|
@@ -409,15 +410,15 @@ GEM
|
|
409
410
|
rack
|
410
411
|
rack-test (0.6.3)
|
411
412
|
rack (>= 1.0)
|
412
|
-
rails (4.1.
|
413
|
-
actionmailer (= 4.1.
|
414
|
-
actionpack (= 4.1.
|
415
|
-
actionview (= 4.1.
|
416
|
-
activemodel (= 4.1.
|
417
|
-
activerecord (= 4.1.
|
418
|
-
activesupport (= 4.1.
|
413
|
+
rails (4.1.7)
|
414
|
+
actionmailer (= 4.1.7)
|
415
|
+
actionpack (= 4.1.7)
|
416
|
+
actionview (= 4.1.7)
|
417
|
+
activemodel (= 4.1.7)
|
418
|
+
activerecord (= 4.1.7)
|
419
|
+
activesupport (= 4.1.7)
|
419
420
|
bundler (>= 1.3.0, < 2.0)
|
420
|
-
railties (= 4.1.
|
421
|
+
railties (= 4.1.7)
|
421
422
|
sprockets-rails (~> 2.0)
|
422
423
|
rails-observers (0.1.2)
|
423
424
|
activemodel (~> 4.0)
|
@@ -426,9 +427,9 @@ GEM
|
|
426
427
|
rails_stdout_logging
|
427
428
|
rails_serve_static_assets (0.0.4)
|
428
429
|
rails_stdout_logging (0.0.3)
|
429
|
-
railties (4.1.
|
430
|
-
actionpack (= 4.1.
|
431
|
-
activesupport (= 4.1.
|
430
|
+
railties (4.1.7)
|
431
|
+
actionpack (= 4.1.7)
|
432
|
+
activesupport (= 4.1.7)
|
432
433
|
rake (>= 0.8.7)
|
433
434
|
thor (>= 0.18.1, < 2.0)
|
434
435
|
raindrops (0.13.0)
|
@@ -503,7 +504,6 @@ GEM
|
|
503
504
|
railties (>= 3.0, < 4.2)
|
504
505
|
slim (~> 2.0)
|
505
506
|
slop (3.6.0)
|
506
|
-
spring (1.3.2)
|
507
507
|
sprockets (2.12.3)
|
508
508
|
hike (~> 1.2)
|
509
509
|
multi_json (~> 1.0)
|
@@ -582,6 +582,10 @@ DEPENDENCIES
|
|
582
582
|
dropzonejs-rails (~> 0.4.14)
|
583
583
|
dune-admin (~> 1.2.3)
|
584
584
|
dune-api!
|
585
|
+
dune-balanced (~> 1.0.0)
|
586
|
+
dune-balanced-bankaccount (~> 1.0.0)
|
587
|
+
dune-balanced-creditcard (~> 1.0.0)
|
588
|
+
dune-dashboard (~> 1.0.0)
|
585
589
|
ezcrypto
|
586
590
|
factory_girl_rails
|
587
591
|
fakeweb
|
@@ -602,10 +606,6 @@ DEPENDENCIES
|
|
602
606
|
launchy
|
603
607
|
letter_opener
|
604
608
|
minitest
|
605
|
-
neighborly-balanced (~> 2.0.0)
|
606
|
-
neighborly-balanced-bankaccount (~> 2.0.0)
|
607
|
-
neighborly-balanced-creditcard (~> 2.0.0)
|
608
|
-
neighborly-dashboard (~> 1.0.2)
|
609
609
|
newrelic_rpm
|
610
610
|
nprogress-rails
|
611
611
|
omniauth
|
@@ -620,7 +620,7 @@ DEPENDENCIES
|
|
620
620
|
pry
|
621
621
|
pundit (~> 0.2.3)
|
622
622
|
quiet_assets
|
623
|
-
rails (= 4.1.
|
623
|
+
rails (= 4.1.7)
|
624
624
|
rails-observers (~> 0.1.2)
|
625
625
|
rails_12factor
|
626
626
|
rake (~> 10.3)
|
@@ -635,7 +635,6 @@ DEPENDENCIES
|
|
635
635
|
simple_form (~> 3.0.2)
|
636
636
|
sinatra (~> 1.4.5)
|
637
637
|
slim-rails
|
638
|
-
spring
|
639
638
|
state_machine!
|
640
639
|
therubyracer
|
641
640
|
thin
|
data/apiary.apib
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
FORMAT: 1A
|
2
2
|
HOST: https://www.dune-investissement.fr/api/
|
3
3
|
|
4
|
-
# dune-investissement
|
5
|
-
Here you will find how to integrate an application with
|
4
|
+
# www.dune-investissement.fr
|
5
|
+
Here you will find how to integrate an application with www.dune-investissement.fr. Check our [Dashboard source code](https://github.com/dune/dune-dashboard) for a real use case.
|
6
6
|
|
7
7
|
## Allowed HTTPs requests:
|
8
8
|
|
@@ -35,8 +35,8 @@ Here you will find how to integrate an application with Dune. Check our [Dashboa
|
|
35
35
|
|
36
36
|
+ Parameters
|
37
37
|
|
38
|
-
+ email (required, string) ... Your dune account email address
|
39
|
-
+ password (required, string) ... Your dune account password
|
38
|
+
+ email (required, string) ... Your www.dune-investissement.fr account email address
|
39
|
+
+ password (required, string) ... Your www.dune-investissement.fr account password
|
40
40
|
|
41
41
|
+ Request
|
42
42
|
|
@@ -597,17 +597,17 @@ Some atributes may not be saved, it will depends from the user access rights.
|
|
597
597
|
+ Response 403 (application/json)
|
598
598
|
|
599
599
|
|
600
|
-
# Group
|
600
|
+
# Group Contributions
|
601
601
|
|
602
|
-
## /
|
602
|
+
## /contributions
|
603
603
|
|
604
|
-
### List
|
604
|
+
### List contributions [GET]
|
605
605
|
|
606
606
|
Requires the user to be an admin.
|
607
607
|
|
608
608
|
+ Parameters
|
609
609
|
|
610
|
-
+ query (optional, string) ... Search for
|
610
|
+
+ query (optional, string) ... Search for contributions
|
611
611
|
+ between_values (optional, object) ... Filter between values
|
612
612
|
+ project_id (optional, string) ... Filter by project id
|
613
613
|
|
@@ -638,7 +638,7 @@ Requires the user to be an admin.
|
|
638
638
|
+ Response 200 (application/json)
|
639
639
|
|
640
640
|
{
|
641
|
-
"
|
641
|
+
"contributions":[
|
642
642
|
{
|
643
643
|
"id":1714,
|
644
644
|
"project_id":62,
|
@@ -689,7 +689,7 @@ Requires the user to be an admin.
|
|
689
689
|
|
690
690
|
{}
|
691
691
|
|
692
|
-
## /
|
692
|
+
## /contribution/{id}/confirm
|
693
693
|
|
694
694
|
### Manually Confirm a Contibution [PUT]
|
695
695
|
|
@@ -713,7 +713,7 @@ Requires the user to be an admin.
|
|
713
713
|
|
714
714
|
{}
|
715
715
|
|
716
|
-
## /
|
716
|
+
## /contribution/{id}/pendent
|
717
717
|
|
718
718
|
### Set a Contibution as Pending [PUT]
|
719
719
|
|
@@ -737,9 +737,9 @@ Requires the user to be an admin.
|
|
737
737
|
|
738
738
|
{}
|
739
739
|
|
740
|
-
## /
|
740
|
+
## /contribution/{id}/refund
|
741
741
|
|
742
|
-
### Refund
|
742
|
+
### Refund a Contribution [PUT]
|
743
743
|
|
744
744
|
Requires the user to be an admin.
|
745
745
|
|
@@ -761,13 +761,13 @@ Requires the user to be an admin.
|
|
761
761
|
|
762
762
|
{}
|
763
763
|
|
764
|
-
## /
|
764
|
+
## /contribution/{id}/hide
|
765
765
|
|
766
|
-
### Hide
|
766
|
+
### Hide a Contribution [PUT]
|
767
767
|
|
768
768
|
Requires the user to be an admin.
|
769
769
|
|
770
|
-
It will change the
|
770
|
+
It will change the contribution state to `refunded_and_canceled`.
|
771
771
|
|
772
772
|
+ Request
|
773
773
|
|
@@ -787,9 +787,9 @@ It will change the investment state to `refunded_and_canceled`.
|
|
787
787
|
|
788
788
|
{}
|
789
789
|
|
790
|
-
## /
|
790
|
+
## /contribution/{id}/cancel
|
791
791
|
|
792
|
-
### Cancel
|
792
|
+
### Cancel a Contribution[PUT]
|
793
793
|
|
794
794
|
Requires the user to be an admin.
|
795
795
|
|
@@ -810,9 +810,9 @@ Requires the user to be an admin.
|
|
810
810
|
+ Response 401 (application/json)
|
811
811
|
|
812
812
|
|
813
|
-
## /
|
813
|
+
## /contributions/{id}
|
814
814
|
|
815
|
-
### Update
|
815
|
+
### Update a Contribution [PUT]
|
816
816
|
|
817
817
|
Requires the user to be an admin.
|
818
818
|
|
@@ -826,7 +826,7 @@ Requires the user to be an admin.
|
|
826
826
|
+ Body
|
827
827
|
|
828
828
|
{
|
829
|
-
"
|
829
|
+
"contribution":{
|
830
830
|
"value":"10.0"
|
831
831
|
}
|
832
832
|
}
|
@@ -852,7 +852,7 @@ Requires the user to be an admin.
|
|
852
852
|
}
|
853
853
|
|
854
854
|
|
855
|
-
### Fetch
|
855
|
+
### Fetch Contribution information [GET]
|
856
856
|
|
857
857
|
Requires the user to be an admin.
|
858
858
|
|
@@ -867,7 +867,7 @@ Requires the user to be an admin.
|
|
867
867
|
+ Response 200 (application/json)
|
868
868
|
|
869
869
|
{
|
870
|
-
"
|
870
|
+
"contribution": {
|
871
871
|
"id":1714,
|
872
872
|
"project_id":62,
|
873
873
|
"user_id":1,
|
@@ -907,7 +907,7 @@ Requires the user to be an admin.
|
|
907
907
|
}
|
908
908
|
}
|
909
909
|
|
910
|
-
### Destroy
|
910
|
+
### Destroy a Contribution [DELETE]
|
911
911
|
|
912
912
|
Requires the user to be an admin.
|
913
913
|
|
@@ -1756,7 +1756,7 @@ Requires the user to be an admin.
|
|
1756
1756
|
"id":277,
|
1757
1757
|
"project_id":75,
|
1758
1758
|
"minimum_value":"1000.0",
|
1759
|
-
"
|
1759
|
+
"maximum_contributions":null,
|
1760
1760
|
"description":"Foo Bar Lorem",
|
1761
1761
|
"created_at":"2014-01-09T02:36:38.297-06:00",
|
1762
1762
|
"updated_at":"2014-01-10T18:44:53.686-06:00",
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Dune::Api
|
2
2
|
module V1
|
3
|
-
class
|
3
|
+
class ContributionsController < BaseController
|
4
4
|
include PaginatedController
|
5
5
|
|
6
6
|
before_action :require_admin!
|
@@ -8,37 +8,37 @@ module Dune::Api
|
|
8
8
|
has_scope :pg_search, as: :query
|
9
9
|
has_scope :by_project_id, as: :project_id
|
10
10
|
has_scope :between_values,
|
11
|
-
|
12
|
-
|
11
|
+
using: %i(initial final),
|
12
|
+
type: :hash
|
13
13
|
|
14
14
|
def index
|
15
15
|
respond_with_pagination collection
|
16
16
|
end
|
17
17
|
|
18
18
|
def show
|
19
|
-
respond_with Dune::Api::
|
19
|
+
respond_with Dune::Api::Contribution.find(params[:id])
|
20
20
|
end
|
21
21
|
|
22
22
|
def update
|
23
|
-
@
|
24
|
-
authorize @
|
25
|
-
respond_with ::
|
23
|
+
@contribution = ::Contribution.find(params[:id])
|
24
|
+
authorize @contribution
|
25
|
+
respond_with ::Contribution.update(params[:id], permitted_params)
|
26
26
|
end
|
27
27
|
|
28
28
|
def destroy
|
29
|
-
|
30
|
-
authorize
|
29
|
+
contribution = ::Contribution.find(params[:id])
|
30
|
+
authorize contribution
|
31
31
|
|
32
|
-
|
32
|
+
contribution.push_to_trash!
|
33
33
|
head :no_content
|
34
34
|
end
|
35
35
|
|
36
36
|
[:confirm, :pendent, :refund, :hide, :cancel].each do |name|
|
37
37
|
define_method name do
|
38
|
-
|
39
|
-
authorize
|
38
|
+
contribution = ::Contribution.find(params[:id])
|
39
|
+
authorize contribution
|
40
40
|
|
41
|
-
|
41
|
+
contribution.send("#{name.to_s}!")
|
42
42
|
head :no_content
|
43
43
|
end
|
44
44
|
end
|
@@ -46,19 +46,19 @@ module Dune::Api
|
|
46
46
|
private
|
47
47
|
|
48
48
|
def permitted_params
|
49
|
-
params.permit(policy(@
|
49
|
+
params.permit(policy(@contribution || ::Contribution).permitted_attributes)[:contribution]
|
50
50
|
end
|
51
51
|
|
52
52
|
def collection
|
53
53
|
@collection ||= begin
|
54
54
|
apply_scopes(
|
55
|
-
|
55
|
+
scoped_by_state(Dune::Api::Contribution)
|
56
56
|
).order('created_at desc').all
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
60
|
def scoped_by_state(scope)
|
61
|
-
state_scopes = params.slice(*
|
61
|
+
state_scopes = params.slice(*Contribution.state_names).keys
|
62
62
|
if state_scopes.any?
|
63
63
|
scope.with_state(state_scopes)
|
64
64
|
else
|
data/config/routes.rb
CHANGED
data/lib/dune/api/version.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Dune::Api::V1::
|
3
|
+
describe Dune::Api::V1::ContributionsController do
|
4
4
|
routes { Dune::Api::Engine.routes }
|
5
|
-
let!(:
|
5
|
+
let!(:contribution) { FactoryGirl.create(:contribution) }
|
6
6
|
|
7
|
-
let(:
|
8
|
-
parsed_response.fetch('
|
7
|
+
let(:contributions_returned) do
|
8
|
+
parsed_response.fetch('contributions').map { |t| t['id'] }
|
9
9
|
end
|
10
10
|
|
11
11
|
let(:parsed_response) { JSON.parse(response.body) }
|
@@ -16,45 +16,45 @@ describe Dune::Api::V1::InvestmentsController do
|
|
16
16
|
it_behaves_like 'paginating results'
|
17
17
|
|
18
18
|
it 'filters by query' do
|
19
|
-
|
20
|
-
FactoryGirl.create(:
|
19
|
+
contribution = FactoryGirl.create(:contribution, payment_method: 'balanced')
|
20
|
+
FactoryGirl.create(:contribution, payment_method: 'paypal')
|
21
21
|
get :index, format: :json, query: 'balanced'
|
22
|
-
expect(
|
22
|
+
expect(contributions_returned).to eql([contribution.id])
|
23
23
|
end
|
24
24
|
|
25
25
|
describe 'filtering by between_values' do
|
26
26
|
before do
|
27
|
-
@
|
28
|
-
@
|
29
|
-
FactoryGirl.create(:
|
27
|
+
@contribution_30 = FactoryGirl.create(:contribution, value: 30)
|
28
|
+
@contribution_35 = FactoryGirl.create(:contribution, value: 35)
|
29
|
+
FactoryGirl.create(:contribution, value: 40)
|
30
30
|
end
|
31
31
|
|
32
|
-
it 'returns just those
|
32
|
+
it 'returns just those contributions in the given range' do
|
33
33
|
get :index, format: :json,
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
expect(
|
34
|
+
between_values: {
|
35
|
+
initial: 30,
|
36
|
+
final: 35
|
37
|
+
}
|
38
|
+
expect(contributions_returned).to eql([@contribution_35.id, @contribution_30.id])
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
42
|
describe 'filter by state' do
|
43
|
-
let!(:
|
44
|
-
FactoryGirl.create(:
|
43
|
+
let!(:pending_contribution) do
|
44
|
+
FactoryGirl.create(:contribution, state: :pending)
|
45
45
|
end
|
46
46
|
|
47
|
-
|
47
|
+
Contribution.state_names.each do |state|
|
48
48
|
it "filters by state #{state}" do
|
49
|
-
|
49
|
+
contribution = FactoryGirl.create(:contribution, state: state)
|
50
50
|
expected_ids = if state.eql?(:pending)
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
51
|
+
[contribution.id, pending_contribution.id]
|
52
|
+
else
|
53
|
+
[contribution.id]
|
54
|
+
end
|
55
55
|
|
56
56
|
get :index, format: :json, state => '1'
|
57
|
-
expect(
|
57
|
+
expect(contributions_returned).to include(*expected_ids)
|
58
58
|
end
|
59
59
|
end
|
60
60
|
end
|
@@ -64,34 +64,34 @@ describe Dune::Api::V1::InvestmentsController do
|
|
64
64
|
let(:second_project) { FactoryGirl.create(:project, state: 'online') }
|
65
65
|
|
66
66
|
before do
|
67
|
-
@
|
68
|
-
FactoryGirl.create(:
|
67
|
+
@contribution = FactoryGirl.create(:contribution, value: 10, project: first_project)
|
68
|
+
FactoryGirl.create(:contribution, value: 10, project: second_project)
|
69
69
|
end
|
70
70
|
|
71
|
-
it 'returns just those
|
71
|
+
it 'returns just those contributions in the given project id' do
|
72
72
|
get :index, project_id: first_project.id, format: :json
|
73
|
-
expect(
|
73
|
+
expect(contributions_returned).to eql([@contribution.id])
|
74
74
|
end
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
78
|
describe '#show', authorized: true, admin: true do
|
79
|
-
let(:do_request) { get :show, id:
|
79
|
+
let(:do_request) { get :show, id: contribution.id, format: :json }
|
80
80
|
|
81
81
|
it 'responds with 200' do
|
82
82
|
do_request
|
83
83
|
expect(response.status).to eql(200)
|
84
84
|
end
|
85
85
|
|
86
|
-
it 'has a top level element called
|
86
|
+
it 'has a top level element called contribution' do
|
87
87
|
do_request
|
88
|
-
expect(parsed_response.fetch('
|
88
|
+
expect(parsed_response.fetch('contribution')).to be_a(Hash)
|
89
89
|
end
|
90
90
|
|
91
|
-
it 'responds with data of the given
|
91
|
+
it 'responds with data of the given contribution' do
|
92
92
|
do_request
|
93
93
|
expect(
|
94
|
-
|
94
|
+
parsed_response.fetch('contribution')
|
95
95
|
).to have_key('id')
|
96
96
|
end
|
97
97
|
end
|
@@ -99,14 +99,14 @@ describe Dune::Api::V1::InvestmentsController do
|
|
99
99
|
describe '#update', authorized: true, admin: true do
|
100
100
|
let(:do_request) do
|
101
101
|
put :update,
|
102
|
-
id:
|
103
|
-
|
102
|
+
id: contribution.id,
|
103
|
+
contribution: { value: 15 },
|
104
104
|
format: :json
|
105
105
|
end
|
106
106
|
|
107
107
|
it 'updates the record' do
|
108
|
-
expect(::
|
109
|
-
|
108
|
+
expect(::Contribution).to receive(:update)
|
109
|
+
.with(contribution.id.to_s, { 'value' => 15 })
|
110
110
|
|
111
111
|
do_request
|
112
112
|
end
|
@@ -121,8 +121,8 @@ describe Dune::Api::V1::InvestmentsController do
|
|
121
121
|
context 'on failure' do
|
122
122
|
let(:do_request) do
|
123
123
|
put :update,
|
124
|
-
id:
|
125
|
-
|
124
|
+
id: contribution.id,
|
125
|
+
contribution: { value: nil },
|
126
126
|
format: :json
|
127
127
|
end
|
128
128
|
|
@@ -141,23 +141,23 @@ describe Dune::Api::V1::InvestmentsController do
|
|
141
141
|
end
|
142
142
|
|
143
143
|
describe 'destroy', authorized: true, admin: true do
|
144
|
-
let(:do_request) { delete :destroy, id:
|
144
|
+
let(:do_request) { delete :destroy, id: contribution.id, format: :json }
|
145
145
|
|
146
146
|
it 'returns a success http status' do
|
147
147
|
do_request
|
148
148
|
expect(response.status).to eq(204)
|
149
|
-
expect(
|
149
|
+
expect(contribution.reload.deleted?).to be_truthy
|
150
150
|
end
|
151
151
|
end
|
152
152
|
|
153
153
|
[:confirm, :pendent, :refund, :hide, :cancel].each do |name|
|
154
154
|
describe "#{name}", authorized: true, admin: true do
|
155
155
|
let(:user) { FactoryGirl.create(:user, admin: true) }
|
156
|
-
let(:
|
156
|
+
let(:contribution) do
|
157
157
|
state = (name == :refund) ? 'confirmed' : 'deleted'
|
158
|
-
FactoryGirl.create(:
|
158
|
+
FactoryGirl.create(:contribution, state: state)
|
159
159
|
end
|
160
|
-
let(:do_request) { put name, id:
|
160
|
+
let(:do_request) { put name, id: contribution.id, format: :json }
|
161
161
|
|
162
162
|
it 'returns a success http status' do
|
163
163
|
do_request
|
@@ -165,12 +165,12 @@ describe Dune::Api::V1::InvestmentsController do
|
|
165
165
|
end
|
166
166
|
|
167
167
|
it 'authorizes the resource' do
|
168
|
-
expect(controller).to receive(:authorize).with(
|
168
|
+
expect(controller).to receive(:authorize).with(contribution)
|
169
169
|
do_request
|
170
170
|
end
|
171
171
|
|
172
172
|
it 'calls the state machine helper to change the state' do
|
173
|
-
expect_any_instance_of(
|
173
|
+
expect_any_instance_of(Contribution).to receive("#{name}!")
|
174
174
|
do_request
|
175
175
|
end
|
176
176
|
end
|
data/spec/factories.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Dune::Api::
|
3
|
+
describe Dune::Api::Contribution do
|
4
4
|
describe '.between_values' do
|
5
|
-
it 'returns the
|
6
|
-
FactoryGirl.create(:
|
7
|
-
FactoryGirl.create(:
|
8
|
-
FactoryGirl.create(:
|
9
|
-
FactoryGirl.create(:
|
5
|
+
it 'returns the contributions with value between 15 and 20' do
|
6
|
+
FactoryGirl.create(:contribution, value: 10)
|
7
|
+
FactoryGirl.create(:contribution, value: 15)
|
8
|
+
FactoryGirl.create(:contribution, value: 20)
|
9
|
+
FactoryGirl.create(:contribution, value: 21)
|
10
10
|
|
11
11
|
expect(described_class.between_values(15, 20).size).to eq 2
|
12
12
|
end
|
@@ -22,11 +22,11 @@ describe Dune::Api::Investment do
|
|
22
22
|
let(:second_project) { FactoryGirl.create(:project, state: 'online') }
|
23
23
|
|
24
24
|
before do
|
25
|
-
FactoryGirl.create(:
|
26
|
-
FactoryGirl.create(:
|
25
|
+
FactoryGirl.create(:contribution, value: 10, project: first_project)
|
26
|
+
FactoryGirl.create(:contribution, value: 10, project: second_project)
|
27
27
|
end
|
28
28
|
|
29
|
-
it 'returns the
|
29
|
+
it 'returns the contributions from the first project' do
|
30
30
|
expect(described_class.by_project_id(first_project.id).size).to eq 1
|
31
31
|
end
|
32
32
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dune-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pierre Legrand
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: has_scope
|
@@ -132,7 +132,7 @@ files:
|
|
132
132
|
- app/controllers/dune/api/base_controller.rb
|
133
133
|
- app/controllers/dune/api/v1/channels/members_controller.rb
|
134
134
|
- app/controllers/dune/api/v1/channels_controller.rb
|
135
|
-
- app/controllers/dune/api/v1/
|
135
|
+
- app/controllers/dune/api/v1/contributions_controller.rb
|
136
136
|
- app/controllers/dune/api/v1/press_assets_controller.rb
|
137
137
|
- app/controllers/dune/api/v1/projects_controller.rb
|
138
138
|
- app/controllers/dune/api/v1/rewards_controller.rb
|
@@ -140,12 +140,12 @@ files:
|
|
140
140
|
- app/controllers/dune/api/v1/tags_controller.rb
|
141
141
|
- app/controllers/dune/api/v1/users_controller.rb
|
142
142
|
- app/models/dune/api/access_token.rb
|
143
|
-
- app/models/dune/api/
|
143
|
+
- app/models/dune/api/contribution.rb
|
144
144
|
- app/models/dune/api/project.rb
|
145
145
|
- app/models/dune/api/user_concern.rb
|
146
146
|
- app/serializers/channel_member_serializer.rb
|
147
147
|
- app/serializers/channel_serializer.rb
|
148
|
-
- app/serializers/dune/api/
|
148
|
+
- app/serializers/dune/api/contribution_serializer.rb
|
149
149
|
- app/serializers/dune/api/project_serializer.rb
|
150
150
|
- app/serializers/press_asset_serializer.rb
|
151
151
|
- app/serializers/reward_serializer.rb
|
@@ -163,7 +163,7 @@ files:
|
|
163
163
|
- spec/constraints/dune/api/api_constraint_spec.rb
|
164
164
|
- spec/controllers/dune/api/v1/channels/members_controller_spec.rb
|
165
165
|
- spec/controllers/dune/api/v1/channels_controller_spec.rb
|
166
|
-
- spec/controllers/dune/api/v1/
|
166
|
+
- spec/controllers/dune/api/v1/contributions_controller_spec.rb
|
167
167
|
- spec/controllers/dune/api/v1/press_assets_controller_spec.rb
|
168
168
|
- spec/controllers/dune/api/v1/projects_controller_spec.rb
|
169
169
|
- spec/controllers/dune/api/v1/rewards_controller_spec.rb
|
@@ -172,7 +172,7 @@ files:
|
|
172
172
|
- spec/controllers/dune/api/v1/users_controller_spec.rb
|
173
173
|
- spec/factories.rb
|
174
174
|
- spec/fixtures/image.png
|
175
|
-
- spec/models/dune/api/
|
175
|
+
- spec/models/dune/api/contribution_spec.rb
|
176
176
|
- spec/models/dune/api/user_concern_spec.rb
|
177
177
|
- spec/spec_helper.rb
|
178
178
|
- spec/support/shared_examples.rb
|
@@ -196,7 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
196
196
|
version: '0'
|
197
197
|
requirements: []
|
198
198
|
rubyforge_project:
|
199
|
-
rubygems_version: 2.
|
199
|
+
rubygems_version: 2.2.2
|
200
200
|
signing_key:
|
201
201
|
specification_version: 4
|
202
202
|
summary: dune API
|
@@ -204,7 +204,7 @@ test_files:
|
|
204
204
|
- spec/constraints/dune/api/api_constraint_spec.rb
|
205
205
|
- spec/controllers/dune/api/v1/channels/members_controller_spec.rb
|
206
206
|
- spec/controllers/dune/api/v1/channels_controller_spec.rb
|
207
|
-
- spec/controllers/dune/api/v1/
|
207
|
+
- spec/controllers/dune/api/v1/contributions_controller_spec.rb
|
208
208
|
- spec/controllers/dune/api/v1/press_assets_controller_spec.rb
|
209
209
|
- spec/controllers/dune/api/v1/projects_controller_spec.rb
|
210
210
|
- spec/controllers/dune/api/v1/rewards_controller_spec.rb
|
@@ -213,7 +213,7 @@ test_files:
|
|
213
213
|
- spec/controllers/dune/api/v1/users_controller_spec.rb
|
214
214
|
- spec/factories.rb
|
215
215
|
- spec/fixtures/image.png
|
216
|
-
- spec/models/dune/api/
|
216
|
+
- spec/models/dune/api/contribution_spec.rb
|
217
217
|
- spec/models/dune/api/user_concern_spec.rb
|
218
218
|
- spec/spec_helper.rb
|
219
219
|
- spec/support/shared_examples.rb
|