reportable_rails 0.1.3 → 0.1.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ec42191250593fe984e7f62ffb0dfbb6367aaa63226267d687f285141a76a5bf
4
- data.tar.gz: 65d2a6a9a3e1c6c7e57343586018daba7257e97cd565bfee87023d79fe48935c
3
+ metadata.gz: f498fabac21446a41514e65bf1ca67d28d31e6bf5ffe8d4f963293a361ab90a0
4
+ data.tar.gz: 0d0e88421369ff82a6758cec28fabb68997d78aa04aaeeb4d1a513fda005f4e6
5
5
  SHA512:
6
- metadata.gz: b5cdf9b9698e1f620d19cd18680cef743b6fca62b875cf0c55d313ea893e35e0157a6f013e4f789d12010dca93b26676ca7cf270dd07fb09800ed8d52dbe58a5
7
- data.tar.gz: ba76a3b406fbe56b6032c4ed6ee313b445ef4bc6c8d4f9d8f26625201df3c61312d5fbe241e223d17d81f67fceb988e900083f1496d0f0ffd6200880ffa7456c
6
+ metadata.gz: 1115b02026cb76fb5f3b0daae2c35fd33193890e40ab6154157837b16d44bf3a20618d81722abd4e243ff8e93381ccd7e8f59edf3ee80172659768c41312c92c
7
+ data.tar.gz: 862550fcba4edac2242b7bad13ea4546c8c0d314a4186c91f85ba04ce2e45ba794223b5db0859db1f40cc94e910aff14ec800cc8c0a78190f8d022ae2c6e884b
data/README.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # ReportableRails
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/reportable_rails.svg)](https://badge.fury.io/rb/reportable_rails)
4
+ [![Build Status](https://github.com/adobocorp/reportable_rails/workflows/RSpec%20Tests/badge.svg)](https://github.com/adobocorp/reportable_rails/actions)
5
+ [![Ruby Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://github.com/testdouble/standard)
6
+ [![Maintainability](https://api.codeclimate.com/v1/badges/YOUR_REPO_ID/maintainability)](https://codeclimate.com/github/adobocorp/reportable_rails)
7
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/YOUR_REPO_ID/test_coverage)](https://codeclimate.com/github/adobocorp/reportable_rails)
8
+ [![Ruby](https://img.shields.io/badge/ruby-2.7%2B-blue)](https://www.ruby-lang.org/en/)
9
+
3
10
  ReportableRails is a Ruby on Rails gem that provides a flexible reporting system for tracking and managing time-based reports with period management.
4
11
 
5
12
  ## Installation
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
@@ -0,0 +1,3 @@
1
+ module ReportableRails
2
+ class InvalidPeriodError < StandardError; end
3
+ end
@@ -4,7 +4,7 @@ module ReportableRails
4
4
  extend ActiveSupport::Concern
5
5
 
6
6
  included do
7
- belongs_to :report, class_name: 'ReportableRails::Report'
7
+ belongs_to :report
8
8
 
9
9
  validates :hours, presence: true, numericality: { greater_than: 0, less_than_or_equal_to: 24 }
10
10
  validates :date, presence: true
@@ -5,12 +5,13 @@ module ReportableRails
5
5
 
6
6
  included do
7
7
  belongs_to :owner, class_name: ReportableRails.configuration.user_class
8
- belongs_to :report_category, class_name: 'ReportableRails::ReportCategory', optional: true
9
- has_many :hours_logs, class_name: 'ReportableRails::HoursLog', dependent: :destroy
8
+ belongs_to :report_category, optional: true
9
+ has_many :hours_logs, dependent: :destroy
10
10
 
11
11
  validates :owner, presence: true
12
12
 
13
13
  def add_hours_log(hours_log_params)
14
+ validate_period_for_date(hours_log_params[:date])
14
15
  hours_logs.create(hours_log_params)
15
16
  end
16
17
 
@@ -28,7 +29,7 @@ module ReportableRails
28
29
 
29
30
  def current_period_end_date
30
31
  if Date.current.day <= 15
31
- Date.current.beginning_of_month + 15.days
32
+ Date.current.beginning_of_month + 14.days
32
33
  else
33
34
  Date.current.end_of_month
34
35
  end
@@ -47,6 +48,17 @@ module ReportableRails
47
48
  def current_period_hours
48
49
  hours_logs.select(&:current_period?)
49
50
  end
51
+
52
+ private
53
+
54
+ def validate_period_for_date(date)
55
+ return if date.nil?
56
+
57
+ unless date >= current_period_start_date && date <= current_period_end_date
58
+ raise InvalidPeriodError, "Date must be within the current reporting period (#{current_period_start_date} to #{current_period_end_date})"
59
+ end
60
+ end
61
+
50
62
  end
51
63
  end
52
64
  end
@@ -4,7 +4,7 @@ module ReportableRails
4
4
  extend ActiveSupport::Concern
5
5
 
6
6
  included do
7
- has_many :reports, class_name: 'ReportableRails::Report', dependent: :nullify
7
+ has_many :reports, dependent: :nullify
8
8
 
9
9
  validates :name, presence: true, uniqueness: { case_sensitive: false }
10
10
  validates :description, length: { maximum: 1000 }
@@ -1,3 +1,3 @@
1
- module ReportableRails
2
- VERSION = "0.1.3"
3
- end
1
+ module ReportableRails
2
+ VERSION = "0.1.5"
3
+ end
@@ -3,6 +3,7 @@
3
3
  require 'rails/engine'
4
4
  require 'active_model_serializers'
5
5
  require 'reportable_rails/version'
6
+ require 'reportable_rails/errors'
6
7
  require 'reportable_rails/models/report'
7
8
  require 'reportable_rails/models/report_category'
8
9
  require 'reportable_rails/models/hours_log'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reportable_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicu Listana
@@ -37,6 +37,76 @@ dependencies:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
39
  version: '0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: actionview
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 6.1.0
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 6.1.0
54
+ - !ruby/object:Gem::Dependency
55
+ name: activerecord
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 6.1.0
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 6.1.0
68
+ - !ruby/object:Gem::Dependency
69
+ name: activemodel
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 6.1.0
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: 6.1.0
82
+ - !ruby/object:Gem::Dependency
83
+ name: activesupport
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: 6.1.0
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: 6.1.0
96
+ - !ruby/object:Gem::Dependency
97
+ name: tzinfo-data
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '1.2023'
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '1.2023'
40
110
  - !ruby/object:Gem::Dependency
41
111
  name: sqlite3
42
112
  requirement: !ruby/object:Gem::Requirement
@@ -44,7 +114,7 @@ dependencies:
44
114
  - - ">="
45
115
  - !ruby/object:Gem::Version
46
116
  version: '0'
47
- type: :development
117
+ type: :runtime
48
118
  prerelease: false
49
119
  version_requirements: !ruby/object:Gem::Requirement
50
120
  requirements:
@@ -93,6 +163,20 @@ dependencies:
93
163
  - - ">="
94
164
  - !ruby/object:Gem::Version
95
165
  version: '0'
166
+ - !ruby/object:Gem::Dependency
167
+ name: shoulda-matchers
168
+ requirement: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '5.0'
173
+ type: :development
174
+ prerelease: false
175
+ version_requirements: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '5.0'
96
180
  description: ReportableRails provides a complete solution for managing user reports,
97
181
  hours logging, and report categories in Ruby on Rails applications
98
182
  email:
@@ -102,7 +186,9 @@ extensions: []
102
186
  extra_rdoc_files: []
103
187
  files:
104
188
  - README.md
189
+ - Rakefile
105
190
  - lib/reportable_rails.rb
191
+ - lib/reportable_rails/errors.rb
106
192
  - lib/reportable_rails/models/hours_log.rb
107
193
  - lib/reportable_rails/models/report.rb
108
194
  - lib/reportable_rails/models/report_category.rb