web47core 0.0.8 → 0.0.9
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/Gemfile +0 -14
- data/Gemfile.lock +30 -9
- data/README.md +27 -4
- data/lib/app/models/concerns/app47_logger.rb +175 -0
- data/lib/app/models/concerns/core_account.rb +51 -0
- data/lib/app/models/concerns/standard_model.rb +104 -6
- data/lib/app/models/email_notification.rb +253 -0
- data/lib/app/models/email_template.rb +6 -0
- data/lib/app/models/notification.rb +276 -0
- data/lib/app/models/notification_template.rb +20 -0
- data/lib/app/models/slack_notification.rb +89 -0
- data/lib/app/models/sms_notification.rb +56 -0
- data/lib/app/models/smtp_configuration.rb +148 -0
- data/lib/app/models/template.rb +21 -0
- data/lib/templates/email/notification_failure.liquid +10 -0
- data/lib/templates/email/notification_failure.subject.liquid +1 -0
- data/lib/templates/slack/error_message.liquid +1 -0
- data/lib/web47core.rb +10 -2
- data/test/factories/account_factories.rb +9 -0
- data/test/factories/notification_factories.rb +14 -0
- data/test/models/app47_logger_test.rb +88 -0
- data/test/models/concerns/{formable_test.rb → standard_model_test.rb} +24 -5
- data/test/models/email_notification_test.rb +297 -0
- data/test/models/notification_test.rb +127 -0
- data/test/models/slack_notification_test.rb +50 -0
- data/test/notification_test_helper.rb +146 -0
- data/test/rails_setup.rb +4 -0
- data/test/test_helper.rb +10 -4
- data/test/test_models_helper.rb +14 -0
- data/web47core.gemspec +5 -2
- metadata +87 -14
- data/lib/app/models/concerns/auto_clear_cache.rb +0 -34
- data/lib/app/models/concerns/formable.rb +0 -111
- data/test/models/concerns/auto_clear_cache_test.rb +0 -27
@@ -1,111 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
#
|
4
|
-
# For models that are updated via forms, we need an easy and consistent way to
|
5
|
-
# return a list of allowed parameters for a given model. While doing Model.attribute_names
|
6
|
-
# is working for most forms, it DOES NOT deal with relationships at all.
|
7
|
-
#
|
8
|
-
# This mix is should be included in those models, and the model then calls
|
9
|
-
# Model.allowed_param_names to retrieve a complete (dynamic) list of
|
10
|
-
# * Attribute names
|
11
|
-
# * Many to many relationships (has_many_and_belongs_to)
|
12
|
-
# * One to many relationships (belongs to)
|
13
|
-
#
|
14
|
-
module Formable
|
15
|
-
extend ActiveSupport::Concern
|
16
|
-
#
|
17
|
-
# Include the class methods into the model
|
18
|
-
#
|
19
|
-
def self.included(base)
|
20
|
-
base.class_eval do
|
21
|
-
base.extend ClassMethods
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
#
|
26
|
-
# Public: Add to class methods
|
27
|
-
#
|
28
|
-
module ClassMethods
|
29
|
-
#
|
30
|
-
# Return the complete list of key names that would appear in the form.
|
31
|
-
#
|
32
|
-
def allowed_param_names(filter_names = [])
|
33
|
-
# Always filter out the mongoid reserved items
|
34
|
-
filter_names += %w[created_at updated_at _type _id]
|
35
|
-
associations = all_associations
|
36
|
-
# filter out the relationship names so we don't have dups
|
37
|
-
associations.each { |association| filter_names << association.keys.first }
|
38
|
-
(field_names + associations).delete_if { |name| filter_names.include?(name) }
|
39
|
-
rescue StandardError
|
40
|
-
attribute_names.delete_if { |name| filter_names.include?(name) }
|
41
|
-
end
|
42
|
-
|
43
|
-
#
|
44
|
-
# allow the model to filter out a name if they want to, meaning the model
|
45
|
-
# can return a subset of attribute names
|
46
|
-
#
|
47
|
-
def field_names
|
48
|
-
attribute_names
|
49
|
-
end
|
50
|
-
|
51
|
-
#
|
52
|
-
# gather up the collections we care about and return them. For now, the
|
53
|
-
# many to many associations are the ones that need some extra help.
|
54
|
-
#
|
55
|
-
def all_associations
|
56
|
-
many_to_many_associations
|
57
|
-
end
|
58
|
-
|
59
|
-
#
|
60
|
-
# Return a collection of many to many assocations. We basically
|
61
|
-
# need to turn the current value returned by attribute names
|
62
|
-
#
|
63
|
-
# relationship_ids
|
64
|
-
#
|
65
|
-
# to
|
66
|
-
#
|
67
|
-
# { relationship_ids => [] }
|
68
|
-
#
|
69
|
-
# Telling the permit command to accept the value as an array of items.
|
70
|
-
#
|
71
|
-
def many_to_many_associations
|
72
|
-
associations = []
|
73
|
-
reflect_on_all_associations.each do |association|
|
74
|
-
next unless association.macro == :has_and_belongs_to_many
|
75
|
-
|
76
|
-
associations << { association.key => [] }
|
77
|
-
end
|
78
|
-
associations
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
#
|
83
|
-
# Remove updates for secure fields that come across as blank to start with and get removed on update
|
84
|
-
#
|
85
|
-
def update(params)
|
86
|
-
super(remove_blank_secure_fields(params))
|
87
|
-
end
|
88
|
-
|
89
|
-
alias :update_attributes :update
|
90
|
-
|
91
|
-
#
|
92
|
-
# Remove updates for secure fields that come across as blank to start with and get removed on update
|
93
|
-
#
|
94
|
-
def update!(params)
|
95
|
-
super(remove_blank_secure_fields(params))
|
96
|
-
end
|
97
|
-
|
98
|
-
alias :update_attributes! :update!
|
99
|
-
|
100
|
-
#
|
101
|
-
# List of secure fields, to add fields in concrete class, simply override this method
|
102
|
-
#
|
103
|
-
def secure_fields
|
104
|
-
[]
|
105
|
-
end
|
106
|
-
|
107
|
-
def remove_blank_secure_fields(params)
|
108
|
-
secure_fields.each { |field| params.delete(field) if params[field].blank? }
|
109
|
-
params
|
110
|
-
end
|
111
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
# TODO: CMS add tests for clearing by account id as well as id
|
4
|
-
class AutoClearCacheTest < ActiveSupport::TestCase
|
5
|
-
setup do
|
6
|
-
@model = TestAutoClearCache.new
|
7
|
-
assert @model.save
|
8
|
-
@model.update_cache
|
9
|
-
end
|
10
|
-
|
11
|
-
context 'Remove cache on save' do
|
12
|
-
should 'return the original url' do
|
13
|
-
assert Rails.cache.exist? @model.id.to_s
|
14
|
-
assert @model.save
|
15
|
-
refute Rails.cache.exist? @model.id.to_s
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
class TestAutoClearCache
|
21
|
-
include Mongoid::Document
|
22
|
-
include AutoClearCache
|
23
|
-
|
24
|
-
def update_cache(value = 'abc123')
|
25
|
-
Rails.cache.write id.to_s, value, expires_in: 60
|
26
|
-
end
|
27
|
-
end
|