tbr 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +23 -0
- data/CHANGELOG.md +8 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +56 -0
- data/Rakefile +9 -0
- data/lib/logo.jpg +0 -0
- data/lib/tbr.rb +18 -0
- data/lib/tbr/call_detail.rb +24 -0
- data/lib/tbr/call_type.rb +23 -0
- data/lib/tbr/create_files.rb +176 -0
- data/lib/tbr/group.rb +22 -0
- data/lib/tbr/groups.rb +25 -0
- data/lib/tbr/parse_files.rb +96 -0
- data/lib/tbr/processor.rb +131 -0
- data/lib/tbr/service.rb +42 -0
- data/lib/tbr/service_summary.rb +41 -0
- data/lib/tbr/services.rb +33 -0
- data/lib/tbr/version.rb +3 -0
- data/r +1 -0
- data/spec/call_detail_spec.rb +22 -0
- data/spec/call_type_spec.rb +25 -0
- data/spec/create_files_spec.rb +83 -0
- data/spec/data/bills.csv +372 -0
- data/spec/data/call_types.csv +4 -0
- data/spec/data/empty.csv +0 -0
- data/spec/data/invalid.csv +1 -0
- data/spec/data/readonly.log +0 -0
- data/spec/data/services.csv +14 -0
- data/spec/data/test_logo.jpg +0 -0
- data/spec/group_spec.rb +43 -0
- data/spec/groups_spec.rb +59 -0
- data/spec/parse_files_spec.rb +86 -0
- data/spec/processor_spec.rb +129 -0
- data/spec/service_spec.rb +103 -0
- data/spec/service_summary_spec.rb +32 -0
- data/spec/services_spec.rb +72 -0
- data/spec/spec_helper.rb +19 -0
- data/tbr.gemspec +43 -0
- metadata +199 -0
@@ -0,0 +1,32 @@
|
|
1
|
+
describe ServiceSummary do
|
2
|
+
|
3
|
+
let(:ct) { CallType.new }
|
4
|
+
let(:ss) { ServiceSummary.new(DS_RECORD,ct) }
|
5
|
+
|
6
|
+
describe '#initialize' do
|
7
|
+
it "should set instance variables" do
|
8
|
+
expect(ss.service_number).to eq TEST_PHONE
|
9
|
+
expect(ss.call_type).to eq 'Unknown service type - C5421'
|
10
|
+
expect(ss.service_type).to eq 'MobileNet'
|
11
|
+
expect(ss.units).to eq 'calls'
|
12
|
+
expect(ss.call_count).to eq 67
|
13
|
+
expect(ss.start_date).to eq '12/03/2013'
|
14
|
+
expect(ss.end_date).to eq '10/04/2013'
|
15
|
+
expect(ss.cost).to eq 46.48
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should reject invalid record" do
|
19
|
+
expect { ServiceSummary.new("XX",ct) }.to raise_error ArgumentError
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '#to_a' do
|
24
|
+
it "should return an array with five elements" do
|
25
|
+
expect(ss.to_a.size).to eq 5
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should return the correct result" do
|
29
|
+
expect(ss.to_a[4]).to eq '46.48'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require_relative 'spec_helper'
|
2
|
+
|
3
|
+
describe Services do
|
4
|
+
|
5
|
+
let(:services) { Services.new }
|
6
|
+
|
7
|
+
before :each do
|
8
|
+
services.service ONE
|
9
|
+
services.service TWO
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "#size" do
|
13
|
+
it "should contain two services" do
|
14
|
+
expect(services.size).to eq 2
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "#service" do
|
19
|
+
it "should return a Service" do
|
20
|
+
service = services.service ONE
|
21
|
+
expect(service.class).to eq Service
|
22
|
+
end
|
23
|
+
|
24
|
+
context "no service number" do
|
25
|
+
it "shouldn't add nil service number" do
|
26
|
+
services.service(nil)
|
27
|
+
expect(services.size).to eq 2
|
28
|
+
end
|
29
|
+
|
30
|
+
it "shouldn't add empty service number" do
|
31
|
+
services.service('')
|
32
|
+
expect(services.size).to eq 2
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context "pre-existing service number" do
|
37
|
+
it "shouldn't add a service" do
|
38
|
+
services.service ONE
|
39
|
+
expect(services.size).to eq 2
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context "new service number" do
|
44
|
+
it "should add a service" do
|
45
|
+
services.service THREE
|
46
|
+
expect(services.size).to eq 3
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "#each" do
|
52
|
+
it "should return two services" do
|
53
|
+
count = 0
|
54
|
+
services.each { count += 1}
|
55
|
+
expect(count).to eq 2
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "#delete" do
|
60
|
+
it "should delete a service" do
|
61
|
+
services.delete(ONE)
|
62
|
+
expect(services.size).to eq 1
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe "#name" do
|
67
|
+
it "should return unassigned" do
|
68
|
+
expect(services.name).to eq "Unassigned"
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'pry'
|
2
|
+
|
3
|
+
DS_RECORD = 'DS,4833936100,20130418,P7978266009,797,3,0418501461,S,D,N,C5421,MobileNet,calls,67,,20130312,20130410,20130410,7281,44823000,USAGE,,,11,0,0,,,,42.25,0,42.25,4.23,46.48,20130410,,,,,,,,,,,'
|
4
|
+
DC_RECORD = 'DC,4833936100,20130418,P7978266009,7003,2,0418501461,C,D,C5421,1540,1,53448577,,0,,Ballarat,,20130313,20130313,17:17:39,,,7122,44823000,USAGE,11,9999,0,3.04,0,3.04,0.3,3.34,8.51101E+15,,,,,,,,,,,0'
|
5
|
+
TEST_PHONE = '0418501461'
|
6
|
+
|
7
|
+
OUT_DIR = './spec/data'
|
8
|
+
CALL_TYPES = './spec/data/call_types.csv'
|
9
|
+
SERVICES = './spec/data/services.csv'
|
10
|
+
BILLS = './spec/data/bills.csv'
|
11
|
+
EMPTY = './spec/data/empty.csv'
|
12
|
+
INVALID = './spec/data/invalid.csv'
|
13
|
+
MISSING = './spec/data/missing.csv'
|
14
|
+
LOGFILE = '/tmp/tbr.log'
|
15
|
+
|
16
|
+
|
17
|
+
ONE = '1234'
|
18
|
+
TWO = '2345'
|
19
|
+
THREE = '3456'
|
data/tbr.gemspec
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
|
5
|
+
require 'prawn'
|
6
|
+
require 'prawn/table'
|
7
|
+
|
8
|
+
require 'tbr/version'
|
9
|
+
require 'tbr/call_detail'
|
10
|
+
require 'tbr/call_type'
|
11
|
+
require 'tbr/create_files'
|
12
|
+
require 'tbr/group'
|
13
|
+
require 'tbr/groups'
|
14
|
+
require 'tbr/parse_files'
|
15
|
+
require 'tbr/processor'
|
16
|
+
require 'tbr/service'
|
17
|
+
require 'tbr/services'
|
18
|
+
require 'tbr/service_summary'
|
19
|
+
|
20
|
+
Gem::Specification.new do |spec|
|
21
|
+
spec.name = "tbr"
|
22
|
+
spec.version = Tbr::VERSION
|
23
|
+
spec.authors = ["Brian Collins"]
|
24
|
+
spec.email = ["brian.pyrrho@bigpond.com"]
|
25
|
+
spec.summary = %q{Telstra Billing Reporter}
|
26
|
+
spec.description = %q{Parses Telstra OBS file and produces summary and detail management reports}
|
27
|
+
spec.homepage = ""
|
28
|
+
spec.license = "MIT"
|
29
|
+
|
30
|
+
spec.files = `git ls-files -z`.split("\x0")
|
31
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
32
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
33
|
+
spec.require_paths = ["lib"]
|
34
|
+
|
35
|
+
spec.add_dependency "prawn", "~> 2.0"
|
36
|
+
spec.add_dependency "prawn-table", "~> 0.2"
|
37
|
+
|
38
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
39
|
+
spec.add_development_dependency "rake"
|
40
|
+
spec.add_development_dependency "rspec"
|
41
|
+
spec.add_development_dependency "pry"
|
42
|
+
spec.add_development_dependency "pry-nav"
|
43
|
+
end
|
metadata
ADDED
@@ -0,0 +1,199 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tbr
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Brian Collins
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-06-14 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: prawn
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: prawn-table
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.2'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.2'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.6'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.6'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: pry
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: pry-nav
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
description: Parses Telstra OBS file and produces summary and detail management reports
|
112
|
+
email:
|
113
|
+
- brian.pyrrho@bigpond.com
|
114
|
+
executables: []
|
115
|
+
extensions: []
|
116
|
+
extra_rdoc_files: []
|
117
|
+
files:
|
118
|
+
- ".gitignore"
|
119
|
+
- CHANGELOG.md
|
120
|
+
- Gemfile
|
121
|
+
- LICENSE.txt
|
122
|
+
- README.md
|
123
|
+
- Rakefile
|
124
|
+
- lib/logo.jpg
|
125
|
+
- lib/tbr.rb
|
126
|
+
- lib/tbr/call_detail.rb
|
127
|
+
- lib/tbr/call_type.rb
|
128
|
+
- lib/tbr/create_files.rb
|
129
|
+
- lib/tbr/group.rb
|
130
|
+
- lib/tbr/groups.rb
|
131
|
+
- lib/tbr/parse_files.rb
|
132
|
+
- lib/tbr/processor.rb
|
133
|
+
- lib/tbr/service.rb
|
134
|
+
- lib/tbr/service_summary.rb
|
135
|
+
- lib/tbr/services.rb
|
136
|
+
- lib/tbr/version.rb
|
137
|
+
- r
|
138
|
+
- spec/call_detail_spec.rb
|
139
|
+
- spec/call_type_spec.rb
|
140
|
+
- spec/create_files_spec.rb
|
141
|
+
- spec/data/bills.csv
|
142
|
+
- spec/data/call_types.csv
|
143
|
+
- spec/data/empty.csv
|
144
|
+
- spec/data/invalid.csv
|
145
|
+
- spec/data/readonly.log
|
146
|
+
- spec/data/services.csv
|
147
|
+
- spec/data/test_logo.jpg
|
148
|
+
- spec/group_spec.rb
|
149
|
+
- spec/groups_spec.rb
|
150
|
+
- spec/parse_files_spec.rb
|
151
|
+
- spec/processor_spec.rb
|
152
|
+
- spec/service_spec.rb
|
153
|
+
- spec/service_summary_spec.rb
|
154
|
+
- spec/services_spec.rb
|
155
|
+
- spec/spec_helper.rb
|
156
|
+
- tbr.gemspec
|
157
|
+
homepage: ''
|
158
|
+
licenses:
|
159
|
+
- MIT
|
160
|
+
metadata: {}
|
161
|
+
post_install_message:
|
162
|
+
rdoc_options: []
|
163
|
+
require_paths:
|
164
|
+
- lib
|
165
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
166
|
+
requirements:
|
167
|
+
- - ">="
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: '0'
|
170
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
171
|
+
requirements:
|
172
|
+
- - ">="
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
175
|
+
requirements: []
|
176
|
+
rubyforge_project:
|
177
|
+
rubygems_version: 2.2.2
|
178
|
+
signing_key:
|
179
|
+
specification_version: 4
|
180
|
+
summary: Telstra Billing Reporter
|
181
|
+
test_files:
|
182
|
+
- spec/call_detail_spec.rb
|
183
|
+
- spec/call_type_spec.rb
|
184
|
+
- spec/create_files_spec.rb
|
185
|
+
- spec/data/bills.csv
|
186
|
+
- spec/data/call_types.csv
|
187
|
+
- spec/data/empty.csv
|
188
|
+
- spec/data/invalid.csv
|
189
|
+
- spec/data/readonly.log
|
190
|
+
- spec/data/services.csv
|
191
|
+
- spec/data/test_logo.jpg
|
192
|
+
- spec/group_spec.rb
|
193
|
+
- spec/groups_spec.rb
|
194
|
+
- spec/parse_files_spec.rb
|
195
|
+
- spec/processor_spec.rb
|
196
|
+
- spec/service_spec.rb
|
197
|
+
- spec/service_summary_spec.rb
|
198
|
+
- spec/services_spec.rb
|
199
|
+
- spec/spec_helper.rb
|