correios-frete 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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"