egov_utils 0.4.15 → 0.4.18
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/Rakefile +9 -9
- data/app/resources/egov_utils/love.rb +54 -0
- data/app/resources/egov_utils/organization.rb +29 -0
- data/lib/egov_utils/engine.rb +7 -1
- data/lib/egov_utils/settings.rb +6 -0
- data/lib/egov_utils/version.rb +1 -1
- data/lib/tasks/egov_utils_tasks.rake +41 -3
- data/spec/factories/egov_utils_addresses.rb +11 -0
- data/spec/factories/egov_utils_groups.rb +8 -0
- data/spec/factories/egov_utils_people.rb +29 -0
- data/spec/factories/egov_utils_users.rb +12 -0
- metadata +11 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d05b59d1557eeeba773ca94b798335640a14fd913677bd1faf8675067b5f5ae
|
4
|
+
data.tar.gz: 9a6b4617ee0b416cb74dde62adf398962268a5674e95222176e47cfe9f9029ce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ceb82cc5e6c591af911c1b5792b6a35c44541ba4d1631f0e98331e9a5967e1df2dd6100f1bf964199b04bc833c6ed25766e59448a4dd9c4bd6d2281995f8e9b2
|
7
|
+
data.tar.gz: a06bb56fa7e3206977b0bed3075a2577a2d02cd51a064f8b9bed84444a5cc2c5530b7ac9b51599859771050814503722d75bec58d635564f59e880272fd6deae
|
data/Rakefile
CHANGED
@@ -4,15 +4,15 @@ rescue LoadError
|
|
4
4
|
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
5
|
end
|
6
6
|
|
7
|
-
require 'rdoc/task'
|
8
|
-
|
9
|
-
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
end
|
7
|
+
#require 'rdoc/task'
|
8
|
+
|
9
|
+
# RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
# rdoc.rdoc_dir = 'rdoc'
|
11
|
+
# rdoc.title = 'EgovUtils'
|
12
|
+
# rdoc.options << '--line-numbers'
|
13
|
+
# rdoc.rdoc_files.include('README.md')
|
14
|
+
# rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
# end
|
16
16
|
|
17
17
|
APP_RAKEFILE = File.expand_path("../spec/test_app/Rakefile", __FILE__)
|
18
18
|
load 'rails/tasks/engine.rake'
|
@@ -17,6 +17,32 @@ end
|
|
17
17
|
|
18
18
|
|
19
19
|
module EgovUtils
|
20
|
+
class LoveMock < OpenStruct
|
21
|
+
def self.all
|
22
|
+
raise NotImplemented # you need to provide .all for your mock class
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.where(clauses = {})
|
26
|
+
all.select do |l|
|
27
|
+
clauses.all? do |(k, filter)|
|
28
|
+
case filter
|
29
|
+
when Array
|
30
|
+
filter = filter.collect(&:to_s)
|
31
|
+
value = l.send(k)
|
32
|
+
pp k, filter, value
|
33
|
+
if value.is_a?(Array)
|
34
|
+
!(value.collect(&:to_s) & filter).empty?
|
35
|
+
else
|
36
|
+
filter.include?(value.to_s)
|
37
|
+
end
|
38
|
+
else
|
39
|
+
l.send(k) == filter
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
20
46
|
class Love < ::ActiveResource::Base
|
21
47
|
|
22
48
|
def self.config
|
@@ -32,5 +58,33 @@ module EgovUtils
|
|
32
58
|
raise ArgumentError, "expected a clauses Hash, got #{clauses.inspect}" unless clauses.is_a? Hash
|
33
59
|
find(:all, params: {f: clauses})
|
34
60
|
end
|
61
|
+
|
62
|
+
|
63
|
+
# mocking
|
64
|
+
|
65
|
+
def self.inherited(subclass)
|
66
|
+
mock_subclass(subclass) if @mocking
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.mocked_classes
|
70
|
+
@mocked_classes ||= {}
|
71
|
+
end
|
72
|
+
|
73
|
+
def self.mock!
|
74
|
+
@mocking = true
|
75
|
+
EgovUtils::Love.subclasses.each do |cls|
|
76
|
+
mock_subclass(cls)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def self.mock_subclass(subclass)
|
81
|
+
mock_cls = "#{subclass.name}Mock".safe_constantize
|
82
|
+
return unless mock_cls
|
83
|
+
mocked_classes[subclass.name] = subclass
|
84
|
+
namespaces = subclass.name.split('::')
|
85
|
+
namespace = (namespaces[0..-2].join('::').presence || 'Object').safe_constantize
|
86
|
+
namespace.send(:remove_const, namespaces[-1])
|
87
|
+
namespace.const_set(namespaces[-1], mock_cls)
|
88
|
+
end
|
35
89
|
end
|
36
90
|
end
|
@@ -1,4 +1,33 @@
|
|
1
1
|
module EgovUtils
|
2
|
+
class OrganizationMock < LoveMock
|
3
|
+
def self.all(*attrs)
|
4
|
+
[
|
5
|
+
new(id: 1, name: 'Městský soud 1', key: '104000', category_abbrev: 'MS' ),
|
6
|
+
new(id: 2, name: 'Krajský soud 1', key: '204000', category_abbrev: 'KS' ),
|
7
|
+
new(id: 3, name: 'Krajský soud 2', key: '205000', category_abbrev: 'KS' ),
|
8
|
+
new(id: 13, name: 'Okresní soud 1', key: '204001', category_abbrev: 'OS' ),
|
9
|
+
new(id: 14, name: 'Okresní soud v Chomutově', key: '205030', category_abbrev: 'OS' )
|
10
|
+
]
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.find_by_key(key)
|
14
|
+
all.detect{ |o| o.key == key }
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.courts(organization_keys=nil)
|
18
|
+
all.select do |o|
|
19
|
+
%w{OS KS MS}.include?(o.category_abbrev) &&
|
20
|
+
(organization_keys.nil? || organization_keys.include?(o.key))
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.region_courts(branches=false)
|
25
|
+
all.select{ |o| %w{KS MS}.include?(o.category_abbrev) }
|
26
|
+
end
|
27
|
+
|
28
|
+
def branch_of_id; end
|
29
|
+
end
|
30
|
+
|
2
31
|
class Organization < Love
|
3
32
|
|
4
33
|
def self.find_by_key(key)
|
data/lib/egov_utils/engine.rb
CHANGED
@@ -25,7 +25,7 @@ module EgovUtils
|
|
25
25
|
|
26
26
|
config.generators do |g|
|
27
27
|
g.test_framework :rspec
|
28
|
-
g.fixture_replacement :
|
28
|
+
g.fixture_replacement :factory_bot, :dir => 'spec/factories'
|
29
29
|
end
|
30
30
|
|
31
31
|
initializer :append_migrations do |app|
|
@@ -131,5 +131,11 @@ module EgovUtils
|
|
131
131
|
FactoryBot.definition_file_paths << EgovUtils::Engine.root.join('spec', 'factories')
|
132
132
|
end
|
133
133
|
end
|
134
|
+
|
135
|
+
initializer 'egov_utils.mock_resources' do
|
136
|
+
if EgovUtils::Settings.mock_resources?
|
137
|
+
EgovUtils::Love.mock!
|
138
|
+
end
|
139
|
+
end
|
134
140
|
end
|
135
141
|
end
|
data/lib/egov_utils/settings.rb
CHANGED
@@ -23,6 +23,10 @@ module EgovUtils
|
|
23
23
|
allow_internal_accounts? && allow_password_reset
|
24
24
|
end
|
25
25
|
|
26
|
+
def mock_resources?
|
27
|
+
mock_resources
|
28
|
+
end
|
29
|
+
|
26
30
|
end
|
27
31
|
|
28
32
|
Settings['allow_register'] ||= false
|
@@ -31,4 +35,6 @@ module EgovUtils
|
|
31
35
|
Settings['redmine'] ||= Settingslogic.new({})
|
32
36
|
Settings['redmine']['enabled'] ||= false
|
33
37
|
|
38
|
+
Settings['mock_resources'] ||= !Rails.env.production?
|
39
|
+
|
34
40
|
end
|
data/lib/egov_utils/version.rb
CHANGED
@@ -1,4 +1,42 @@
|
|
1
1
|
# desc "Explaining what the task does"
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
namespace :egov_utils do
|
3
|
+
|
4
|
+
task create_admin: :environment do
|
5
|
+
pwd = SecureRandom.hex(8)
|
6
|
+
u = EgovUtils::User.new(login: 'admin', mail: 'admin@admin.cz', password: pwd, password_confirmation: pwd, active: true, roles: ['admin'])
|
7
|
+
if u.save
|
8
|
+
puts "User 'admin' created with password '#{pwd}'"
|
9
|
+
else
|
10
|
+
u.errors.full_messages.each{ |m| puts m }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
task :require_factory_bot do
|
15
|
+
require 'factory_bot'
|
16
|
+
end
|
17
|
+
|
18
|
+
task cleanup_db: :environment do
|
19
|
+
require 'database_cleaner'
|
20
|
+
|
21
|
+
raise "This is very dangerous method and is not meant to be run in production" if Rails.env.production?
|
22
|
+
|
23
|
+
admins = EgovUtils::User.where(login: 'admin').collect do |u|
|
24
|
+
u.attributes.except('id', 'created_at', 'updated_at')
|
25
|
+
.merge('password' => 'abcdefgh', 'password_confirmation' => 'abcdefgh')
|
26
|
+
end
|
27
|
+
users = EgovUtils::User.where.not(provider: nil).collect{|u| u.attributes.except('id', 'created_at', 'updated_at') }
|
28
|
+
groups = EgovUtils::Group.where.not(provider: nil).collect{|u| u.attributes.except('id', 'created_at', 'updated_at') }
|
29
|
+
DatabaseCleaner.clean_with :truncation
|
30
|
+
EgovUtils::User.create(users)
|
31
|
+
EgovUtils::Group.create(groups)
|
32
|
+
EgovUtils::User.create(admins).each do |admin|
|
33
|
+
attrs = admins.detect{ |a| a['login'] == admin.login }
|
34
|
+
admin.update_columns(password_digest: attrs['password_digest'])
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
task load_staging_data: [:require_factory_bot, :cleanup_db] do
|
39
|
+
FactoryBot.find_definitions if Rails.env.staging?
|
40
|
+
require Rails.root.join('db', 'staging.rb')
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
FactoryBot.define do
|
2
|
+
factory :egov_utils_person, class: 'EgovUtils::Person' do
|
3
|
+
transient do
|
4
|
+
natural_attributes { Hash.new }
|
5
|
+
end
|
6
|
+
association :residence, factory: :egov_utils_address
|
7
|
+
joid { SecureRandom.uuid }
|
8
|
+
person_type { nil }
|
9
|
+
natural_person { nil }
|
10
|
+
legal_person { nil }
|
11
|
+
|
12
|
+
trait :natural do
|
13
|
+
person_type { 'natural' }
|
14
|
+
after(:build) do |person, evaluator|
|
15
|
+
evaluator.natural_person = FactoryBot.build(:egov_utils_natural_person, evaluator.natural_attributes.merge(person: person))
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
factory :natural_person, traits: [:natural]
|
20
|
+
end
|
21
|
+
|
22
|
+
factory :egov_utils_natural_person, class: 'EgovUtils::NaturalPerson' do
|
23
|
+
firstname { 'John' }
|
24
|
+
sequence(:lastname){|n| "Doe-#{n}"}
|
25
|
+
birth_date { Date.today - (Random.new.rand(50)+18).years }
|
26
|
+
association :person, factory: :egov_utils_person
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
FactoryBot.define do
|
2
|
+
factory :egov_utils_user, class: 'EgovUtils::User' do
|
3
|
+
firstname { 'John' }
|
4
|
+
lastname { 'Doe' }
|
5
|
+
login { mail }
|
6
|
+
sequence(:mail) {|n| "user#{n}@example.com"}
|
7
|
+
password { 'abcdef123456' }
|
8
|
+
password_confirmation { 'abcdef123456' }
|
9
|
+
active { true }
|
10
|
+
roles { [] }
|
11
|
+
end
|
12
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: egov_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ondřej Ezr
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '5.
|
19
|
+
version: '5.2'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '5.
|
26
|
+
version: '5.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bcrypt
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '5.
|
47
|
+
version: '5.1'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '5.
|
54
|
+
version: '5.1'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: haml
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -567,6 +567,10 @@ files:
|
|
567
567
|
- lib/egov_utils/version.rb
|
568
568
|
- lib/grid/shield_grid.rb
|
569
569
|
- lib/tasks/egov_utils_tasks.rake
|
570
|
+
- spec/factories/egov_utils_addresses.rb
|
571
|
+
- spec/factories/egov_utils_groups.rb
|
572
|
+
- spec/factories/egov_utils_people.rb
|
573
|
+
- spec/factories/egov_utils_users.rb
|
570
574
|
- vendor/assets/fonts/Linotype.eot
|
571
575
|
- vendor/assets/fonts/Linotype.ttf
|
572
576
|
- vendor/assets/images/shieldui/editor.png
|
@@ -689,8 +693,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
689
693
|
- !ruby/object:Gem::Version
|
690
694
|
version: '0'
|
691
695
|
requirements: []
|
692
|
-
|
693
|
-
rubygems_version: 2.7.7
|
696
|
+
rubygems_version: 3.0.3
|
694
697
|
signing_key:
|
695
698
|
specification_version: 4
|
696
699
|
summary: The eGoverment utilities is set of functionalities to support basic eGoverment
|