traitify 1.8.4 → 2.0.1

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.
Files changed (68) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +11 -0
  3. data/CHANGELOG.md +5 -0
  4. data/Gemfile +5 -1
  5. data/Gemfile.lock +109 -42
  6. data/README.md +50 -25
  7. data/lib/traitify/client/connection.rb +23 -0
  8. data/lib/traitify/client/model.rb +45 -0
  9. data/lib/traitify/client/overrides.rb +27 -0
  10. data/lib/traitify/client/request.rb +33 -0
  11. data/lib/traitify/client/setup.rb +25 -0
  12. data/lib/traitify/client.rb +20 -27
  13. data/lib/traitify/configuration.rb +4 -12
  14. data/lib/traitify/data.rb +18 -0
  15. data/lib/traitify/error.rb +18 -16
  16. data/lib/traitify/middleware/formatter.rb +52 -0
  17. data/lib/traitify/middleware/raise_error.rb +38 -0
  18. data/lib/traitify/response.rb +44 -0
  19. data/lib/traitify/version.rb +1 -1
  20. data/lib/traitify.rb +29 -1
  21. data/paths.yml +1352 -0
  22. data/spec/spec_helper.rb +14 -6
  23. data/spec/support/mocks/aggregate.json +7 -0
  24. data/spec/support/mocks/assessment.json +1 -1
  25. data/spec/support/mocks/assessment_analytics.json +7 -0
  26. data/spec/support/mocks/blank.json +0 -0
  27. data/spec/support/mocks/career.json +1 -2
  28. data/spec/support/mocks/careers.json +2 -3
  29. data/spec/support/mocks/decks.json +1 -4
  30. data/spec/support/mocks/locale.json +10 -0
  31. data/spec/support/mocks/locales.json +12 -0
  32. data/spec/support/mocks/profile.json +5 -0
  33. data/spec/support/mocks/profiles.json +5 -0
  34. data/spec/support/mocks/trait_analytics.json +7 -0
  35. data/spec/support/mocks/type_analytics.json +7 -0
  36. data/spec/traitify/client/examples/analytics_spec.rb +69 -0
  37. data/spec/{traitify-ruby/client → traitify/client/examples}/assessment_spec.rb +19 -14
  38. data/spec/traitify/client/examples/career_spec.rb +52 -0
  39. data/spec/traitify/client/examples/configuration_spec.rb +29 -0
  40. data/spec/traitify/client/examples/deck_spec.rb +29 -0
  41. data/spec/traitify/client/examples/locale_spec.rb +39 -0
  42. data/spec/{traitify-ruby/client → traitify/client/examples}/major_spec.rb +12 -11
  43. data/spec/traitify/client/examples/profiles_spec.rb +66 -0
  44. data/spec/traitify/client/examples/result_spec.rb +130 -0
  45. data/spec/traitify/client/examples/slide_spec.rb +95 -0
  46. data/spec/traitify/client/model_spec.rb +73 -0
  47. data/spec/traitify/client/request_spec.rb +85 -0
  48. data/spec/traitify/client/setup_spec.rb +62 -0
  49. data/spec/traitify/client_spec.rb +52 -0
  50. data/spec/traitify/data_spec.rb +105 -0
  51. data/spec/traitify/error_spec.rb +117 -0
  52. data/spec/traitify/response_spec.rb +82 -0
  53. data/spec/traitify/version_spec.rb +7 -0
  54. data/traitify.gemspec +14 -12
  55. metadata +115 -53
  56. data/lib/traitify/client/assessments.rb +0 -29
  57. data/lib/traitify/client/careers.rb +0 -25
  58. data/lib/traitify/client/decks.rb +0 -16
  59. data/lib/traitify/client/majors.rb +0 -25
  60. data/lib/traitify/client/results.rb +0 -37
  61. data/lib/traitify/client/slides.rb +0 -34
  62. data/lib/traitify/connection.rb +0 -33
  63. data/lib/traitify/request.rb +0 -18
  64. data/spec/traitify-ruby/client/career_spec.rb +0 -51
  65. data/spec/traitify-ruby/client/configuration_spec.rb +0 -51
  66. data/spec/traitify-ruby/client/deck_spec.rb +0 -28
  67. data/spec/traitify-ruby/client/result_spec.rb +0 -93
  68. data/spec/traitify-ruby/client/slide_spec.rb +0 -82
@@ -1,25 +0,0 @@
1
- module Traitify
2
- class Client
3
- module Major
4
- # Valid options are
5
- # - page
6
- # - majors_per_page
7
- # - experience_levels
8
- def majors(options = {})
9
- response = options.empty? ?
10
- get("/majors") :
11
- get("/majors?" + options.collect{ |k,v| "#{k}=#{v}" }.join("&"))
12
-
13
- response.collect { |major| Hashie::Mash.new(major) }
14
- end
15
- alias_method :find_majors, :majors
16
-
17
- def major(id)
18
- response = get("/majors/#{id}")
19
-
20
- Hashie::Mash.new(response)
21
- end
22
- alias_method :find_major, :major
23
- end
24
- end
25
- end
@@ -1,37 +0,0 @@
1
- module Traitify
2
- class Client
3
- module Result
4
- def results(assessment_id, image_pack = nil)
5
- image_pack ||= self.image_pack
6
-
7
- response = image_pack ?
8
- get("/assessments/#{assessment_id}/personality_types?image_pack=#{image_pack}") :
9
- get("/assessments/#{assessment_id}/personality_types")
10
-
11
- Hashie::Mash.new(response)
12
- end
13
- alias_method :find_results, :results
14
-
15
- def assessment_personality_traits(assessment_id, personality_type_id = nil)
16
- response = personality_type_id ?
17
- get("/assessments/#{assessment_id}/personality_types/#{personality_type_id}/personality_traits") :
18
- get("/assessments/#{assessment_id}/personality_traits")
19
-
20
- response.collect { |personality_trait| Hashie::Mash.new(personality_trait) }
21
- end
22
- alias_method :find_assessment_personality_traits, :assessment_personality_traits
23
-
24
- def raw_personality_traits(assessment_id)
25
- get("/assessments/#{assessment_id}/personality_traits/raw").collect do |personality_trait|
26
- Hashie::Mash.new(personality_trait)
27
- end
28
- end
29
- alias_method :find_personality_traits, :raw_personality_traits
30
-
31
- def career_matches(assessment_id, number_of_matches=10)
32
- response = get("/assessments/#{assessment_id}/matches/careers?number_of_matches=#{number_of_matches}")
33
- response.collect { |career| Hashie::Mash.new(career) }
34
- end
35
- end
36
- end
37
- end
@@ -1,34 +0,0 @@
1
- module Traitify
2
- class Client
3
- module Slide
4
- def url_for_slides_by(assessment_id)
5
- "/assessments/#{assessment_id}/slides"
6
- end
7
-
8
- def find_slides(assessment_id)
9
- url = url_for_slides_by(assessment_id)
10
- get(url).collect do |slide|
11
- Hashie::Mash.new(slide)
12
- end
13
- end
14
-
15
- def update_slides(assessment_id, slides)
16
- url = url_for_slides_by(assessment_id)
17
- put(url, slides).collect do |slide|
18
- Hashie::Mash.new(slide)
19
- end
20
- end
21
-
22
- def update_slide(assessment_id, slide)
23
- slide_id = slide[:id] || slide.id
24
- params = {
25
- response: slide[:response] || slide.response,
26
- time_taken: slide[:time_taken] || slide.time_taken,
27
- }
28
-
29
- url = [url_for_slides_by(assessment_id), "/", slide_id].join
30
- Hashie::Mash.new put(url, params)
31
- end
32
- end
33
- end
34
- end
@@ -1,33 +0,0 @@
1
- require "faraday_middleware"
2
- require "traitify/error"
3
-
4
- module Traitify
5
- module Connection
6
- def conn(options = {})
7
- Faraday.new(options) do |faraday|
8
- faraday.request :url_encoded
9
- faraday.request :basic_auth, self.secret_key, "x"
10
- faraday.headers["Accept"] = "application/json"
11
- faraday.headers["Content-Type"] = "application/json"
12
- faraday.use ErrorMiddleware
13
- faraday.response :json, :content_type => /\bjson$/
14
- faraday.adapter Faraday.default_adapter
15
- end
16
- end
17
-
18
- private
19
- class ErrorMiddleware < Faraday::Middleware
20
- def initialize(app)
21
- @app = app
22
- end
23
-
24
- def call(env)
25
- @app.call(env).on_complete do |e|
26
- if error = Traitify::Error.from(e)
27
- raise error
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end
@@ -1,18 +0,0 @@
1
- module Traitify
2
- module Request
3
- def method_missing(meth, *args, &block)
4
- if [:get, :post, :put, :delete].include? meth
5
- request(meth, *args)
6
- else
7
- super
8
- end
9
- end
10
-
11
- def request(method, path, options = {})
12
- conn(url: host).send(method) do |request|
13
- request.url [version, path].join
14
- request.body = options.to_json if options
15
- end.body
16
- end
17
- end
18
- end
@@ -1,51 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Traitify::Client do
4
- before do
5
- Traitify.configure do |tom|
6
- tom.secret_key = "secret"
7
- tom.host = "https://example.com"
8
- tom.version = "v1"
9
- end
10
- end
11
-
12
- let(:tom) { Traitify.new }
13
-
14
- describe ".careers" do
15
- context "without params" do
16
- let(:careers) { tom.careers }
17
-
18
- before(:each) do
19
- stub_it(:get, "/careers", "careers")
20
- end
21
-
22
- it "returns careers" do
23
- expect(careers.first.title).to eq("Career Title")
24
- end
25
- end
26
-
27
- context "with params" do
28
- let(:careers) { tom.careers(page: 1, careers_per_page: 50) }
29
-
30
- before(:each) do
31
- stub_it(:get, "/careers?careers_per_page=50&page=1", "careers")
32
- end
33
-
34
- it "returns careers" do
35
- expect(careers.first.title).to eq("Career Title")
36
- end
37
- end
38
- end
39
-
40
- describe ".career" do
41
- let(:career) { tom.career("career-id") }
42
-
43
- before(:each) do
44
- stub_it(:get, "/careers/career-id", "career")
45
- end
46
-
47
- it "returns career" do
48
- expect(career.title).to eq("Career Title")
49
- end
50
- end
51
- end
@@ -1,51 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Traitify::Client do
4
- let(:tom) { Traitify.new }
5
-
6
- context "using old setters" do
7
- before do
8
- Traitify.configure do |tom|
9
- tom.secret = "secret"
10
- tom.api_host = "https://example.com"
11
- tom.api_version = "v1"
12
- tom.deck_id = "deck-uuid"
13
- end
14
- end
15
-
16
- it "assigns secret_key" do
17
- expect(tom.secret_key).to eq("secret")
18
- end
19
-
20
- it "assigns host" do
21
- expect(tom.host).to eq("https://example.com")
22
- end
23
-
24
- it "assigns version" do
25
- expect(tom.version).to eq("v1")
26
- end
27
- end
28
-
29
- context "using new setters" do
30
- before do
31
- Traitify.configure do |tom|
32
- tom.secret_key = "secret"
33
- tom.host = "https://example.com"
34
- tom.version = "v1"
35
- tom.deck_id = "deck-uuid"
36
- end
37
- end
38
-
39
- it "assigns secret" do
40
- expect(tom.secret).to eq("secret")
41
- end
42
-
43
- it "assigns api_host" do
44
- expect(tom.api_host).to eq("https://example.com")
45
- end
46
-
47
- it "assigns api_version" do
48
- expect(tom.api_version).to eq("v1")
49
- end
50
- end
51
- end
@@ -1,28 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Traitify::Client do
4
- before do
5
- Traitify.configure do |tom|
6
- tom.secret = "secret"
7
- tom.api_host = "https://example.com"
8
- tom.api_version = "v1"
9
- tom.deck_id = "deck-uuid"
10
- end
11
- end
12
-
13
- let(:tom) { Traitify.new }
14
-
15
- describe ".create_assessment" do
16
- context "without a user" do
17
- let(:decks) { tom.decks }
18
-
19
- before(:each) do
20
- stub_it(:get, "/decks", "decks")
21
- end
22
-
23
- it "returns an array of decks" do
24
- expect(decks.first.id).to eq("deck-uuid")
25
- end
26
- end
27
- end
28
- end
@@ -1,93 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Traitify::Client do
4
- before do
5
- Traitify.configure do |tom|
6
- tom.secret = "secret"
7
- tom.api_host = "https://example.com"
8
- tom.api_version = "v1"
9
- end
10
- end
11
-
12
- let(:tom) { Traitify.new }
13
-
14
- describe ".find_results" do
15
- context "without an image pack" do
16
- let(:result) { tom.find_results("assessment-uuid") }
17
-
18
- before(:each) do
19
- stub_it(:get, "/assessments/assessment-uuid/personality_types", "result")
20
- end
21
-
22
- it "returns a result" do
23
- expect(result.personality_types.first.personality_type.name).to eq("Analyzer")
24
- end
25
- end
26
-
27
- context "with an image pack" do
28
- context "set in the configurations" do
29
- let(:tom) { Traitify.new(image_pack: "full-color") }
30
- let(:result) { tom.find_results("assessment-uuid") }
31
-
32
- before(:each) do
33
- stub_it(:get, "/assessments/assessment-uuid/personality_types?image_pack=full-color", "result")
34
- end
35
-
36
- it "returns a result" do
37
- expect(result.personality_blend.personality_type_1.badge.image_large).to eq("https://traitify-api.s3.amazonaws.com/traitify-api/badges/analayzer/full-color/large")
38
- end
39
- end
40
-
41
- context "set in the call" do
42
- let(:result) { tom.find_results("assessment-uuid", "full-color") }
43
-
44
- before(:each) do
45
- stub_it(:get, "/assessments/assessment-uuid/personality_types?image_pack=full-color", "result")
46
- end
47
-
48
- it "returns a result" do
49
- expect(result.personality_blend.personality_type_1.badge.image_large).to eq("https://traitify-api.s3.amazonaws.com/traitify-api/badges/analayzer/full-color/large")
50
- end
51
- end
52
- end
53
- end
54
-
55
- describe ".assessment_personality_type" do
56
- context "with a personality type" do
57
- let(:personality_traits) { tom.assessment_personality_traits("assessment-uuid", "personality-type-uuid") }
58
-
59
- before(:each) do
60
- stub_it(:get, "/assessments/assessment-uuid/personality_types/personality-type-uuid/personality_traits", "personality_traits")
61
- end
62
-
63
- it "returns a result" do
64
- expect(personality_traits.first.personality_trait.name).to eq("Imaginative")
65
- end
66
- end
67
-
68
- context "without a personality type" do
69
- let(:personality_traits) { tom.assessment_personality_traits("assessment-uuid") }
70
-
71
- before(:each) do
72
- stub_it(:get, "/assessments/assessment-uuid/personality_traits", "personality_traits")
73
- end
74
-
75
- it "returns a result" do
76
- expect(personality_traits.first.personality_trait.name).to eq("Imaginative")
77
- end
78
- end
79
- end
80
-
81
- describe ".career_matches" do
82
- let(:careers) { tom.career_matches("assessment-uuid") }
83
-
84
- before(:each) do
85
- stub_it(:get, "/assessments/assessment-uuid/matches/careers?number_of_matches=10", "careers")
86
- end
87
-
88
- it "returns a result" do
89
- expect(careers.first.title).to eq("Career Title")
90
- expect(careers.first.majors.first.title).to eq("Major Title")
91
- end
92
- end
93
- end
@@ -1,82 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Traitify::Client do
4
- before do
5
- Traitify.configure do |tom|
6
- tom.secret = "secret"
7
- tom.api_host = "https://example.com"
8
- tom.api_version = "v1"
9
- tom.deck_id = "deck-uuid"
10
- end
11
- end
12
-
13
- let(:tom) { Traitify.new }
14
-
15
- describe ".find_slides" do
16
- let(:slides) { tom.find_slides("assessment-uuid") }
17
-
18
- before(:each) do
19
- stub_it(:get, "/assessments/assessment-uuid/slides", "slides")
20
- end
21
-
22
- it "returns each slide's uuid" do
23
- expect(slides.first.id).to eq("slide-uuid")
24
- end
25
- end
26
-
27
- describe ".update_slides" do
28
- let(:slides) { tom.find_slides("assessment-uuid") }
29
- let(:slides_complete) { tom.update_slides("assessment-uuid", slides) }
30
-
31
- before(:each) do
32
- stub_it(:get, "/assessments/assessment-uuid/slides", "slides")
33
- stub_it(:put, "/assessments/assessment-uuid/slides", "slides_complete")
34
- slides.each do |slide|
35
- slide.response = 0
36
- slide.time_taken = 1000
37
- end
38
- end
39
-
40
- it "returns an assessment" do
41
- expect(slides_complete.first.response).to eq(true)
42
- end
43
- end
44
-
45
- describe ".update_slide" do
46
- context "with hash" do
47
- let(:slides) { tom.find_slides("assessment-uuid") }
48
- let(:slide) { tom.update_slide("assessment-uuid", {
49
- id: slides.first.id,
50
- response: true,
51
- time_taken: 1000
52
- })}
53
-
54
- before(:each) do
55
- stub_it(:get, "/assessments/assessment-uuid/slides", "slides")
56
- stub_it(:put, "/assessments/assessment-uuid/slides/slide-uuid", "slide")
57
- end
58
-
59
- it "returns a slide" do
60
- expect(slide.response).to eq(true)
61
- end
62
- end
63
-
64
- context "with slide" do
65
- let(:slides) { tom.find_slides("assessment-uuid") }
66
- let(:slide) { slides.first }
67
-
68
- before(:each) do
69
- stub_it(:get, "/assessments/assessment-uuid/slides", "slides")
70
- stub_it(:put, "/assessments/assessment-uuid/slides/slide-uuid", "slide")
71
-
72
- slide.response = true
73
- slide.time_taken = 1000
74
- tom.update_slide("assessment-uuid", slide)
75
- end
76
-
77
- it "returns a slide" do
78
- expect(slide.response).to eq(true)
79
- end
80
- end
81
- end
82
- end