todaysplan 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/lib/todays_plan.rb +1 -1
- data/lib/todays_plan/{athlete.rb → user.rb} +42 -21
- data/lib/todays_plan/version.rb +1 -1
- data/spec/fixtures/{athletes → users}/accept_response.json +0 -0
- data/spec/fixtures/{athletes → users}/delegates_response.json +0 -0
- data/spec/fixtures/{athletes → users}/invite_response.json +0 -0
- data/spec/fixtures/{athletes → users}/register_response.json +0 -0
- data/spec/fixtures/{athletes → users}/search_response.json +0 -0
- data/spec/todays_plan/{athlete_spec.rb → user_spec.rb} +47 -39
- metadata +15 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 282b2cf2f7d630c1ac5b3d5abc7a0af9a256c97f
|
4
|
+
data.tar.gz: f9e2c2653716d8407c4f3e3829168191170374e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb494b63767c70fa28c649abd389400bef271cfc8bbfac8ebace68c7d616d840bf680b73ece5ca07c704c4401a70b73de96f11a5bc42b48505b7ac209fbabcb4
|
7
|
+
data.tar.gz: 93fdbf177e80b1fae7cbf1b13ec07ad4c01f4bc1fce2b87b20ad07193bee45a49fb70f4e55d8dbaa45fae28ba0d1a8e6b224c7e32392d5eb02a2e361c7bcc7dc
|
data/lib/todays_plan.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module TodaysPlan
|
2
2
|
# Uses the TodaysPlan API for workouts and athlete information
|
3
3
|
|
4
|
-
class
|
4
|
+
class User
|
5
5
|
|
6
6
|
attr_reader :id
|
7
7
|
attr_reader :name
|
@@ -28,51 +28,72 @@ module TodaysPlan
|
|
28
28
|
|
29
29
|
# Find a single athlete
|
30
30
|
# +id+:: the athlete id
|
31
|
+
# returns User
|
31
32
|
def self.find(id)
|
32
33
|
all().find{|a| a.id==id}
|
33
34
|
end
|
34
35
|
|
35
36
|
# Find all the coaches athletes
|
36
37
|
# +client+:: the authenticated client
|
38
|
+
# returns [User]
|
37
39
|
def self.all(client = nil)
|
38
40
|
Connector.new('/users/delegates/users', client).get.map do |data|
|
39
41
|
new(data)
|
40
42
|
end
|
41
43
|
end
|
42
44
|
|
43
|
-
|
44
|
-
#
|
45
|
-
#
|
45
|
+
|
46
|
+
# Register a new user
|
47
|
+
# This is an unauthenticated request.
|
48
|
+
# options:
|
49
|
+
# email - email address of new user
|
46
50
|
# firstname - first name of new user
|
47
51
|
# lastname - last name of new user
|
48
52
|
# password - password of new user
|
49
|
-
#
|
50
|
-
def self.
|
51
|
-
|
53
|
+
# returns User
|
54
|
+
def self.register(options)
|
52
55
|
#preregister
|
53
56
|
response = RestClient.get("#{TodaysPlan.endpoint}/auth/preregister")
|
54
57
|
|
55
|
-
# register the user
|
56
|
-
payload = {email: options[:
|
58
|
+
# register/create the user
|
59
|
+
payload = {email: options[:email], firstname: options[:firstname],
|
57
60
|
lastname: options[:lastname], password: options[:password]}
|
58
61
|
response = RestClient.post("#{TodaysPlan.endpoint}/auth/register",payload.to_json,
|
59
62
|
{ content_type: :json})
|
60
63
|
response.body
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
64
|
+
new(JSON.parse(response.body))
|
65
|
+
end
|
66
|
+
|
67
|
+
# Invite delegates
|
68
|
+
# This is an authenticated request of the new user to invite the delegates (coach)
|
69
|
+
# options
|
70
|
+
# relationship - relationship of delegate, i.e coach
|
71
|
+
# state - state of invite. i.e pending_coach
|
72
|
+
# email - delegates email in todaysplan
|
73
|
+
# returns Hash of the invite
|
74
|
+
def self.invite(options, client = nil)
|
75
|
+
# new user invites coach
|
76
|
+
invite={"email"=>options[:email],"state"=> options[:state],
|
77
|
+
"relationship"=> options[:relationship]}.to_json
|
78
|
+
Connector.new('/users/delegates/invite', client).post(invite)
|
79
|
+
end
|
80
|
+
|
81
|
+
# Accept pending invitations
|
82
|
+
# This is an authenticated request of the delegate (coach) to accept invites
|
83
|
+
# from the new user.
|
84
|
+
# queries for pending invitations and accept them.
|
85
|
+
# options
|
86
|
+
# id - id of the invite from #invite
|
87
|
+
# state - state of invite. i.e pending_coach
|
88
|
+
# returns [User]
|
89
|
+
def self.accept_invites(options, client = nil)
|
69
90
|
Connector.new('/users/delegates/search/0/100', client).
|
70
|
-
post({ "state"=>
|
71
|
-
|
72
|
-
|
91
|
+
post({ "state"=> options[:state]}.to_json)["results"].map do |data|
|
92
|
+
|
93
|
+
# accept found invite
|
94
|
+
new(Connector.new("/users/delegates/invite/accept/#{data["id"]}").get()["client"])
|
73
95
|
|
74
96
|
end
|
75
|
-
athlete
|
76
97
|
end
|
77
98
|
end
|
78
99
|
end
|
data/lib/todays_plan/version.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,24 +1,24 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe TodaysPlan::
|
3
|
+
describe TodaysPlan::User do
|
4
4
|
|
5
|
-
let(:response){File.read("spec/fixtures/
|
5
|
+
let(:response){File.read("spec/fixtures/users/search_response.json")}
|
6
6
|
|
7
7
|
it "expect to get all athletes" do
|
8
8
|
stub_request(:get, "#{TodaysPlan.endpoint}/users/delegates/users").
|
9
9
|
with(:headers => {'Accept'=>'application/json',
|
10
10
|
'Authorization'=>'Bearer abc-123', }).
|
11
11
|
to_return(:status => 200, :body => response, :headers => {})
|
12
|
-
|
13
|
-
expect(
|
14
|
-
expect(
|
15
|
-
expect(
|
16
|
-
expect(
|
17
|
-
expect(
|
18
|
-
expect(
|
19
|
-
expect(
|
20
|
-
expect(
|
21
|
-
expect(
|
12
|
+
users = TodaysPlan::User.all()
|
13
|
+
expect(users).to be_a(Array)
|
14
|
+
expect(users[0]).to be_a(TodaysPlan::User)
|
15
|
+
expect(users[0].first_name).to eq "Joe"
|
16
|
+
expect(users[0].last_name).to eq "Athlete"
|
17
|
+
expect(users[0].coach).to eq 7187033
|
18
|
+
expect(users[0].timezone).to eq "US/Mountain"
|
19
|
+
expect(users[0].id).to eq 7187033
|
20
|
+
expect(users[0].name).to eq "Joe Athlete"
|
21
|
+
expect(users[0].email).to eq "joeathlete@example.com"
|
22
22
|
end
|
23
23
|
|
24
24
|
it "expect to get one athlete" do
|
@@ -26,19 +26,20 @@ describe TodaysPlan::Athlete do
|
|
26
26
|
with(:headers => {'Accept'=>'application/json',
|
27
27
|
'Authorization'=>'Bearer abc-123', }).
|
28
28
|
to_return(:status => 200, :body => response, :headers => {})
|
29
|
-
|
30
|
-
expect(
|
31
|
-
expect(
|
32
|
-
expect(
|
33
|
-
expect(
|
34
|
-
expect(
|
35
|
-
expect(
|
36
|
-
expect(
|
37
|
-
expect(
|
38
|
-
expect(
|
29
|
+
user = TodaysPlan::User.find(7187033)
|
30
|
+
expect(user).to be_a(TodaysPlan::User)
|
31
|
+
expect(user).to respond_to(:first_name)
|
32
|
+
expect(user).to respond_to(:last_name)
|
33
|
+
expect(user).to respond_to(:coach)
|
34
|
+
expect(user).to respond_to(:timezone)
|
35
|
+
expect(user).to respond_to(:id)
|
36
|
+
expect(user).to respond_to(:name)
|
37
|
+
expect(user).to respond_to(:email)
|
38
|
+
expect(user).to respond_to(:dob)
|
39
|
+
expect(user).to respond_to(:country)
|
39
40
|
end
|
40
41
|
|
41
|
-
it "
|
42
|
+
it "register user" do
|
42
43
|
options = {user_email: 'joeathlete@example.com', firstname: 'joe',
|
43
44
|
lastname: 'athlete', password:'password', coach_email: 'coach@email.com'}
|
44
45
|
# preregister
|
@@ -50,23 +51,33 @@ describe TodaysPlan::Athlete do
|
|
50
51
|
with(:body => '{"email":"joeathlete@example.com","firstname":"joe","lastname":"athlete","password":"password"}',
|
51
52
|
:headers => {'Accept'=>'*/*'}).
|
52
53
|
to_return(:status => 200,
|
53
|
-
:body => File.read("spec/fixtures/
|
54
|
+
:body => File.read("spec/fixtures/users/register_response.json"),
|
54
55
|
:headers => {})
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
56
|
+
|
57
|
+
user = TodaysPlan::User.register(options)
|
58
|
+
expect(user.first_name).to eq "joe"
|
59
|
+
expect(user.last_name).to eq "athlete"
|
60
|
+
expect(user.email).to eq "joeathlete@example.com"
|
61
|
+
expect(user.id).to eq(1234)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "invite delegate" do
|
65
|
+
options = { relationship: 'coach', state: 'pending_coach', email: 'coach@email.com'}
|
61
66
|
#invite the coach
|
62
67
|
stub_request(:post, "#{TodaysPlan.endpoint}/users/delegates/invite").
|
63
68
|
with(:body => '{"email":"coach@email.com","state":"pending_coach","relationship":"coach"}',
|
64
69
|
:headers => {'Accept'=>'application/json',
|
65
|
-
'Authorization'=>'Bearer abc-
|
70
|
+
'Authorization'=>'Bearer abc-123',
|
66
71
|
'Content-Type'=>'application/json'}).
|
67
72
|
to_return(:status => 200,
|
68
|
-
:body => File.read("spec/fixtures/
|
73
|
+
:body => File.read("spec/fixtures/users/invite_response.json"),
|
69
74
|
:headers => {})
|
75
|
+
invite = TodaysPlan::User.invite(options)
|
76
|
+
expect(invite["id"]).to eq 8765
|
77
|
+
end
|
78
|
+
|
79
|
+
it "accept invite" do
|
80
|
+
options = { state: 'pending_coach'}
|
70
81
|
# search for pending invites
|
71
82
|
stub_request(:post, "#{TodaysPlan.endpoint}/users/delegates/search/0/100").
|
72
83
|
with(:body => '{"state":"pending_coach"}',
|
@@ -74,19 +85,16 @@ describe TodaysPlan::Athlete do
|
|
74
85
|
'Authorization'=>'Bearer abc-123',
|
75
86
|
'Content-Type'=>'application/json'}).
|
76
87
|
to_return(:status => 200,
|
77
|
-
:body => File.read("spec/fixtures/
|
88
|
+
:body => File.read("spec/fixtures/users/delegates_response.json"),
|
78
89
|
:headers => {})
|
79
90
|
# accept invite
|
80
91
|
stub_request(:get, "#{TodaysPlan.endpoint}/users/delegates/invite/accept/98765").
|
81
92
|
with(:headers => {'Accept'=>'application/json', 'Authorization'=>'Bearer abc-123'}).
|
82
93
|
to_return(:status => 200,
|
83
|
-
:body => File.read("spec/fixtures/
|
94
|
+
:body => File.read("spec/fixtures/users/accept_response.json"),
|
84
95
|
:headers => {})
|
85
|
-
|
86
|
-
expect(
|
87
|
-
expect(athlete.last_name).to eq "athlete"
|
88
|
-
expect(athlete.email).to eq "joeathlete@example.com"
|
89
|
-
expect(athlete.id).to eq(1234)
|
96
|
+
users = TodaysPlan::User.accept_invites(options)
|
97
|
+
expect(users[0].id).to eq 7189071
|
90
98
|
end
|
91
99
|
|
92
100
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: todaysplan
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Curt Wilhelm
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01-
|
11
|
+
date: 2017-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -92,23 +92,23 @@ files:
|
|
92
92
|
- Rakefile
|
93
93
|
- lib/todays_plan.rb
|
94
94
|
- lib/todays_plan/activity.rb
|
95
|
-
- lib/todays_plan/athlete.rb
|
96
95
|
- lib/todays_plan/client.rb
|
97
96
|
- lib/todays_plan/connector.rb
|
98
97
|
- lib/todays_plan/errors.rb
|
98
|
+
- lib/todays_plan/user.rb
|
99
99
|
- lib/todays_plan/version.rb
|
100
100
|
- spec/fixtures/activities/incomplete.json
|
101
101
|
- spec/fixtures/activities/incomplete_response.json
|
102
|
-
- spec/fixtures/
|
103
|
-
- spec/fixtures/
|
104
|
-
- spec/fixtures/
|
105
|
-
- spec/fixtures/
|
106
|
-
- spec/fixtures/
|
102
|
+
- spec/fixtures/users/accept_response.json
|
103
|
+
- spec/fixtures/users/delegates_response.json
|
104
|
+
- spec/fixtures/users/invite_response.json
|
105
|
+
- spec/fixtures/users/register_response.json
|
106
|
+
- spec/fixtures/users/search_response.json
|
107
107
|
- spec/spec_helper.rb
|
108
108
|
- spec/todays_plan/activity_spec.rb
|
109
|
-
- spec/todays_plan/athlete_spec.rb
|
110
109
|
- spec/todays_plan/client_spec.rb
|
111
110
|
- spec/todays_plan/connector_spec.rb
|
111
|
+
- spec/todays_plan/user_spec.rb
|
112
112
|
- spec/todays_plan_spec.rb
|
113
113
|
homepage: https://github.com/9ksoftware/todaysplan-ruby
|
114
114
|
licenses:
|
@@ -137,14 +137,14 @@ summary: A Ruby Library for TodaysPlan
|
|
137
137
|
test_files:
|
138
138
|
- spec/fixtures/activities/incomplete.json
|
139
139
|
- spec/fixtures/activities/incomplete_response.json
|
140
|
-
- spec/fixtures/
|
141
|
-
- spec/fixtures/
|
142
|
-
- spec/fixtures/
|
143
|
-
- spec/fixtures/
|
144
|
-
- spec/fixtures/
|
140
|
+
- spec/fixtures/users/accept_response.json
|
141
|
+
- spec/fixtures/users/delegates_response.json
|
142
|
+
- spec/fixtures/users/invite_response.json
|
143
|
+
- spec/fixtures/users/register_response.json
|
144
|
+
- spec/fixtures/users/search_response.json
|
145
145
|
- spec/spec_helper.rb
|
146
146
|
- spec/todays_plan/activity_spec.rb
|
147
|
-
- spec/todays_plan/athlete_spec.rb
|
148
147
|
- spec/todays_plan/client_spec.rb
|
149
148
|
- spec/todays_plan/connector_spec.rb
|
149
|
+
- spec/todays_plan/user_spec.rb
|
150
150
|
- spec/todays_plan_spec.rb
|