correios-frete 0.2.1 → 0.3.0

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.
@@ -0,0 +1,17 @@
1
+ == Versão 0.3.0
2
+ - Novo: Métodos diretos para cálculo de um serviço de frete por vez. Exemplo: Correios::Frete#calcular_sedex.
3
+ == Versão 0.2.1
4
+ - Melhoria: Alias Correios::Frete::Servico#sucesso? para Correios::Frete::Servico#success?
5
+ - Melhoria: Alias Correios::Frete::Servico#erro? para Correios::Frete::Servico#error?
6
+ - Atualizado: Documentação
7
+
8
+ == Versão 0.2.0
9
+ - Novo: Suporte para cálculo de e-SEDEX
10
+ - Melhoria: Alias Correios::Frete#calculate para Correios::Frete#calcular
11
+ - Melhoria: Atributo "nome" em Correios::Frete::Servico
12
+ - Correção: {Issue #2: undefined method `key' for #<Hash:0xb5e8eea4>}[https://github.com/prodis/correios-frete/issues/2]
13
+
14
+ == Versão 0.1.0
15
+ - Cálculo de frete para os serviços PAC, SEDEX, SEDEX 10 e SEDEX Hoje
16
+ - Cálculo de um serviço de frete por vez
17
+ - Cálculo de vários serviços de frete ao mesmo tempo
data/Gemfile CHANGED
@@ -2,6 +2,9 @@ source "http://rubygems.org"
2
2
 
3
3
  gem "nokogiri"
4
4
  gem "sax-machine"
5
- gem "rspec"
6
- gem "bundler", "~> 1.0.0"
7
- gem "jeweler"
5
+
6
+ group :development do
7
+ gem "rspec"
8
+ gem "bundler", "~> 1.0.0"
9
+ gem "jeweler"
10
+ end
@@ -24,9 +24,20 @@ Serviços de frete suportados são PAC, SEDEX, SEDEX 10, SEDEX Hoje e e-SEDEX (n
24
24
  :largura => 15,
25
25
  :altura => 2
26
26
 
27
- # ------------------------------------
28
- # Cálculo de um serviço de frete por vez
29
- # ------------------------------------
27
+ Cálculo de vários serviços ao mesmo tempo:
28
+
29
+ servicos = frete.calcular :sedex, :pac
30
+
31
+ servicos[:sedex].nome # => "SEDEX"
32
+ servicos[:sedex].valor # => 26.2
33
+ servicos[:sedex].prazo_entrega # => 1
34
+
35
+ servicos[:pac].nome # => "PAC"
36
+ servicos[:pac].valor # => 10.0
37
+ servicos[:pac].prazo_entrega # => 5
38
+
39
+ Cálculo de um serviço de frete passando o serviço para parâmetro:
40
+
30
41
  servico = frete.calcular :sedex
31
42
  service.nome # => "SEDEX"
32
43
  servico.valor # => 26.2
@@ -37,30 +48,27 @@ Serviços de frete suportados são PAC, SEDEX, SEDEX 10, SEDEX Hoje e e-SEDEX (n
37
48
  servico.valor # => 10.0
38
49
  servico.prazo_entrega # => 5
39
50
 
40
- # ------------------------------------
41
- # Cálculo de vários serviços ao mesmo tempo
42
- # ------------------------------------
43
- servicos = frete.calcular :sedex, :pac
51
+ Cálculo de um serviço de frete chamando o método direto do serviço:
44
52
 
45
- servicos[:sedex].nome # => "SEDEX"
46
- servicos[:sedex].valor # => 26.2
47
- servicos[:sedex].prazo_entrega # => 1
53
+ servico = frete.calcular_sedex
54
+ service.nome # => "SEDEX"
55
+ servico.valor # => 26.2
56
+ servico.prazo_entrega # => 1
48
57
 
49
- servicos[:pac].nome # => "PAC"
50
- servicos[:pac].valor # => 10.0
51
- servicos[:pac].prazo_entrega # => 5
58
+ servico = frete.calcular_pac
59
+ service.nome # => "PAC"
60
+ servico.valor # => 10.0
61
+ servico.prazo_entrega # => 5
52
62
 
53
- # ------------------------------------
54
- # Verificação de sucesso e erro
55
- # ------------------------------------
56
- servico = frete.calcular :sedex
63
+ Verificação de sucesso e erro:
64
+
65
+ servico = frete.calcular_sedex
57
66
  servico.sucesso? # => true
58
67
  servico.erro? # => false
59
68
 
60
- # ------------------------------------
61
- # Usando a interface pública em inglês
62
- # ------------------------------------
63
- servico = frete.calculate :sedex
69
+ Usando a interface pública em inglês:
70
+
71
+ servico = frete.calculate_sedex
64
72
  servico.success? # => true
65
73
  servico.error? # => false
66
74
 
data/Rakefile CHANGED
@@ -41,5 +41,6 @@ Rake::RDocTask.new do |rdoc|
41
41
  rdoc.rdoc_dir = 'rdoc'
42
42
  rdoc.title = "correios-frete #{version}"
43
43
  rdoc.rdoc_files.include('README*')
44
+ rdoc.rdoc_files.include('CHANGELOG*')
44
45
  rdoc.rdoc_files.include('lib/**/*.rb')
45
46
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{correios-frete}
8
- s.version = "0.2.1"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Prodis a.k.a. Fernando Hamasaki de Amorim"]
12
- s.date = %q{2011-07-19}
12
+ s.date = %q{2011-08-02}
13
13
  s.description = %q{Cálculo de frete utilizando o Web Service dos Correios (http://www.correios.com.br/webservices). Serviços de frete suportados são PAC, SEDEX, SEDEX 10, SEDEX Hoje e e-SEDEX (necessário informar código de empresa e senha).}
14
14
  s.email = %q{prodis@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -18,6 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.files = [
19
19
  ".document",
20
20
  ".rspec",
21
+ "CHANGELOG.rdoc",
21
22
  "Gemfile",
22
23
  "Gemfile.lock",
23
24
  "README.rdoc",
@@ -47,9 +48,9 @@ Gem::Specification.new do |s|
47
48
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
48
49
  s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
49
50
  s.add_runtime_dependency(%q<sax-machine>, [">= 0"])
50
- s.add_runtime_dependency(%q<rspec>, [">= 0"])
51
- s.add_runtime_dependency(%q<bundler>, ["~> 1.0.0"])
52
- s.add_runtime_dependency(%q<jeweler>, [">= 0"])
51
+ s.add_development_dependency(%q<rspec>, [">= 0"])
52
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
53
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
53
54
  else
54
55
  s.add_dependency(%q<nokogiri>, [">= 0"])
55
56
  s.add_dependency(%q<sax-machine>, [">= 0"])
@@ -47,5 +47,12 @@ module Correios
47
47
  end
48
48
 
49
49
  alias calculate calcular
50
+
51
+ private
52
+
53
+ def method_missing(method_name, *args)
54
+ return calcular($2.to_sym) if method_name.to_s =~ /^(calcular|calculate)_(.*)/ && Correios::Frete::Servico.code_from_type($2.to_sym)
55
+ super
56
+ end
50
57
  end
51
58
  end
@@ -2,13 +2,6 @@
2
2
  require 'nokogiri'
3
3
 
4
4
  class Correios::Frete::Parser
5
- SERVICES = {
6
- :pac => "41106",
7
- :sedex => "40010",
8
- :sedex_10 => "40215",
9
- :sedex_hoje => "40290"
10
- }
11
-
12
5
  def servicos(xml)
13
6
  servicos = {}
14
7
 
@@ -3,8 +3,8 @@ module Correios
3
3
  module Frete
4
4
  module Version
5
5
  MAJOR = 0
6
- MINOR = 2
7
- PATCH = 1
6
+ MINOR = 3
7
+ PATCH = 0
8
8
  STRING = [MAJOR, MINOR, PATCH].join(".")
9
9
  end
10
10
  end
@@ -89,4 +89,32 @@ describe Correios::Frete do
89
89
  end
90
90
  end
91
91
  end
92
+
93
+ ["calcular", "calculate"].each do |method_name|
94
+ Correios::Frete::Servico::AVAILABLE_SERVICES.each do |key, service|
95
+ describe "##{method_name}_#{service[:type]}" do
96
+ before :each do
97
+ web_service = Correios::Frete::WebService.new
98
+ parser = Correios::Frete::Parser.new
99
+ @frete = Correios::Frete.new(:web_service => web_service, :parser => parser)
100
+ @servico = Correios::Frete::Servico.new
101
+
102
+ parser.stub(:servicos).and_return(service[:type] => @servico)
103
+ web_service.stub(:request).with(@frete, [service[:type]]).and_return("XML")
104
+ end
105
+
106
+ it "calculates #{service[:name]}" do
107
+ @frete.send("#{method_name}_#{service[:type]}").should == @servico
108
+ end
109
+ end
110
+ end
111
+
112
+ describe "##{method_name}_servico_que_nao_existe" do
113
+ before(:each) { @frete = Correios::Frete.new }
114
+
115
+ it "raises NoMethodError" do
116
+ expect { @frete.send("#{method_name}_servico_que_nao_existe") }.to raise_error(NoMethodError)
117
+ end
118
+ end
119
+ end
92
120
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: correios-frete
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.1
5
+ version: 0.3.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Prodis a.k.a. Fernando Hamasaki de Amorim
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-07-19 00:00:00 -03:00
13
+ date: 2011-08-02 00:00:00 -03:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -43,7 +43,7 @@ dependencies:
43
43
  - - ">="
44
44
  - !ruby/object:Gem::Version
45
45
  version: "0"
46
- type: :runtime
46
+ type: :development
47
47
  prerelease: false
48
48
  version_requirements: *id003
49
49
  - !ruby/object:Gem::Dependency
@@ -54,7 +54,7 @@ dependencies:
54
54
  - - ~>
55
55
  - !ruby/object:Gem::Version
56
56
  version: 1.0.0
57
- type: :runtime
57
+ type: :development
58
58
  prerelease: false
59
59
  version_requirements: *id004
60
60
  - !ruby/object:Gem::Dependency
@@ -65,7 +65,7 @@ dependencies:
65
65
  - - ">="
66
66
  - !ruby/object:Gem::Version
67
67
  version: "0"
68
- type: :runtime
68
+ type: :development
69
69
  prerelease: false
70
70
  version_requirements: *id005
71
71
  description: "C\xC3\xA1lculo de frete utilizando o Web Service dos Correios (http://www.correios.com.br/webservices). Servi\xC3\xA7os de frete suportados s\xC3\xA3o PAC, SEDEX, SEDEX 10, SEDEX Hoje e e-SEDEX (necess\xC3\xA1rio informar c\xC3\xB3digo de empresa e senha)."
@@ -79,6 +79,7 @@ extra_rdoc_files:
79
79
  files:
80
80
  - .document
81
81
  - .rspec
82
+ - CHANGELOG.rdoc
82
83
  - Gemfile
83
84
  - Gemfile.lock
84
85
  - README.rdoc
@@ -109,7 +110,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
109
110
  requirements:
110
111
  - - ">="
111
112
  - !ruby/object:Gem::Version
112
- hash: 571603857
113
+ hash: -510697009
113
114
  segments:
114
115
  - 0
115
116
  version: "0"