embratel 0.0.1 → 0.0.2

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.
data/README.org CHANGED
@@ -3,17 +3,75 @@
3
3
  #+BEGIN_SRC
4
4
  gem install embratel
5
5
  #+END_SRC
6
- ** Testando
7
- Para rodar os testes você precisa ter o
8
- [[http://github.com/carlhuda/bundler][bundler]] instalado.
6
+ Você precisa ter o ruby e o rubygems instalados.
7
+
8
+ ** Uso
9
+ A Embratel fornece faturas de conta de telefone em seu
10
+ [[http://fatura.embratel.net.br/embratel/index.html][serviço online]].
11
+ Para extrair informações sobre uma fatura, você precisará do arquivo
12
+ .csv de um dado mês.
13
+ *** Como obter o arquivo da fatura?
14
+ - [[http://fatura.embratel.net.br/embratel/jsp/selectClientRegister.jsp][cadastre-se]] se você não possui uma conta
15
+ - logue no site
16
+ - escolha o mês da fatura
17
+ - vá em 'Opções' e selecione 'Exportar toda a conta'
18
+ - exporte como 'Excel - CSV'
19
+
20
+ *** Classes da gem
21
+ #+BEGIN_SRC
22
+ Embratel::PhoneBill
23
+ Embratel::Call
24
+ #+END_SRC
25
+
26
+ *** Com o arquivo da fatura você pode
27
+ #+BEGIN_SRC
28
+ phone_bill = Embratel::PhoneBill.new("/path/to/fatura.csv")
29
+
30
+ # array com todas as ligações da fatura (array de objetos Embratel::Call)
31
+ phone_bill.calls
32
+
33
+ # custo total da fatura
34
+ phone_bill.total
35
+ #+END_SRC
36
+
37
+ *** attr_accessors disponíveis para objetos Embratel::Call
38
+ #+BEGIN_SRC
39
+ id
40
+ caller
41
+ description
42
+ date
43
+ number_called
44
+ caller_local
45
+ called_local
46
+ start_time
47
+ end_time
48
+ imp
49
+ country
50
+ quantity
51
+ unit
52
+ cost
53
+ #+END_SRC
54
+
55
+ ** Para rodar os testes
56
+ *** Pegue o código
57
+ #+BEGIN_SRC
58
+ git clone git://github.com/murilasso/embratel.git
59
+ cd embratel
60
+ #+END_SRC
61
+
62
+ *** Instale o bundler e as dependências (se já não estiverem instaladas)
9
63
  #+BEGIN_SRC
10
64
  gem install bundler
11
65
  bundle install
66
+ #+END_SRC
67
+
68
+ *** Rode os testes
69
+ #+BEGIN_SRC
12
70
  rake test
13
71
  #+END_SRC
14
72
 
15
73
  ** Autor
16
- [[mailto:murilo.soares3@gmail.com][Murilo Soares Pereira]].
74
+ [[http://www.comp.ufscar.br/~murilo][Murilo Soares Pereira]]
17
75
 
18
76
  ** Licença
19
77
  Distribuído sob a [[http://github.com/murilasso/embratel/blob/master/MIT-LICENSE][licença MIT]].
data/embratel.gemspec CHANGED
@@ -1,5 +1,5 @@
1
1
  # -*- encoding: utf-8 -*-
2
- require File.expand_path("../lib/embratel/version", __FILE__)
2
+ require File.expand_path("../lib/embratel", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "embratel"
@@ -8,8 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.authors = ["Murilo Soares Pereira"]
9
9
  s.email = ["murilo.soares3@gmail.com"]
10
10
  s.homepage = "http://github.com/murilasso/embratel"
11
- s.summary = "Gem for extracting information from Embratel's phone bill files."
12
- s.description = ""
11
+ s.summary = "Extract calls information from Embratel's phone bill files."
13
12
 
14
13
  s.required_rubygems_version = ">= 1.3.6"
15
14
  s.rubyforge_project = "embratel"
data/lib/embratel.rb CHANGED
@@ -1,20 +1,8 @@
1
- require 'rubygems'
2
-
3
- begin
4
- require 'bundler'
5
- rescue LoadError
6
- STDERR.puts "You need to install bundler"
7
- else
8
- begin
9
- Bundler.setup
10
- rescue Bundler::BundlerError
11
- STDERR.puts $!
12
- end
13
- end
14
-
15
1
  require 'embratel/phone_bill'
16
2
  require 'embratel/call'
17
3
 
18
4
  module Embratel
5
+ VERSION = "0.0.2"
6
+
19
7
  class InvalidPhoneBillFileError < StandardError; end
20
8
  end
@@ -12,7 +12,7 @@ module Embratel
12
12
  rescue FasterCSV::MalformedCSVError
13
13
  raise
14
14
  else
15
- raise InvalidPhoneBillFileError if invalid_rows?
15
+ raise InvalidPhoneBillFileError if (invalid_rows? || non_csv?(path))
16
16
  end
17
17
  end
18
18
 
@@ -28,10 +28,15 @@ module Embratel
28
28
  end
29
29
 
30
30
  private
31
+
31
32
  def invalid_rows?
32
33
  csv = @csv.dup
33
34
  3.times { csv.shift }
34
35
  csv.any? { |row| !Call.new(row).valid? }
35
36
  end
37
+
38
+ def non_csv?(path)
39
+ File.extname(path) != '.csv'
40
+ end
36
41
  end
37
42
  end
@@ -23,6 +23,10 @@ class Embratel::PhoneBillTest < Test::Unit::TestCase
23
23
  "#{FIXTURES_PATH}/valid_phone_bill_file.csv"
24
24
  end
25
25
 
26
+ def non_csv_phone_bill_file_path
27
+ "#{FIXTURES_PATH}/phone_bill.txt"
28
+ end
29
+
26
30
  def test_phone_bill_instantiation_with_a_non_existing_file_path
27
31
  assert_raise(Errno::ENOENT) { Embratel::PhoneBill.new(non_existing_file_path) }
28
32
  end
@@ -43,6 +47,12 @@ class Embratel::PhoneBillTest < Test::Unit::TestCase
43
47
  end
44
48
  end
45
49
 
50
+ def test_does_not_allow_other_file_extensions_than_csv
51
+ assert_raise(Embratel::InvalidPhoneBillFileError) do
52
+ Embratel::PhoneBill.new(non_csv_phone_bill_file_path)
53
+ end
54
+ end
55
+
46
56
  def test_phone_bill_instantiation_with_a_valid_csv_phone_bill_file_path
47
57
  phone_bill = Embratel::PhoneBill.new(valid_csv_phone_bill_file_path)
48
58
  assert(!phone_bill.send(:invalid_rows?))
File without changes
data/test/test_helper.rb CHANGED
@@ -1,7 +1,8 @@
1
- require 'test/unit'
2
1
 
3
2
  $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
3
+ require 'rubygems'
4
4
  require 'embratel'
5
+ require 'test/unit'
5
6
 
6
7
  class Test::Unit::TestCase
7
8
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embratel
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Murilo Soares Pereira
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-16 00:00:00 -03:00
18
+ date: 2010-11-05 00:00:00 -02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -66,7 +66,7 @@ dependencies:
66
66
  version: 1.5.3
67
67
  type: :runtime
68
68
  version_requirements: *id003
69
- description: ""
69
+ description:
70
70
  email:
71
71
  - murilo.soares3@gmail.com
72
72
  executables: []
@@ -86,10 +86,10 @@ files:
86
86
  - lib/embratel.rb
87
87
  - lib/embratel/call.rb
88
88
  - lib/embratel/phone_bill.rb
89
- - lib/embratel/version.rb
90
89
  - test/embratel/call_test.rb
91
90
  - test/embratel/phone_bill_test.rb
92
91
  - test/fixtures/invalid_phone_bill_file.csv
92
+ - test/fixtures/phone_bill.txt
93
93
  - test/fixtures/text_file.txt
94
94
  - test/fixtures/valid_phone_bill_file.csv
95
95
  - test/test_helper.rb
@@ -128,6 +128,6 @@ rubyforge_project: embratel
128
128
  rubygems_version: 1.3.7
129
129
  signing_key:
130
130
  specification_version: 3
131
- summary: Gem for extracting information from Embratel's phone bill files.
131
+ summary: Extract calls information from Embratel's phone bill files.
132
132
  test_files: []
133
133
 
@@ -1,3 +0,0 @@
1
- module Embratel
2
- VERSION = "0.0.1"
3
- end