egov_utils 0.4.15 → 0.4.18

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7113a82c08ac9b1557d68155cfbfc8e7e330d389c573c26929cf017e50a77e8c
4
- data.tar.gz: 0171105c96722ee7f05e88572a5129811ffc8c9a817a8f8fe804e764b9a047fd
3
+ metadata.gz: 4d05b59d1557eeeba773ca94b798335640a14fd913677bd1faf8675067b5f5ae
4
+ data.tar.gz: 9a6b4617ee0b416cb74dde62adf398962268a5674e95222176e47cfe9f9029ce
5
5
  SHA512:
6
- metadata.gz: 51255a8ae5635e28cb07e3b7a469daf88dcfd04eb05bf0b7f4bab2f7171aaf6d02641e9a411d522239dcad233295634daeb3fbb035ec8f6d0f6d84f56e0190b9
7
- data.tar.gz: 763bceddd07de03e6fa19117d341cf8f9d14d2df48a661b6f1d709438682c33656509a7da775d5dbe114a19bf9284b441183bcf93511533cd4adb6ab554e12b9
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
- 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
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)
@@ -25,7 +25,7 @@ module EgovUtils
25
25
 
26
26
  config.generators do |g|
27
27
  g.test_framework :rspec
28
- g.fixture_replacement :factory_girl, :dir => 'spec/factories'
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
@@ -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
@@ -1,3 +1,3 @@
1
1
  module EgovUtils
2
- VERSION = '0.4.15'
2
+ VERSION = '0.4.18'
3
3
  end
@@ -1,4 +1,42 @@
1
1
  # desc "Explaining what the task does"
2
- # task :egov_utils do
3
- # # Task goes here
4
- # end
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,11 @@
1
+ FactoryBot.define do
2
+ factory :egov_utils_address, class: 'EgovUtils::Address' do
3
+ street { 'Vysoka' }
4
+ house_number { '156' }
5
+ orientation_number { '6a' }
6
+ city { 'Palermo' }
7
+ postcode { 42000 }
8
+ district { 'Hlavní město Praha' }
9
+ end
10
+
11
+ end
@@ -0,0 +1,8 @@
1
+ FactoryBot.define do
2
+ factory :egov_utils_group, class: 'EgovUtils::Group' do
3
+ name { 'EgovUsers' }
4
+ provider { 'main' }
5
+ ldap_uid { 'S-1-5-21-1698188384-1693678267-1543859470-6637' }
6
+ external_uid { 'DN=Linux,OU=Users,DC=test,DC=justice,DC=cz' }
7
+ end
8
+ 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.15
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: 2018-09-19 00:00:00.000000000 Z
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.1'
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.1'
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.0'
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.0'
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
- rubyforge_project:
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