generalis 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/main.yml +68 -0
  3. data/.gitignore +11 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +46 -0
  6. data/.ruby-version +1 -0
  7. data/.vscode/settings.json +5 -0
  8. data/Gemfile +13 -0
  9. data/Gemfile.lock +134 -0
  10. data/README.md +622 -0
  11. data/Rakefile +12 -0
  12. data/bin/console +15 -0
  13. data/bin/rspec +29 -0
  14. data/bin/rubocop +29 -0
  15. data/bin/setup +8 -0
  16. data/generalis.gemspec +34 -0
  17. data/lib/generalis/account.rb +98 -0
  18. data/lib/generalis/accountable.rb +43 -0
  19. data/lib/generalis/asset.rb +7 -0
  20. data/lib/generalis/config.rb +15 -0
  21. data/lib/generalis/credit.rb +7 -0
  22. data/lib/generalis/debit.rb +7 -0
  23. data/lib/generalis/entry.rb +66 -0
  24. data/lib/generalis/expense.rb +7 -0
  25. data/lib/generalis/liability.rb +7 -0
  26. data/lib/generalis/link.rb +10 -0
  27. data/lib/generalis/linkable.rb +15 -0
  28. data/lib/generalis/revenue.rb +7 -0
  29. data/lib/generalis/rspec.rb +6 -0
  30. data/lib/generalis/transaction/double_entry.rb +37 -0
  31. data/lib/generalis/transaction/dsl.rb +70 -0
  32. data/lib/generalis/transaction/links.rb +29 -0
  33. data/lib/generalis/transaction/preparation.rb +45 -0
  34. data/lib/generalis/transaction.rb +109 -0
  35. data/lib/generalis/version.rb +5 -0
  36. data/lib/generalis.rb +55 -0
  37. data/lib/generators/factory_bot/templates/transactions.rb.erb +7 -0
  38. data/lib/generators/factory_bot/transaction_generator.rb +39 -0
  39. data/lib/generators/generalis/install_generator.rb +19 -0
  40. data/lib/generators/generalis/migrations_generator.rb +45 -0
  41. data/lib/generators/generalis/templates/base_transaction.rb +12 -0
  42. data/lib/generators/generalis/templates/create_ledger_accounts.rb.erb +18 -0
  43. data/lib/generators/generalis/templates/create_ledger_entries.rb.erb +25 -0
  44. data/lib/generators/generalis/templates/create_ledger_links.rb.erb +14 -0
  45. data/lib/generators/generalis/templates/create_ledger_transactions.rb.erb +14 -0
  46. data/lib/generators/generalis/templates/generalis.rb +6 -0
  47. data/lib/generators/generalis/templates/transaction.rb.erb +26 -0
  48. data/lib/generators/generalis/transaction_generator.rb +33 -0
  49. data/lib/generators/rspec/templates/transaction_spec.rb.erb +11 -0
  50. data/lib/generators/rspec/transaction_generator.rb +41 -0
  51. data/lib/rspec/change_balance_of_matcher.rb +32 -0
  52. data/lib/rspec/credit_account_matcher.rb +45 -0
  53. data/lib/rspec/debit_account_matcher.rb +45 -0
  54. data/lib/rspec/have_balance_matcher.rb +27 -0
  55. data/lib/rspec/helpers/format_helper.rb +28 -0
  56. data/lib/rspec/helpers/resolve_account_helper.rb +21 -0
  57. data/lib/rspec/helpers/resolve_amount_helper.rb +21 -0
  58. metadata +136 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 9d36cc1151a3ac8d413e10c1a1840cd85f0dbba976ef8170d531a812a8d1563d
4
+ data.tar.gz: 325b040fc4f2d607ff8be30363e8ce8d052ff7829c260b126c7760238830fe2b
5
+ SHA512:
6
+ metadata.gz: 34e43cd739dbd5e70765b5ab0dbd28c04daab24485fa76b84ce9a735c469de3119d98c7ad62d6e2ee8ccb15293f9ce9754931ec1eab489c708de22b1eb32be82
7
+ data.tar.gz: 04c03f87e8a5f5d4d0cee02e68d45993a2cc11ec2eddd2b8ae5f12751f7285bca6650f847227618d8d776756bfcbcf36ff9a939643dc92bcf0b0bce01e8fe1e3
@@ -0,0 +1,68 @@
1
+ name: Ruby
2
+
3
+ on: [push,pull_request]
4
+
5
+ jobs:
6
+ rubocop:
7
+ runs-on: ubuntu-latest
8
+ steps:
9
+ - uses: actions/checkout@v2
10
+ - name: Set up Ruby
11
+ uses: ruby/setup-ruby@v1
12
+ with:
13
+ ruby-version: 3.0.2
14
+ bundler-cache: true
15
+ - name: Rubocop
16
+ run: bin/rubocop
17
+
18
+ rspec:
19
+ runs-on: ubuntu-latest
20
+ steps:
21
+ - uses: actions/checkout@v2
22
+ - name: Set up Ruby
23
+ uses: ruby/setup-ruby@v1
24
+ with:
25
+ ruby-version: 3.0.2
26
+ bundler-cache: true
27
+ - name: RSpec
28
+ run: bin/rspec
29
+
30
+ integration:
31
+ runs-on: ubuntu-latest
32
+ services:
33
+ postgres:
34
+ image: postgres:13
35
+ ports:
36
+ - 5432:5432
37
+ env:
38
+ POSTGRES_USER: postgres
39
+ POSTGRES_PASSWORD: postgres
40
+ POSTGRES_DB: generalis_integration_test
41
+ options: --health-cmd pg_isready --health-interval 5s --health-timeout 5s --health-retries 10
42
+ steps:
43
+ - uses: actions/checkout@v2
44
+ - name: Install Native Dependencies
45
+ run: sudo apt-get install libpq-dev
46
+ - name: Set up Ruby (Integration)
47
+ uses: ruby/setup-ruby@v1
48
+ with:
49
+ ruby-version: 3.0.2
50
+ bundler-cache: true
51
+ working-directory: integration
52
+ - name: Setup Test Database
53
+ working-directory: integration
54
+ run: |
55
+ bin/rails db:create db:schema:load
56
+ env:
57
+ RAILS_ENV: test
58
+ PGHOST: localhost
59
+ PGUSER: postgres
60
+ PGPASSWORD: postgres
61
+ - name: RSpec (Integration)
62
+ working-directory: integration
63
+ run: bin/rspec
64
+ env:
65
+ RAILS_ENV: test
66
+ PGHOST: localhost
67
+ PGUSER: postgres
68
+ PGPASSWORD: postgres
data/.gitignore ADDED
@@ -0,0 +1,11 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ # rspec failure tracking
11
+ .rspec_status
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,46 @@
1
+ require:
2
+ - rubocop-performance
3
+ - rubocop-rails
4
+ - rubocop-rspec
5
+
6
+ AllCops:
7
+ NewCops: enable
8
+ SuggestExtensions: false
9
+ TargetRubyVersion: 3.0
10
+ Exclude:
11
+ - bin/*
12
+ - integration/bin/*
13
+ - integration/db/schema.rb
14
+ - vendor/**/*
15
+
16
+ Layout/AccessModifierIndentation:
17
+ EnforcedStyle: outdent
18
+
19
+ Layout/LineLength:
20
+ Max: 120
21
+
22
+ Layout/MultilineMethodCallIndentation:
23
+ EnforcedStyle: indented
24
+
25
+ Layout/SpaceInLambdaLiteral:
26
+ EnforcedStyle: require_space
27
+
28
+ Metrics/BlockLength:
29
+ Exclude:
30
+ - '**/*_spec.rb'
31
+ - 'lib/rspec/*_matcher.rb'
32
+
33
+ Naming/RescuedExceptionsVariableName:
34
+ PreferredName: error
35
+
36
+ Rails/ApplicationRecord:
37
+ Enabled: false
38
+
39
+ RSpec/ExpectChange:
40
+ Enabled: false
41
+
42
+ Style/Documentation:
43
+ Enabled: false
44
+
45
+ Style/ParallelAssignment:
46
+ Enabled: false
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.0.2
@@ -0,0 +1,5 @@
1
+ {
2
+ "cSpell.words": [
3
+ "generalis"
4
+ ]
5
+ }
data/Gemfile ADDED
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ # Specify your gem's dependencies in generalis.gemspec
6
+ gemspec
7
+
8
+ gem 'rake', '~> 13.0'
9
+ gem 'rspec', '~> 3.0'
10
+ gem 'rubocop', '~> 1.7'
11
+ gem 'rubocop-performance'
12
+ gem 'rubocop-rails'
13
+ gem 'rubocop-rspec'
data/Gemfile.lock ADDED
@@ -0,0 +1,134 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ generalis (0.1.0)
5
+ activerecord (>= 5, < 7)
6
+ money-rails (~> 1.15)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ actionpack (6.1.4.1)
12
+ actionview (= 6.1.4.1)
13
+ activesupport (= 6.1.4.1)
14
+ rack (~> 2.0, >= 2.0.9)
15
+ rack-test (>= 0.6.3)
16
+ rails-dom-testing (~> 2.0)
17
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
18
+ actionview (6.1.4.1)
19
+ activesupport (= 6.1.4.1)
20
+ builder (~> 3.1)
21
+ erubi (~> 1.4)
22
+ rails-dom-testing (~> 2.0)
23
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
24
+ activemodel (6.1.4.1)
25
+ activesupport (= 6.1.4.1)
26
+ activerecord (6.1.4.1)
27
+ activemodel (= 6.1.4.1)
28
+ activesupport (= 6.1.4.1)
29
+ activesupport (6.1.4.1)
30
+ concurrent-ruby (~> 1.0, >= 1.0.2)
31
+ i18n (>= 1.6, < 2)
32
+ minitest (>= 5.1)
33
+ tzinfo (~> 2.0)
34
+ zeitwerk (~> 2.3)
35
+ ast (2.4.2)
36
+ builder (3.2.4)
37
+ concurrent-ruby (1.1.9)
38
+ crass (1.0.6)
39
+ diff-lcs (1.4.4)
40
+ erubi (1.10.0)
41
+ i18n (1.8.11)
42
+ concurrent-ruby (~> 1.0)
43
+ loofah (2.12.0)
44
+ crass (~> 1.0.2)
45
+ nokogiri (>= 1.5.9)
46
+ method_source (1.0.0)
47
+ minitest (5.14.4)
48
+ monetize (1.11.0)
49
+ money (~> 6.12)
50
+ money (6.16.0)
51
+ i18n (>= 0.6.4, <= 2)
52
+ money-rails (1.15.0)
53
+ activesupport (>= 3.0)
54
+ monetize (~> 1.9)
55
+ money (~> 6.13)
56
+ railties (>= 3.0)
57
+ nokogiri (1.12.5-x86_64-linux)
58
+ racc (~> 1.4)
59
+ parallel (1.21.0)
60
+ parser (3.0.2.0)
61
+ ast (~> 2.4.1)
62
+ racc (1.6.0)
63
+ rack (2.2.3)
64
+ rack-test (1.1.0)
65
+ rack (>= 1.0, < 3)
66
+ rails-dom-testing (2.0.3)
67
+ activesupport (>= 4.2.0)
68
+ nokogiri (>= 1.6)
69
+ rails-html-sanitizer (1.4.2)
70
+ loofah (~> 2.3)
71
+ railties (6.1.4.1)
72
+ actionpack (= 6.1.4.1)
73
+ activesupport (= 6.1.4.1)
74
+ method_source
75
+ rake (>= 0.13)
76
+ thor (~> 1.0)
77
+ rainbow (3.0.0)
78
+ rake (13.0.6)
79
+ regexp_parser (2.1.1)
80
+ rexml (3.2.5)
81
+ rspec (3.10.0)
82
+ rspec-core (~> 3.10.0)
83
+ rspec-expectations (~> 3.10.0)
84
+ rspec-mocks (~> 3.10.0)
85
+ rspec-core (3.10.1)
86
+ rspec-support (~> 3.10.0)
87
+ rspec-expectations (3.10.1)
88
+ diff-lcs (>= 1.2.0, < 2.0)
89
+ rspec-support (~> 3.10.0)
90
+ rspec-mocks (3.10.2)
91
+ diff-lcs (>= 1.2.0, < 2.0)
92
+ rspec-support (~> 3.10.0)
93
+ rspec-support (3.10.3)
94
+ rubocop (1.23.0)
95
+ parallel (~> 1.10)
96
+ parser (>= 3.0.0.0)
97
+ rainbow (>= 2.2.2, < 4.0)
98
+ regexp_parser (>= 1.8, < 3.0)
99
+ rexml
100
+ rubocop-ast (>= 1.12.0, < 2.0)
101
+ ruby-progressbar (~> 1.7)
102
+ unicode-display_width (>= 1.4.0, < 3.0)
103
+ rubocop-ast (1.13.0)
104
+ parser (>= 3.0.1.1)
105
+ rubocop-performance (1.12.0)
106
+ rubocop (>= 1.7.0, < 2.0)
107
+ rubocop-ast (>= 0.4.0)
108
+ rubocop-rails (2.12.4)
109
+ activesupport (>= 4.2.0)
110
+ rack (>= 1.1)
111
+ rubocop (>= 1.7.0, < 2.0)
112
+ rubocop-rspec (2.6.0)
113
+ rubocop (~> 1.19)
114
+ ruby-progressbar (1.11.0)
115
+ thor (1.1.0)
116
+ tzinfo (2.0.4)
117
+ concurrent-ruby (~> 1.0)
118
+ unicode-display_width (2.1.0)
119
+ zeitwerk (2.5.1)
120
+
121
+ PLATFORMS
122
+ x86_64-linux
123
+
124
+ DEPENDENCIES
125
+ generalis!
126
+ rake (~> 13.0)
127
+ rspec (~> 3.0)
128
+ rubocop (~> 1.7)
129
+ rubocop-performance
130
+ rubocop-rails
131
+ rubocop-rspec
132
+
133
+ BUNDLED WITH
134
+ 2.2.22