bearcat 1.5.35 → 1.5.37

Sign up to get free protection for your applications and to get access to all the features.
Files changed (262) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +0 -0
  3. data/lib/badgrcat/api_array.rb +0 -0
  4. data/lib/badgrcat/client/methods.rb +12 -0
  5. data/lib/badgrcat/version.rb +0 -0
  6. data/lib/bearcat/client/account_reports.rb +0 -0
  7. data/lib/bearcat/client/accounts.rb +0 -0
  8. data/lib/bearcat/client/analytics.rb +0 -0
  9. data/lib/bearcat/client/assignment_groups.rb +0 -0
  10. data/lib/bearcat/client/assignments.rb +0 -0
  11. data/lib/bearcat/client/blueprint_courses.rb +0 -0
  12. data/lib/bearcat/client/calendar_events.rb +0 -0
  13. data/lib/bearcat/client/canvas_files.rb +0 -0
  14. data/lib/bearcat/client/conferences.rb +0 -0
  15. data/lib/bearcat/client/content_exports.rb +0 -0
  16. data/lib/bearcat/client/content_migrations.rb +0 -0
  17. data/lib/bearcat/client/conversations.rb +0 -0
  18. data/lib/bearcat/client/custom_gradebook_columns.rb +0 -0
  19. data/lib/bearcat/client/discussions.rb +0 -0
  20. data/lib/bearcat/client/enrollments.rb +0 -0
  21. data/lib/bearcat/client/external_tools.rb +0 -0
  22. data/lib/bearcat/client/file_helper.rb +0 -0
  23. data/lib/bearcat/client/files.rb +0 -0
  24. data/lib/bearcat/client/folders.rb +0 -0
  25. data/lib/bearcat/client/graph_ql.rb +55 -5
  26. data/lib/bearcat/client/group_categories.rb +0 -0
  27. data/lib/bearcat/client/group_memberships.rb +0 -0
  28. data/lib/bearcat/client/groups.rb +0 -0
  29. data/lib/bearcat/client/learning_outcomes.rb +0 -0
  30. data/lib/bearcat/client/logins.rb +0 -0
  31. data/lib/bearcat/client/module_items.rb +0 -0
  32. data/lib/bearcat/client/modules.rb +0 -0
  33. data/lib/bearcat/client/o_auth2.rb +0 -0
  34. data/lib/bearcat/client/outcome_groups.rb +0 -0
  35. data/lib/bearcat/client/outcome_imports.rb +0 -0
  36. data/lib/bearcat/client/outcomes.rb +0 -0
  37. data/lib/bearcat/client/pages.rb +0 -0
  38. data/lib/bearcat/client/progresses.rb +0 -0
  39. data/lib/bearcat/client/quizzes.rb +0 -0
  40. data/lib/bearcat/client/reports.rb +0 -0
  41. data/lib/bearcat/client/roles.rb +0 -0
  42. data/lib/bearcat/client/rubric.rb +0 -0
  43. data/lib/bearcat/client/rubric_assessment.rb +0 -0
  44. data/lib/bearcat/client/rubric_association.rb +0 -0
  45. data/lib/bearcat/client/search.rb +0 -0
  46. data/lib/bearcat/client/sections.rb +0 -0
  47. data/lib/bearcat/client/sis_imports.rb +0 -0
  48. data/lib/bearcat/client/submissions.rb +0 -0
  49. data/lib/bearcat/client/tabs.rb +0 -0
  50. data/lib/bearcat/client.rb +13 -0
  51. data/lib/bearcat/client_module.rb +0 -0
  52. data/lib/bearcat/rate_limiting/functions.lua +11 -0
  53. data/lib/bearcat/rate_limiting/increment_bucket.lua +0 -0
  54. data/lib/bearcat/rate_limiting/redis_script.rb +0 -0
  55. data/lib/bearcat/rate_limiting.rb +0 -0
  56. data/lib/bearcat/redis_connection.rb +2 -2
  57. data/lib/bearcat/spec_helpers.rb +0 -0
  58. data/lib/bearcat/version.rb +1 -1
  59. data/lib/bearcat.rb +0 -0
  60. data/lib/catalogcat/api_array.rb +0 -0
  61. data/lib/catalogcat/client/catalogs.rb +0 -0
  62. data/lib/catalogcat/client/certificates.rb +0 -0
  63. data/lib/catalogcat/client/courses.rb +0 -0
  64. data/lib/catalogcat/client/email_domain_sets.rb +0 -0
  65. data/lib/catalogcat/client/enrollments.rb +0 -0
  66. data/lib/catalogcat/client/orders.rb +0 -0
  67. data/lib/catalogcat/client/user_registrations.rb +0 -0
  68. data/lib/catalogcat/client.rb +0 -0
  69. data/lib/catalogcat/version.rb +0 -0
  70. data/lib/catalogcat.rb +0 -0
  71. data/spec/bearcat/api_array_spec.rb +0 -0
  72. data/spec/bearcat/client/accounts_spec.rb +0 -0
  73. data/spec/bearcat/client/analytics_spec.rb +0 -0
  74. data/spec/bearcat/client/assignment_groups_spec.rb +0 -0
  75. data/spec/bearcat/client/assignments_spec.rb +0 -0
  76. data/spec/bearcat/client/blueprint_courses_spec.rb +0 -0
  77. data/spec/bearcat/client/calendar_events_spec.rb +0 -0
  78. data/spec/bearcat/client/canvas_files_spec.rb +0 -0
  79. data/spec/bearcat/client/conferences_spec.rb +0 -0
  80. data/spec/bearcat/client/content_exports_spec.rb +0 -0
  81. data/spec/bearcat/client/content_migrations_spec.rb +0 -0
  82. data/spec/bearcat/client/conversations_spec.rb +0 -0
  83. data/spec/bearcat/client/courses_spec.rb +0 -0
  84. data/spec/bearcat/client/custom_gradebook_columns_spec.rb +0 -0
  85. data/spec/bearcat/client/discussions_spec.rb +0 -0
  86. data/spec/bearcat/client/enrollments_spec.rb +0 -0
  87. data/spec/bearcat/client/external_tools_spec.rb +0 -0
  88. data/spec/bearcat/client/files_spec.rb +0 -0
  89. data/spec/bearcat/client/folders_spec.rb +0 -0
  90. data/spec/bearcat/client/graph_ql_spec.rb +0 -0
  91. data/spec/bearcat/client/group_categories_spec.rb +0 -0
  92. data/spec/bearcat/client/group_membership_spec.rb +0 -0
  93. data/spec/bearcat/client/group_memberships_spec.rb +0 -0
  94. data/spec/bearcat/client/groups_spec.rb +0 -0
  95. data/spec/bearcat/client/learning_outcomes_spec.rb +0 -0
  96. data/spec/bearcat/client/module_items_spec.rb +0 -0
  97. data/spec/bearcat/client/modules_spec.rb +0 -0
  98. data/spec/bearcat/client/o_auth2_spec.rb +0 -0
  99. data/spec/bearcat/client/outcome_groups_spec.rb +0 -0
  100. data/spec/bearcat/client/outcomes_spec.rb +0 -0
  101. data/spec/bearcat/client/pages_spec.rb +0 -0
  102. data/spec/bearcat/client/quizzes_spec.rb +0 -0
  103. data/spec/bearcat/client/reports_spec.rb +0 -0
  104. data/spec/bearcat/client/roles_spec.rb +0 -0
  105. data/spec/bearcat/client/rubric_assessment_spec.rb +0 -0
  106. data/spec/bearcat/client/rubric_association_spec.rb +0 -0
  107. data/spec/bearcat/client/rubric_spec.rb +0 -0
  108. data/spec/bearcat/client/search_spec.rb +0 -0
  109. data/spec/bearcat/client/sections_spec.rb +0 -0
  110. data/spec/bearcat/client/submissions_spec.rb +0 -0
  111. data/spec/bearcat/client/users_spec.rb +0 -0
  112. data/spec/bearcat/client_spec.rb +0 -0
  113. data/spec/bearcat/rate_limiting_spec.rb +0 -0
  114. data/spec/bearcat/stub_bearcat_spec.rb +0 -0
  115. data/spec/bearcat_spec.rb +0 -0
  116. data/spec/fixtures/access_token.json +0 -0
  117. data/spec/fixtures/account_admin_create.json +0 -0
  118. data/spec/fixtures/account_admin_delete.json +0 -0
  119. data/spec/fixtures/account_admins.json +0 -0
  120. data/spec/fixtures/account_courses.json +0 -0
  121. data/spec/fixtures/account_grading_standards.json +0 -0
  122. data/spec/fixtures/account_groups.json +0 -0
  123. data/spec/fixtures/account_reports.json +0 -0
  124. data/spec/fixtures/account_reports_index.json +0 -0
  125. data/spec/fixtures/account_reports_result_success.json +0 -0
  126. data/spec/fixtures/account_reports_start_result.json +0 -0
  127. data/spec/fixtures/account_role.json +0 -0
  128. data/spec/fixtures/account_roles.json +0 -0
  129. data/spec/fixtures/account_sis_imports.json +0 -0
  130. data/spec/fixtures/account_sub_accounts.json +0 -0
  131. data/spec/fixtures/account_user.json +0 -0
  132. data/spec/fixtures/account_users.json +0 -0
  133. data/spec/fixtures/accounts.json +0 -0
  134. data/spec/fixtures/add_custom_user_data.json +0 -0
  135. data/spec/fixtures/add_user.json +0 -0
  136. data/spec/fixtures/assignment.json +0 -0
  137. data/spec/fixtures/assignment_group.json +0 -0
  138. data/spec/fixtures/assignment_groups.json +0 -0
  139. data/spec/fixtures/assignment_section_override.json +0 -0
  140. data/spec/fixtures/assignments.json +0 -0
  141. data/spec/fixtures/bearcat.jpg +0 -0
  142. data/spec/fixtures/blueprint_migration.json +0 -0
  143. data/spec/fixtures/blueprint_subscriptions.json +0 -0
  144. data/spec/fixtures/blueprint_template.json +0 -0
  145. data/spec/fixtures/blueprint_update_assocations_success.json +0 -0
  146. data/spec/fixtures/calendar_event.json +0 -0
  147. data/spec/fixtures/calendar_events.json +0 -0
  148. data/spec/fixtures/canvas_files/declare_file.json +0 -0
  149. data/spec/fixtures/canvas_files/upload_success.json +0 -0
  150. data/spec/fixtures/cc.imscc +0 -0
  151. data/spec/fixtures/communication_channels.json +0 -0
  152. data/spec/fixtures/conclude_enrollment.json +0 -0
  153. data/spec/fixtures/content_export.json +0 -0
  154. data/spec/fixtures/content_migration_files/content_migration.json +0 -0
  155. data/spec/fixtures/content_migration_files/response.json +0 -0
  156. data/spec/fixtures/content_migration_files/upload_success.json +0 -0
  157. data/spec/fixtures/conversation.json +0 -0
  158. data/spec/fixtures/course.json +0 -0
  159. data/spec/fixtures/course_conferences.json +0 -0
  160. data/spec/fixtures/course_copy.json +0 -0
  161. data/spec/fixtures/course_enrollments.json +0 -0
  162. data/spec/fixtures/course_files.json +0 -0
  163. data/spec/fixtures/course_folder.json +0 -0
  164. data/spec/fixtures/course_folders.json +0 -0
  165. data/spec/fixtures/course_grading_standards.json +0 -0
  166. data/spec/fixtures/course_groups.json +0 -0
  167. data/spec/fixtures/course_sections.json +0 -0
  168. data/spec/fixtures/course_settings.json +0 -0
  169. data/spec/fixtures/course_students.json +0 -0
  170. data/spec/fixtures/create_course_discussion.json +0 -0
  171. data/spec/fixtures/create_group_discussion.json +0 -0
  172. data/spec/fixtures/create_outcome_in_group.json +0 -0
  173. data/spec/fixtures/create_section.json +0 -0
  174. data/spec/fixtures/created_assignment.json +0 -0
  175. data/spec/fixtures/created_course.json +0 -0
  176. data/spec/fixtures/created_group.json +0 -0
  177. data/spec/fixtures/created_group_category.json +0 -0
  178. data/spec/fixtures/created_group_membership.json +0 -0
  179. data/spec/fixtures/created_module.json +0 -0
  180. data/spec/fixtures/custom_data.json +0 -0
  181. data/spec/fixtures/custom_food_data.json +0 -0
  182. data/spec/fixtures/custom_gradebook_columns/column_data.json +0 -0
  183. data/spec/fixtures/custom_gradebook_columns/custom_gradebook_column.json +0 -0
  184. data/spec/fixtures/custom_gradebook_columns/custom_gradebook_columns.json +0 -0
  185. data/spec/fixtures/custom_gradebook_columns/gradebook_column_progress.json +0 -0
  186. data/spec/fixtures/dashboard.json +0 -0
  187. data/spec/fixtures/delete_course.json +0 -0
  188. data/spec/fixtures/delete_custom_data_scope.json +0 -0
  189. data/spec/fixtures/delete_group_category.json +0 -0
  190. data/spec/fixtures/delete_section.json +0 -0
  191. data/spec/fixtures/deleted_conversation.json +0 -0
  192. data/spec/fixtures/deleted_group.json +0 -0
  193. data/spec/fixtures/department_level_participation.json +0 -0
  194. data/spec/fixtures/department_level_statistics.json +0 -0
  195. data/spec/fixtures/discussion_entries.json +0 -0
  196. data/spec/fixtures/discussion_entry_replies.json +0 -0
  197. data/spec/fixtures/discussion_topic.json +0 -0
  198. data/spec/fixtures/discussion_topics.json +0 -0
  199. data/spec/fixtures/edited_group.json +0 -0
  200. data/spec/fixtures/edited_group_category.json +0 -0
  201. data/spec/fixtures/enroll_student.json +0 -0
  202. data/spec/fixtures/enrollment_terms.json +0 -0
  203. data/spec/fixtures/external_tool.json +0 -0
  204. data/spec/fixtures/external_tools.json +0 -0
  205. data/spec/fixtures/file.csv +0 -0
  206. data/spec/fixtures/gradebook_history.json +0 -0
  207. data/spec/fixtures/graph_ql_scores.json +0 -0
  208. data/spec/fixtures/group.json +0 -0
  209. data/spec/fixtures/group_categories.json +0 -0
  210. data/spec/fixtures/group_category.json +0 -0
  211. data/spec/fixtures/group_category_groups.json +0 -0
  212. data/spec/fixtures/group_conferences.json +0 -0
  213. data/spec/fixtures/group_membership.json +0 -0
  214. data/spec/fixtures/learning_outcome.json +0 -0
  215. data/spec/fixtures/link_unlink_outcome.json +0 -0
  216. data/spec/fixtures/merge_user.json +0 -0
  217. data/spec/fixtures/module.json +0 -0
  218. data/spec/fixtures/module_item.json +0 -0
  219. data/spec/fixtures/module_item_sequence.json +0 -0
  220. data/spec/fixtures/module_items.json +0 -0
  221. data/spec/fixtures/modules.json +0 -0
  222. data/spec/fixtures/no_custom_data.json +0 -0
  223. data/spec/fixtures/ok.json +0 -0
  224. data/spec/fixtures/outcome_group_import.json +0 -0
  225. data/spec/fixtures/outcome_groups.json +0 -0
  226. data/spec/fixtures/outcome_result.json +0 -0
  227. data/spec/fixtures/outcome_subgroup.json +0 -0
  228. data/spec/fixtures/outcome_subgroups.json +0 -0
  229. data/spec/fixtures/outcomes.json +0 -0
  230. data/spec/fixtures/paged_body.json +0 -0
  231. data/spec/fixtures/pages.json +0 -0
  232. data/spec/fixtures/progress.json +0 -0
  233. data/spec/fixtures/quizzes/course_quiz.json +0 -0
  234. data/spec/fixtures/quizzes/course_quiz_questions.json +0 -0
  235. data/spec/fixtures/quizzes/course_quizzes.json +0 -0
  236. data/spec/fixtures/quizzes/quiz_assignment_override.json +0 -0
  237. data/spec/fixtures/quizzes/quiz_extension.json +0 -0
  238. data/spec/fixtures/reactivate_enrollment.json +0 -0
  239. data/spec/fixtures/report_history.json +0 -0
  240. data/spec/fixtures/report_list.json +0 -0
  241. data/spec/fixtures/report_status.json +0 -0
  242. data/spec/fixtures/rubric.json +0 -0
  243. data/spec/fixtures/rubric_assessment.json +0 -0
  244. data/spec/fixtures/rubric_association.json +0 -0
  245. data/spec/fixtures/search_find_recipients.json +0 -0
  246. data/spec/fixtures/section.json +0 -0
  247. data/spec/fixtures/section_enrollments.json +0 -0
  248. data/spec/fixtures/single_account.json +0 -0
  249. data/spec/fixtures/start_report.json +0 -0
  250. data/spec/fixtures/submissions/submission.json +0 -0
  251. data/spec/fixtures/update_outcome.json +0 -0
  252. data/spec/fixtures/update_outcome_group.json +0 -0
  253. data/spec/fixtures/update_section.json +0 -0
  254. data/spec/fixtures/updated_course.json +0 -0
  255. data/spec/fixtures/user_avatars.json +0 -0
  256. data/spec/fixtures/user_details.json +0 -0
  257. data/spec/fixtures/user_enrollments.json +0 -0
  258. data/spec/fixtures/user_logins.json +0 -0
  259. data/spec/fixtures/user_page_views.json +0 -0
  260. data/spec/fixtures/user_profile.json +0 -0
  261. data/spec/helper.rb +0 -0
  262. metadata +162 -161
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b8fcfccbc8eea1fcb41fb3ade8623d386056025521d254fa8ec717cf7b6f3f2d
4
- data.tar.gz: c85af5d2f4b9f8c5471d3d8f4d737b2ea02a8f3cb000ec4bb901b626e7860e88
3
+ metadata.gz: 7d158f0297de70f3ab0168d9eca3f0524ec3ab604ac8a4e756e0b07269a0e6e3
4
+ data.tar.gz: 07dd1d001f4bfc6248235be4f208782ad136a8af8223aed2e71ae60cc82fc9a3
5
5
  SHA512:
6
- metadata.gz: 07576ba51c616e275eb8c39cb619e8e517b2834ae02e1f3d2887fd0d3b7eb3705a534d01025d6c4be41a1d3e24d35793dcdb1e2581535288297bc502bf2a4f37
7
- data.tar.gz: 8fb0f20d56e83efa61a0f9e66ad6c1ad49a75c8560e305eac89d4cba23d4102fe6d6b13bdf097f4ad84b8be6aeeff0bc27e123c82a5500f0755980838ba2c6e4
6
+ metadata.gz: 050c5d4b285c4ec8a341b5bfdcc71d02837c8b7ffe5324ac77fef1bd17c77497273c7e366c608565a9dbe264e003b41c20c235d1fa328c774c4f831149e943c4
7
+ data.tar.gz: 3d9b79d660565eab8fe498d80d46d3ecd0553abd3d15b5d9be95038f7a781563fa44e2ab16f2505c267de725ed02473e739ec560d5de06ede75b1e2f05c20599
data/Rakefile CHANGED
File without changes
File without changes
@@ -71,6 +71,18 @@ module Badgrcat
71
71
  delete :delete_assertion
72
72
  end
73
73
  end
74
+
75
+ prefix "v2/backpack" do
76
+ prefix "/assertions" do
77
+ get :backpack_assertions
78
+ end
79
+ end
80
+
81
+ prefix "v2/users" do
82
+ prefix "/self" do
83
+ get :get_user_profile
84
+ end
85
+ end
74
86
  end
75
87
  end
76
88
  end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,17 +1,67 @@
1
1
  module Bearcat
2
+ class GraphqlError < StandardError
3
+ attr_reader :response
4
+
5
+ def initialize(message, response: nil)
6
+ super(message)
7
+ @response = response
8
+ end
9
+ end
10
+
2
11
  class Client < Footrest::Client
3
- # Request body format should be: { query: "query string" }. More info in README.md
12
+ # Request body format should be:
13
+ # - { query: "query string" }
14
+ # - "query string"
15
+ # - "path/to/gql/file", may be absolute, relative to application root, or relative to `app/graphql`. `.gql` extension is optional.
4
16
  module GraphQL
5
-
6
- def graphql_query(query)
17
+ def graphql_query(query, args = {})
7
18
  if query.is_a?(String)
19
+ if /\A\w+\Z/.match?(query) && !query.include?("{")
20
+ query = query.underscore
21
+ @@gql_cache ||= {}
22
+
23
+ query = cache_on_class("gql:#{query}") do
24
+ paths = []
25
+
26
+ pn = Pathname.new(query)
27
+ if pn.absolute?
28
+ paths << query
29
+ else
30
+ paths << Rails.root.join("app", "graphql", query)
31
+ paths << Rails.root.join(query)
32
+ end
33
+
34
+ paths = paths.flat_map do |path|
35
+ [path, "#{path}.gql"]
36
+ end
37
+
38
+ query = paths.find do |path|
39
+ File.exist?(path)
40
+ end
41
+
42
+ File.read(query)
43
+ end
44
+ end
45
+
46
+ args.symbolize_keys!
47
+
48
+ query = query.gsub(/\{\{(.*?)\}\}/) do |_m|
49
+ match = Regexp.last_match
50
+ key = match[1].strip.to_sym
51
+ args[key]
52
+ end
53
+
8
54
  query = {
9
55
  query: query
10
56
  }
11
57
  end
12
- post('/api/graphql', query)
13
- end
14
58
 
59
+ result = post('/api/graphql', query)
60
+ raise GraphqlError.new("Error running GraphQL query:\n#{result["errors"].to_json}", response: result) if result["errors"].present?
61
+
62
+ # TODO: It'd be nice to unwrap and return result["data"] directly, but we want to keep backwards compatibility
63
+ result
64
+ end
15
65
  end
16
66
  end
17
67
  end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -39,6 +39,19 @@ module Bearcat
39
39
  connection.builder.delete(Footrest::RaiseFootrestErrors)
40
40
  end
41
41
 
42
+ def self.cache_on_self(key, &block)
43
+ @cache ||= {}
44
+ if Rails.env.development? || Rails.env.test?
45
+ block.call
46
+ else
47
+ @cache[key] ||= block.call
48
+ end
49
+ end
50
+
51
+ def cache_on_class(key, &block)
52
+ self.class.cache_on_self(key, &block)
53
+ end
54
+
42
55
  protected
43
56
 
44
57
  def rate_limited_request
File without changes
@@ -0,0 +1,11 @@
1
+ #!lua name=bearcat_rate_limiting
2
+
3
+ local function checkin_time(keys, args)
4
+ local return_time = args[1]
5
+ local true_remaining = args[2]
6
+
7
+ local hash = keys[1]
8
+ return redis.call('HGET', hash, '_last_modified_')
9
+ end
10
+
11
+ redis.register_function('my_hset', my_hset)
File without changes
File without changes
File without changes
@@ -11,8 +11,8 @@ module Bearcat
11
11
  KNOWN_REDIS_URL_ENVS = %w[REDIS_URL REDISTOGO_URL REDISCLOUD_URL].freeze
12
12
 
13
13
  class << self
14
- def configured?(prefix, explicit: false)
15
- determine_redis_provider(prefix: prefix, explicit: true)
14
+ def configured?(prefix, explicit: true)
15
+ determine_redis_provider(prefix: prefix, explicit: explicit).present?
16
16
  end
17
17
 
18
18
  def create(options = {})
File without changes
@@ -1,3 +1,3 @@
1
1
  module Bearcat
2
- VERSION = '1.5.35' unless defined?(Bearcat::VERSION)
2
+ VERSION = '1.5.37' unless defined?(Bearcat::VERSION)
3
3
  end
data/lib/bearcat.rb CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
data/lib/catalogcat.rb CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
data/spec/bearcat_spec.rb CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes