clark_kent 0.1.7 → 0.2.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/app/models/clark_kent/reportable.rb +3 -0
- data/lib/clark_kent/version.rb +1 -1
- data/test/dummy/app/models/reporting/order.rb +4 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/test.log +4226 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/0ec37c0a58c1be93659732a3efc73581 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/0fd54fd98cd2fa0085b77e6743046927 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/8aa37926d964a9eb59cf9b940e4fe2f4 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/models/clark_kent/reportable_test.rb +65 -0
- metadata +4 -2
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class ClarkKent::ReportableTest < ActiveSupport::TestCase
|
4
|
+
test "it adds required filters if present" do
|
5
|
+
report = ClarkKent::Report.create(name: 'test one', resource_type: 'Order')
|
6
|
+
query = Order.report({created_at_until: Date.today, created_at_from: Date.yesterday},report)
|
7
|
+
assert_match('orders.user_id > 0', query.to_sql)
|
8
|
+
end
|
9
|
+
|
10
|
+
test "it works without any required filters" do
|
11
|
+
report = ClarkKent::Report.create(name: 'test one', resource_type: 'TestReportable')
|
12
|
+
query = TestReportable.report({created_at_until: Date.today, created_at_from: Date.yesterday},report)
|
13
|
+
refute_match('orders.user_id > 0', query.to_sql)
|
14
|
+
assert_match('SELECT "orders".*', query.to_sql)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
class TestReportable < ActiveRecord::Base
|
19
|
+
|
20
|
+
self.table_name = 'orders'
|
21
|
+
|
22
|
+
include ClarkKent::ReportConfig
|
23
|
+
include ClarkKent::Reportable
|
24
|
+
|
25
|
+
# This mapping tells ClarkKent how to use params for filtering a report. It is only used for pre-defined,
|
26
|
+
# standard filtering methods provided by ClarkKent: simple_equality_arel, order_arel, before_date_arel, and after_date_arel. Params that need custom filtering should define their own arel methods that follow
|
27
|
+
# the convention <param name>_arel(query, field_name, match_value). nb. ranges can be handled with dual params like date_before/date_after
|
28
|
+
# or amount_below/amount_above etc.
|
29
|
+
AREL_METHODS ||= {
|
30
|
+
'user_id' => 'simple_equality_arel',
|
31
|
+
'amount_above' => 'above_number_arel',
|
32
|
+
'amount_below' => 'below_number_arel'
|
33
|
+
}
|
34
|
+
|
35
|
+
# These are the options for permanent filters built into a report. nb dates don't make sense as permanent report filters
|
36
|
+
# except in the case of ClarkKent::ReportEmails.
|
37
|
+
REPORT_DEFINITION_OPTIONS ||= ['user_id', 'created_at']
|
38
|
+
|
39
|
+
# This is the full set of report filter options for use at report runtime. REPORT_DEFINITION_OPTIONS must refer to some subset of these
|
40
|
+
REPORT_FILTER_OPTIONS ||= [
|
41
|
+
filter_config(kind: 'date_filter', param: 'created_at', in_required_date_group: true),
|
42
|
+
filter_config(kind: 'object_filter', param: 'user_id', collection: :users, label: 'user'),
|
43
|
+
filter_config(kind: 'string_filter', param: 'user_email')
|
44
|
+
]
|
45
|
+
|
46
|
+
# These are the available column options for building reports from this resource
|
47
|
+
REPORT_COLUMN_OPTIONS ||= [
|
48
|
+
column_config(name: :user_name,
|
49
|
+
custom_select: "
|
50
|
+
(SELECT u.name
|
51
|
+
FROM users u
|
52
|
+
WHERE u.id = orders.user_id)
|
53
|
+
as user_name"),
|
54
|
+
column_config(name: :id, order_sql: 'orders.id', link: :order_path),
|
55
|
+
column_config(name: :amount, order_sql: 'orders.amount', summarizable: true),
|
56
|
+
column_config(name: :description, order_sql: 'orders.description')
|
57
|
+
]
|
58
|
+
|
59
|
+
def self.user_email_arel(query, field_name, match_value)
|
60
|
+
query = query.
|
61
|
+
joins(:user).
|
62
|
+
where(users: {email: match_value})
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clark_kent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Draut
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -310,6 +310,7 @@ files:
|
|
310
310
|
- test/integration/navigation_test.rb
|
311
311
|
- test/models/clark_kent/report_email_test.rb
|
312
312
|
- test/models/clark_kent/report_test.rb
|
313
|
+
- test/models/clark_kent/reportable_test.rb
|
313
314
|
- test/support/db_utils.rb
|
314
315
|
- test/test_helper.rb
|
315
316
|
homepage: https://github.com/edraut/clark-kent
|
@@ -431,5 +432,6 @@ test_files:
|
|
431
432
|
- test/integration/navigation_test.rb
|
432
433
|
- test/models/clark_kent/report_email_test.rb
|
433
434
|
- test/models/clark_kent/report_test.rb
|
435
|
+
- test/models/clark_kent/reportable_test.rb
|
434
436
|
- test/support/db_utils.rb
|
435
437
|
- test/test_helper.rb
|