rpi_marca 0.0.1
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 +7 -0
- data/.gitignore +15 -0
- data/.rspec +2 -0
- data/.rubocop.yml +8 -0
- data/.rubocop_todo.yml +16 -0
- data/.ruby-version +1 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +76 -0
- data/Guardfile +16 -0
- data/LICENSE.txt +22 -0
- data/README.md +31 -0
- data/Rakefile +6 -0
- data/lib/rpi_marca/exceptions.rb +3 -0
- data/lib/rpi_marca/helpers.rb +18 -0
- data/lib/rpi_marca/magazine.rb +39 -0
- data/lib/rpi_marca/magazine.xsd +335 -0
- data/lib/rpi_marca/national_class.rb +46 -0
- data/lib/rpi_marca/ncl.rb +26 -0
- data/lib/rpi_marca/owner.rb +21 -0
- data/lib/rpi_marca/previous_application.rb +19 -0
- data/lib/rpi_marca/priority.rb +24 -0
- data/lib/rpi_marca/publication.rb +136 -0
- data/lib/rpi_marca/receipt.rb +56 -0
- data/lib/rpi_marca/rule.rb +50 -0
- data/lib/rpi_marca/version.rb +3 -0
- data/lib/rpi_marca/vienna_class.rb +43 -0
- data/lib/rpi_marca.rb +5 -0
- data/rpi_marca.gemspec +31 -0
- data/rpi_marca.sublime-project +11 -0
- data/spec/lib/rpi_marca/magazine_spec.rb +122 -0
- data/spec/lib/rpi_marca/publication_spec.rb +675 -0
- data/spec/spec_helper.rb +14 -0
- data/tasks/rspec.rake +3 -0
- metadata +165 -0
|
@@ -0,0 +1,675 @@
|
|
|
1
|
+
require 'rpi_marca/publication'
|
|
2
|
+
require 'rpi_marca/exceptions'
|
|
3
|
+
require 'nokogiri'
|
|
4
|
+
|
|
5
|
+
describe RpiMarca::Publication do
|
|
6
|
+
# rubocop:disable Metrics/LineLength
|
|
7
|
+
PUBLICACAO_PROTOCOLO_COMPLETO = <<-XML
|
|
8
|
+
<processo numero="829142282">
|
|
9
|
+
<despachos>
|
|
10
|
+
<despacho codigo="IPAS270" nome="Deferimento de petição">
|
|
11
|
+
<texto-complementar>Protocolo: 810110405339 (17/03/2011) Petição (tipo): Anotação de transferência de titularidade decorrente de cisão (349.2) Procurador: CUSTODIO DE ALMEIDA CIA Cedente: I-PARK SOLUÇÕES TECNOLÓGICAS S.A. [BR] Cessionário: I-PARK SOLUÇÕES TECNOLÓGICAS S.A. Detalhes do despacho: ok!</texto-complementar>
|
|
12
|
+
<protocolo numero="810110405339" data="12/11/2009" codigoServico="3371">
|
|
13
|
+
<requerente nome-razao-social="G.A.R. GESTÃO E ADMINISTRAÇÃO E RODOVIAS LTDA" pais="BR" uf="SP"/>
|
|
14
|
+
<cedente nome-razao-social="K.V.M. COMÉRCIO E CONFECÇÕES LTDA-EPP" pais="BR" uf="SP"/>
|
|
15
|
+
<cessionario nome-razao-social="K.V.M. COMÉRCIO E CONFECÇÕES LTDA-EPP"/>
|
|
16
|
+
<procurador>PICOSSE E CALABRESE ADVOGADOS ASSOCIADOS</procurador>
|
|
17
|
+
</protocolo>
|
|
18
|
+
</despacho>
|
|
19
|
+
</despachos>
|
|
20
|
+
</processo>
|
|
21
|
+
XML
|
|
22
|
+
|
|
23
|
+
PUBLICACAO_DOIS_DESPACHOS = <<-XML
|
|
24
|
+
<processo numero="829142282">
|
|
25
|
+
<despachos>
|
|
26
|
+
<despacho codigo="IPAS270" nome="Deferimento de petição">
|
|
27
|
+
<texto-complementar>Protocolo: 810110405339 (17/03/2011) Petição (tipo): Anotação de transferência de titularidade decorrente de cisão (349.2) Procurador: CUSTODIO DE ALMEIDA CIA Cedente: I-PARK SOLUÇÕES TECNOLÓGICAS S.A. [BR] Cessionário: I-PARK SOLUÇÕES TECNOLÓGICAS S.A. Detalhes do despacho: ok!</texto-complementar>
|
|
28
|
+
<protocolo numero="810110405339" data="01/07/2013"/>
|
|
29
|
+
</despacho>
|
|
30
|
+
<despacho codigo="IPAS009" nome="Publicação de pedido de registro para oposição">
|
|
31
|
+
<texto-complementar/>
|
|
32
|
+
<protocolo numero="1010101010101010" data="01/12/2012"/>
|
|
33
|
+
</despacho>
|
|
34
|
+
</despachos>
|
|
35
|
+
</processo>
|
|
36
|
+
XML
|
|
37
|
+
|
|
38
|
+
PUBLICACAO_SEM_PROTOCOLO = <<-XML
|
|
39
|
+
<processo numero="828247935">
|
|
40
|
+
<despachos>
|
|
41
|
+
<despacho codigo="IPAS142" nome="Sobrestamento do exame de mérito">
|
|
42
|
+
<texto-complementar>Sobrestadores: Processo: 823129900 (MÓDULO E-SECURITY)</texto-complementar>
|
|
43
|
+
</despacho>
|
|
44
|
+
</despachos>
|
|
45
|
+
</processo>
|
|
46
|
+
XML
|
|
47
|
+
|
|
48
|
+
TEXTO_COMPLEMENTAR_COM_PROTOCOLO = <<-XML
|
|
49
|
+
<processo numero="905653858">
|
|
50
|
+
<despachos>
|
|
51
|
+
<despacho codigo="IPAS423" nome="Notificação de oposição para manifestação">
|
|
52
|
+
<texto-complementar>850130127025 de 02/07/2013, 850130131596 de 08/07/2013 e 850130122879 de 28/06/2013</texto-complementar>
|
|
53
|
+
</despacho>
|
|
54
|
+
</despachos>
|
|
55
|
+
</processo>
|
|
56
|
+
XML
|
|
57
|
+
|
|
58
|
+
PROCURADOR_SEM_PROTOCOLO = <<-XML
|
|
59
|
+
<processo numero="828247935">
|
|
60
|
+
<despachos>
|
|
61
|
+
<despacho codigo="IPAS142" nome="Sobrestamento do exame de mérito">
|
|
62
|
+
<texto-complementar>Sobrestadores: Processo: 823129900 (MÓDULO E-SECURITY)</texto-complementar>
|
|
63
|
+
</despacho>
|
|
64
|
+
</despachos>
|
|
65
|
+
<titulares>
|
|
66
|
+
<titular nome-razao-social="DIGITAL 21 PRODUÇÕES ARTISTICAS LTDA" pais="BR" uf="SP"/>
|
|
67
|
+
<titular nome-razao-social="BROOKFIELD RIO DE JANEIRO EMPREENDIMENTOS IMOBILIÁRIOS S/A." pais="BR" uf="RJ"/>
|
|
68
|
+
</titulares>
|
|
69
|
+
<procurador>LAURA GARKISCH MOREIRA</procurador>
|
|
70
|
+
<sobrestadores>
|
|
71
|
+
<sobrestador marca="MÓDULO E-SECURITY" processo="823129900"/>
|
|
72
|
+
</sobrestadores>
|
|
73
|
+
</processo>
|
|
74
|
+
XML
|
|
75
|
+
|
|
76
|
+
DEPOSITO = <<-XML
|
|
77
|
+
<processo data-deposito="25/08/2008" numero="829825584">
|
|
78
|
+
<despachos>
|
|
79
|
+
<despacho codigo="IPAS421" nome="Republicação de pedido para oposição">
|
|
80
|
+
<texto-complementar>por alteração na especificação</texto-complementar>
|
|
81
|
+
</despacho>
|
|
82
|
+
</despachos>
|
|
83
|
+
<titulares>
|
|
84
|
+
<titular nome-razao-social="OP SPORTS COMERCIAL LTDA EPP" pais="BR" uf="SP"/>
|
|
85
|
+
</titulares>
|
|
86
|
+
<marca apresentacao="Mista" natureza="De Serviço">
|
|
87
|
+
<nome>MC FARLANE TOYS</nome>
|
|
88
|
+
</marca>
|
|
89
|
+
<classes-vienna edicao="4">
|
|
90
|
+
<classe-vienna codigo="27.5.1"/>
|
|
91
|
+
<classe-vienna codigo="27.7.1"/>
|
|
92
|
+
</classes-vienna>
|
|
93
|
+
<classe-nice codigo="35" edicao="10">
|
|
94
|
+
<especificacao>COMÉRCIO VAREJISTA ATRAVÉS DE QUALQUER MEIO DE BONECOS, ESTÁTUAS, DIORAMAS, BRINQUEDOS COLECIONÁVEIS, RELACIONADOS A PERSONAGENS DE FILMES E SÉRIES DE TV E VIDEOGAMES.;</especificacao>
|
|
95
|
+
</classe-nice>
|
|
96
|
+
<prioridade-unionista>
|
|
97
|
+
<prioridade data="15/02/2012" numero="CTM 010645091" pais="IT"/>
|
|
98
|
+
</prioridade-unionista>
|
|
99
|
+
<apostila>SEM DIREITO AO USO EXCLUSIVO DA EXPRESSÃO "TOYS".</apostila>
|
|
100
|
+
<procurador>ABM ASSESSORIA BRASILEIRA DE MARCAS LTDA.</procurador>
|
|
101
|
+
</processo>
|
|
102
|
+
XML
|
|
103
|
+
|
|
104
|
+
DEPOSITO_MARCA_FIGURATIVA = <<-XML
|
|
105
|
+
<processo data-deposito="25/08/2008" numero="829825584">
|
|
106
|
+
<despachos>
|
|
107
|
+
<despacho codigo="IPAS421" nome="Republicação de pedido para oposição">
|
|
108
|
+
<texto-complementar>por alteração na especificação</texto-complementar>
|
|
109
|
+
</despacho>
|
|
110
|
+
</despachos>
|
|
111
|
+
<titulares>
|
|
112
|
+
<titular nome-razao-social="OP SPORTS COMERCIAL LTDA EPP" pais="BR" uf="SP"/>
|
|
113
|
+
</titulares>
|
|
114
|
+
<marca apresentacao="Figurativa" natureza="De Serviço"/>
|
|
115
|
+
<classes-vienna edicao="4">
|
|
116
|
+
<classe-vienna codigo="27.5.1"/>
|
|
117
|
+
<classe-vienna codigo="27.7.1"/>
|
|
118
|
+
</classes-vienna>
|
|
119
|
+
<classe-nice codigo="35" edicao="10">
|
|
120
|
+
<especificacao>COMÉRCIO VAREJISTA ATRAVÉS DE QUALQUER MEIO DE BONECOS, ESTÁTUAS, DIORAMAS, BRINQUEDOS COLECIONÁVEIS, RELACIONADOS A PERSONAGENS DE FILMES E SÉRIES DE TV E VIDEOGAMES.;</especificacao>
|
|
121
|
+
</classe-nice>
|
|
122
|
+
<prioridade-unionista>
|
|
123
|
+
<prioridade data="15/02/2012" numero="CTM 010645091" pais="IT"/>
|
|
124
|
+
</prioridade-unionista>
|
|
125
|
+
<apostila>SEM DIREITO AO USO EXCLUSIVO DA EXPRESSÃO "TOYS".</apostila>
|
|
126
|
+
<procurador>ABM ASSESSORIA BRASILEIRA DE MARCAS LTDA.</procurador>
|
|
127
|
+
</processo>
|
|
128
|
+
XML
|
|
129
|
+
|
|
130
|
+
DEPOSITO_MARCA_CERTIFIC = <<-XML
|
|
131
|
+
<processo numero="908163495" data-deposito="22/08/2014">
|
|
132
|
+
<despachos>
|
|
133
|
+
<despacho codigo="IPAS009" nome="Publicação de pedido de registro para oposição (exame formal concluído)"/>
|
|
134
|
+
</despachos>
|
|
135
|
+
<titulares>
|
|
136
|
+
<titular nome-razao-social="INSTITUTO INTERNET NO ESTADO DA ARTE - I-START" pais="BR" uf="SP"/>
|
|
137
|
+
</titulares>
|
|
138
|
+
<marca apresentacao="Mista" natureza="Certific.">
|
|
139
|
+
<nome>istart escola digital segura</nome>
|
|
140
|
+
</marca>
|
|
141
|
+
<classes-vienna edicao="4">
|
|
142
|
+
<classe-vienna codigo="26.4.9"/>
|
|
143
|
+
<classe-vienna codigo="27.5.1"/>
|
|
144
|
+
</classes-vienna>
|
|
145
|
+
<classe-nice codigo="42">
|
|
146
|
+
<especificacao>Certificação de A fim de promover sua missão junto às instituições de ensino, o i. Start desenvolveu o selo escola digital segura, uma ação pioneira de responsabilidade social digital. O selo escola digital segura auxilia a direção a incorporar as tecnologias da informação e comunicação ao ambiente escolar e implantar o uso seguro dos recursos de tecnologia educacional identificando e mitigando possíveis incidentes digitais. Assim o i. Start promove o reconhecimento das instituições de ensino que investem em infraestrutura, formulam e aplicam regulamentos e procedimentos para gestão da informação e dos recursos de tecnologia da informação e comunicação e ainda formam alunos e educadores para segurança da informação e ética digital. Diante desse cenário, o selo escola digital segura reconhece o valor das instituições de ensino que se comprometem com a orientação sobre ética e segurança digital, com indicadores distribuídos em quatro níveis: infraestrutura tecnológica, elaboração de regras e procedimentos quanto ao uso da tecnologia, capacitação de colaboradores e docentes e conscientização do corpo discente e de toda a comunidade relacionada. A conquista do certificado é simbolizada, em cada um dos níveis avaliados, pelo ¿selo escola digital segura¿, que permite à instituição de ensino dar publicidade aos esforços envidados no processo educacional para garantir o uso ético, seguro e legal da tecnologia.; </especificacao>
|
|
147
|
+
</classe-nice>
|
|
148
|
+
<procurador>Diego Perez Martin de Almeida</procurador>
|
|
149
|
+
</processo>
|
|
150
|
+
XML
|
|
151
|
+
|
|
152
|
+
DEPOSITO_NCL_SEM_EDICAO = <<-XML
|
|
153
|
+
<processo data-deposito="25/08/2008" numero="829825584">
|
|
154
|
+
<despachos>
|
|
155
|
+
<despacho codigo="IPAS421" nome="Republicação de pedido para oposição">
|
|
156
|
+
<texto-complementar>por alteração na especificação</texto-complementar>
|
|
157
|
+
</despacho>
|
|
158
|
+
</despachos>
|
|
159
|
+
<classe-nice codigo="35">
|
|
160
|
+
<especificacao>COMÉRCIO VAREJISTA ATRAVÉS DE QUALQUER MEIO DE BONECOS, ESTÁTUAS, DIORAMAS, BRINQUEDOS COLECIONÁVEIS, RELACIONADOS A PERSONAGENS DE FILMES E SÉRIES DE TV E VIDEOGAMES.;</especificacao>
|
|
161
|
+
</classe-nice>
|
|
162
|
+
</processo>
|
|
163
|
+
XML
|
|
164
|
+
|
|
165
|
+
PUBLICACAO_COM_CLASSE_NACIONAL = <<-XML
|
|
166
|
+
<processo data-deposito="25/08/2008" numero="829825584">
|
|
167
|
+
<despachos>
|
|
168
|
+
<despacho codigo="IPAS421" nome="Republicação de pedido para oposição">
|
|
169
|
+
<texto-complementar>por alteração na especificação</texto-complementar>
|
|
170
|
+
</despacho>
|
|
171
|
+
</despachos>
|
|
172
|
+
<classe-nacional codigo="25">
|
|
173
|
+
<especificacao>Teste</especificacao>
|
|
174
|
+
<sub-classes-nacional>
|
|
175
|
+
<sub-classe-nacional codigo="10"/>
|
|
176
|
+
<sub-classe-nacional codigo="20"/>
|
|
177
|
+
</sub-classes-nacional>
|
|
178
|
+
</classe-nacional>
|
|
179
|
+
</processo>
|
|
180
|
+
XML
|
|
181
|
+
|
|
182
|
+
CLASSE_NACIONAL_MAIS_DE_3_SUBCLASSES = <<-XML
|
|
183
|
+
<processo data-deposito="25/08/2008" numero="829825584">
|
|
184
|
+
<despachos>
|
|
185
|
+
<despacho codigo="IPAS421" nome="Republicação de pedido para oposição">
|
|
186
|
+
<texto-complementar>por alteração na especificação</texto-complementar>
|
|
187
|
+
</despacho>
|
|
188
|
+
</despachos>
|
|
189
|
+
<classe-nacional codigo="25">
|
|
190
|
+
<especificacao>Teste</especificacao>
|
|
191
|
+
<sub-classes-nacional>
|
|
192
|
+
<sub-classe-nacional codigo="10"/>
|
|
193
|
+
<sub-classe-nacional codigo="20"/>
|
|
194
|
+
<sub-classe-nacional codigo="30"/>
|
|
195
|
+
<sub-classe-nacional codigo="40"/>
|
|
196
|
+
</sub-classes-nacional>
|
|
197
|
+
</classe-nacional>
|
|
198
|
+
</processo>
|
|
199
|
+
XML
|
|
200
|
+
|
|
201
|
+
CLASSE_LOGOTIPO_MAIS_DE_5_SUBCLASSES = <<-XML
|
|
202
|
+
<processo data-deposito="25/08/2008" numero="829825584">
|
|
203
|
+
<despachos>
|
|
204
|
+
<despacho codigo="IPAS421" nome="Republicação de pedido para oposição">
|
|
205
|
+
<texto-complementar>por alteração na especificação</texto-complementar>
|
|
206
|
+
</despacho>
|
|
207
|
+
</despachos>
|
|
208
|
+
<classes-vienna edicao="4">
|
|
209
|
+
<classe-vienna codigo="27.5.1"/>
|
|
210
|
+
<classe-vienna codigo="27.7.1"/>
|
|
211
|
+
<classe-vienna codigo="27.9.1"/>
|
|
212
|
+
<classe-vienna codigo="27.11.1"/>
|
|
213
|
+
<classe-vienna codigo="27.13.1"/>
|
|
214
|
+
<classe-vienna codigo="27.15.1"/>
|
|
215
|
+
</classes-vienna>
|
|
216
|
+
</processo>
|
|
217
|
+
XML
|
|
218
|
+
|
|
219
|
+
PRIORIDADE_UNIONISTA_SEM_DATA = <<-XML
|
|
220
|
+
<processo data-deposito="25/08/2008" numero="829825584">
|
|
221
|
+
<despachos>
|
|
222
|
+
<despacho codigo="IPAS421" nome="Republicação de pedido para oposição">
|
|
223
|
+
<texto-complementar>por alteração na especificação</texto-complementar>
|
|
224
|
+
</despacho>
|
|
225
|
+
</despachos>
|
|
226
|
+
<prioridade-unionista>
|
|
227
|
+
<prioridade numero="CTM 010645091" pais="IT"/>
|
|
228
|
+
</prioridade-unionista>
|
|
229
|
+
</processo>
|
|
230
|
+
XML
|
|
231
|
+
|
|
232
|
+
CONCESSAO_REGISTRO = <<-XML
|
|
233
|
+
<processo data-concessao="10/05/2013" data-deposito="12/04/2010" data-vigencia="10/05/2023" numero="902488309">
|
|
234
|
+
<despachos>
|
|
235
|
+
<despacho codigo="IPAS158" nome="Concessão de registro">
|
|
236
|
+
<texto-complementar/>
|
|
237
|
+
</despacho>
|
|
238
|
+
</despachos>
|
|
239
|
+
</processo>
|
|
240
|
+
XML
|
|
241
|
+
|
|
242
|
+
CONCESSAO_REGISTRO_SEM_DATA_CONCESSAO = <<-XML
|
|
243
|
+
<processo data-deposito="12/04/2010" data-vigencia="10/05/2023" numero="902488309">
|
|
244
|
+
<despachos>
|
|
245
|
+
<despacho codigo="IPAS158" nome="Concessão de registro">
|
|
246
|
+
<texto-complementar/>
|
|
247
|
+
</despacho>
|
|
248
|
+
</despachos>
|
|
249
|
+
</processo>
|
|
250
|
+
XML
|
|
251
|
+
|
|
252
|
+
CONCESSAO_REGISTRO_SEM_DATA_VIGENCIA = <<-XML
|
|
253
|
+
<processo data-concessao="10/05/2013" data-deposito="12/04/2010" numero="902488309">
|
|
254
|
+
<despachos>
|
|
255
|
+
<despacho codigo="IPAS158" nome="Concessão de registro">
|
|
256
|
+
<texto-complementar/>
|
|
257
|
+
</despacho>
|
|
258
|
+
</despachos>
|
|
259
|
+
</processo>
|
|
260
|
+
XML
|
|
261
|
+
|
|
262
|
+
PUBLICACAO_ELEMENTO_NOVO_INVALIDO = <<-XML
|
|
263
|
+
<processo numero="829142282">
|
|
264
|
+
<despachos>
|
|
265
|
+
<despacho codigo="IPAS158" nome="Concessão de registro"/>
|
|
266
|
+
</despachos>
|
|
267
|
+
<foo/>
|
|
268
|
+
</processo>
|
|
269
|
+
XML
|
|
270
|
+
# rubocop:enable Metrics/LineLength
|
|
271
|
+
|
|
272
|
+
it 'aceita uma string contendo a publicação' do
|
|
273
|
+
publication = DEPOSITO
|
|
274
|
+
|
|
275
|
+
expect { RpiMarca::Publication.new(publication) }.not_to raise_error
|
|
276
|
+
end
|
|
277
|
+
|
|
278
|
+
it 'aceita um objeto `Nokogiri::XML::Element` contendo a publicação' do
|
|
279
|
+
publication = Nokogiri::XML(DEPOSITO).at_xpath('//processo')
|
|
280
|
+
|
|
281
|
+
expect { RpiMarca::Publication.new(publication) }.not_to raise_error
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
it 'erro ao instanciar com informações de publicação inválidas' do
|
|
285
|
+
class Foo; end
|
|
286
|
+
|
|
287
|
+
expect { RpiMarca::Publication.new(Foo.new) }
|
|
288
|
+
.to raise_error RpiMarca::ParseError
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
it 'erro quando um elemento novo/inválido for publicado' do
|
|
292
|
+
expect { RpiMarca::Publication.new(PUBLICACAO_ELEMENTO_NOVO_INVALIDO) }
|
|
293
|
+
.to raise_error RpiMarca::ParseError
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
context 'processo' do
|
|
297
|
+
it 'número é identificado corretamente' do
|
|
298
|
+
publication = RpiMarca::Publication.new(PUBLICACAO_PROTOCOLO_COMPLETO)
|
|
299
|
+
|
|
300
|
+
expect(publication.application).to eq '829142282'
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
it 'erro quando número não é identificado' do
|
|
304
|
+
expect { RpiMarca::Publication.new('<processo numero=""></processo>') }
|
|
305
|
+
.to raise_error(RpiMarca::ParseError)
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
it 'pode ter data de deposito' do
|
|
309
|
+
publication = RpiMarca::Publication.new(DEPOSITO)
|
|
310
|
+
|
|
311
|
+
expect(publication.filed_on).to eq Date.new(2008, 8, 25)
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
it 'pode ter data de concessão e vigência' do
|
|
315
|
+
publication = RpiMarca::Publication.new(CONCESSAO_REGISTRO)
|
|
316
|
+
|
|
317
|
+
expect(publication.granted_on).to eq Date.new(2013, 5, 10)
|
|
318
|
+
expect(publication.expires_on).to eq Date.new(2023, 5, 10)
|
|
319
|
+
end
|
|
320
|
+
|
|
321
|
+
it 'se tiver data de concessão deve ter data de vigência' do
|
|
322
|
+
expect { RpiMarca::Publication.new(CONCESSAO_REGISTRO_SEM_DATA_VIGENCIA) }
|
|
323
|
+
.to raise_error(RpiMarca::ParseError)
|
|
324
|
+
end
|
|
325
|
+
|
|
326
|
+
it 'se tiver data de vigência deve ter data de concessao' do
|
|
327
|
+
publication = CONCESSAO_REGISTRO_SEM_DATA_CONCESSAO
|
|
328
|
+
expect { RpiMarca::Publication.new(publication) }
|
|
329
|
+
.to raise_error(RpiMarca::ParseError)
|
|
330
|
+
end
|
|
331
|
+
end
|
|
332
|
+
|
|
333
|
+
context 'lista de despachos' do
|
|
334
|
+
it 'erro quando nenhum é publicado' do
|
|
335
|
+
publication = <<-XML
|
|
336
|
+
<processo numero="829142282">
|
|
337
|
+
<despachos/>
|
|
338
|
+
</processo>
|
|
339
|
+
XML
|
|
340
|
+
|
|
341
|
+
expect { RpiMarca::Publication.new(publication) }
|
|
342
|
+
.to raise_error(RpiMarca::ParseError)
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
it 'publicação com um despacho identificado corretamente' do
|
|
346
|
+
publication = RpiMarca::Publication.new(PUBLICACAO_PROTOCOLO_COMPLETO)
|
|
347
|
+
|
|
348
|
+
expect(publication.rules.length).to eq 1
|
|
349
|
+
end
|
|
350
|
+
|
|
351
|
+
it 'publicação com 2 despachos identificados corretamente' do
|
|
352
|
+
publication = RpiMarca::Publication.new(PUBLICACAO_DOIS_DESPACHOS)
|
|
353
|
+
|
|
354
|
+
expect(publication.rules.length).to eq 2
|
|
355
|
+
end
|
|
356
|
+
end
|
|
357
|
+
|
|
358
|
+
context 'despacho' do
|
|
359
|
+
it 'erro quando não possuir código IPAS' do
|
|
360
|
+
publication = <<-XML
|
|
361
|
+
<processo numero="829142282">
|
|
362
|
+
<despachos>
|
|
363
|
+
<despacho codigo=""/>
|
|
364
|
+
</despachos>
|
|
365
|
+
</processo>
|
|
366
|
+
XML
|
|
367
|
+
|
|
368
|
+
expect { RpiMarca::Publication.new(publication) }
|
|
369
|
+
.to raise_error(RpiMarca::ParseError)
|
|
370
|
+
end
|
|
371
|
+
|
|
372
|
+
it 'erro quando não possuir descrição do código IPAS' do
|
|
373
|
+
publication = <<-XML
|
|
374
|
+
<processo numero="829142282">
|
|
375
|
+
<despachos>
|
|
376
|
+
<despacho codigo="IPAS009"/>
|
|
377
|
+
</despachos>
|
|
378
|
+
</processo>
|
|
379
|
+
XML
|
|
380
|
+
|
|
381
|
+
expect { RpiMarca::Publication.new(publication) }
|
|
382
|
+
.to raise_error(RpiMarca::ParseError)
|
|
383
|
+
end
|
|
384
|
+
|
|
385
|
+
it 'primeiro despacho tem dados corretos' do
|
|
386
|
+
publication = RpiMarca::Publication.new(PUBLICACAO_DOIS_DESPACHOS)
|
|
387
|
+
rule = publication.rules.first
|
|
388
|
+
|
|
389
|
+
expect(rule.ipas).to eq 'IPAS270'
|
|
390
|
+
expect(rule.receipt.number).to eq '810110405339'
|
|
391
|
+
expect(rule.receipt.date).to eq Date.new(2013, 7, 1)
|
|
392
|
+
expect(rule.complement)
|
|
393
|
+
.to eq 'Protocolo: 810110405339 (17/03/2011) Petição (tipo): Anotação' \
|
|
394
|
+
' de transferência de titularidade decorrente de cisão (349.2) ' \
|
|
395
|
+
'Procurador: CUSTODIO DE ALMEIDA CIA Cedente: I-PARK SOLUÇÕES ' \
|
|
396
|
+
'TECNOLÓGICAS S.A. [BR] Cessionário: I-PARK SOLUÇÕES TECNOLÓGICAS ' \
|
|
397
|
+
'S.A. Detalhes do despacho: ok!'
|
|
398
|
+
end
|
|
399
|
+
|
|
400
|
+
it 'segundo despacho tem dados corretos' do
|
|
401
|
+
publication = RpiMarca::Publication.new(PUBLICACAO_DOIS_DESPACHOS)
|
|
402
|
+
rule = publication.rules[1] # segundo
|
|
403
|
+
|
|
404
|
+
expect(rule.ipas).to eq 'IPAS009'
|
|
405
|
+
expect(rule.receipt.number).to eq '1010101010101010'
|
|
406
|
+
expect(rule.receipt.date).to eq Date.new(2012, 12, 1)
|
|
407
|
+
expect(rule.complement).to be_nil
|
|
408
|
+
end
|
|
409
|
+
end
|
|
410
|
+
|
|
411
|
+
context 'protocolo' do
|
|
412
|
+
it 'deve ter protocolo para despachos onde é obrigatório' do
|
|
413
|
+
# rubocop:disable Metrics/LineLength
|
|
414
|
+
xml = <<-XML
|
|
415
|
+
<processo numero="905653858">
|
|
416
|
+
<despachos>
|
|
417
|
+
<despacho codigo="IPAS270" nome="Notificação de oposição para manifestação">
|
|
418
|
+
<texto-complementar>850130127025 de 02/07/2013, 850130131596 de 08/07/2013 e 850130122879 de 28/06/2013</texto-complementar>
|
|
419
|
+
</despacho>
|
|
420
|
+
</despachos>
|
|
421
|
+
</processo>
|
|
422
|
+
XML
|
|
423
|
+
# rubocop:enable Metrics/LineLength
|
|
424
|
+
|
|
425
|
+
expect { RpiMarca::Publication.new(xml) }
|
|
426
|
+
.to raise_error(RpiMarca::ParseError)
|
|
427
|
+
end
|
|
428
|
+
|
|
429
|
+
it 'não tem protocolo para despachos onde não é obrigatório' do
|
|
430
|
+
expect { RpiMarca::Publication.new(PUBLICACAO_SEM_PROTOCOLO) }
|
|
431
|
+
.not_to raise_error
|
|
432
|
+
end
|
|
433
|
+
|
|
434
|
+
it 'protocolo tem dados corretos' do
|
|
435
|
+
publication = RpiMarca::Publication.new(PUBLICACAO_PROTOCOLO_COMPLETO)
|
|
436
|
+
rule = publication.rules.first
|
|
437
|
+
receipt = rule.receipt
|
|
438
|
+
|
|
439
|
+
expect(receipt.number).to eq '810110405339'
|
|
440
|
+
expect(receipt.date).to eq Date.new(2009, 11, 12)
|
|
441
|
+
expect(receipt.service_code).to eq '337.1'
|
|
442
|
+
|
|
443
|
+
end
|
|
444
|
+
|
|
445
|
+
it 'pode ter texto complementar' do
|
|
446
|
+
# rubocop:disable Metrics/LineLength
|
|
447
|
+
xml = <<-XML
|
|
448
|
+
<processo numero="905653858">
|
|
449
|
+
<despachos>
|
|
450
|
+
<despacho codigo="IPAS423" nome="Notificação de oposição para manifestação">
|
|
451
|
+
<texto-complementar>850130127025 de 02/07/2013, 850130131596 de 08/07/2013 e 850130122879 de 28/06/2013</texto-complementar>
|
|
452
|
+
</despacho>
|
|
453
|
+
</despachos>
|
|
454
|
+
</processo>
|
|
455
|
+
XML
|
|
456
|
+
# rubocop:enable Metrics/LineLength
|
|
457
|
+
|
|
458
|
+
publication = RpiMarca::Publication.new(xml)
|
|
459
|
+
rule = publication.rules.first
|
|
460
|
+
|
|
461
|
+
expect(rule.complement).to eq '850130127025 de 02/07/2013, ' \
|
|
462
|
+
'850130131596 de 08/07/2013 e 850130122879 de 28/06/2013'
|
|
463
|
+
end
|
|
464
|
+
|
|
465
|
+
it 'texto complementar pode conter outros protocolos' do
|
|
466
|
+
publication = RpiMarca::Publication.new(TEXTO_COMPLEMENTAR_COM_PROTOCOLO)
|
|
467
|
+
rule = publication.rules.last
|
|
468
|
+
|
|
469
|
+
expect(rule.complementary_receipts.length).to eq 3
|
|
470
|
+
|
|
471
|
+
receipt1 = rule.complementary_receipts.first
|
|
472
|
+
expect(receipt1.number).to eq '850130127025'
|
|
473
|
+
expect(receipt1.date).to eq Date.new(2013, 7, 2)
|
|
474
|
+
|
|
475
|
+
receipt3 = rule.complementary_receipts.last
|
|
476
|
+
expect(receipt3.number).to eq '850130122879'
|
|
477
|
+
expect(receipt3.date).to eq Date.new(2013, 6, 28)
|
|
478
|
+
end
|
|
479
|
+
|
|
480
|
+
it 'pode ter procurador' do
|
|
481
|
+
publication = RpiMarca::Publication.new(PUBLICACAO_PROTOCOLO_COMPLETO)
|
|
482
|
+
rule = publication.rules.first
|
|
483
|
+
receipt = rule.receipt
|
|
484
|
+
|
|
485
|
+
expect(receipt.agent)
|
|
486
|
+
.to eq 'PICOSSE E CALABRESE ADVOGADOS ASSOCIADOS'
|
|
487
|
+
end
|
|
488
|
+
|
|
489
|
+
it 'pode ter requerente' do
|
|
490
|
+
publication = RpiMarca::Publication.new(PUBLICACAO_PROTOCOLO_COMPLETO)
|
|
491
|
+
rule = publication.rules.first
|
|
492
|
+
receipt = rule.receipt
|
|
493
|
+
applicant = receipt.applicant
|
|
494
|
+
|
|
495
|
+
expect(applicant.name)
|
|
496
|
+
.to eq 'G.A.R. GESTÃO E ADMINISTRAÇÃO E RODOVIAS LTDA'
|
|
497
|
+
expect(applicant.country).to eq 'BR'
|
|
498
|
+
expect(applicant.state).to eq 'SP'
|
|
499
|
+
end
|
|
500
|
+
|
|
501
|
+
it 'pode ter cedente e cessionário' do
|
|
502
|
+
publication = RpiMarca::Publication.new(PUBLICACAO_PROTOCOLO_COMPLETO)
|
|
503
|
+
rule = publication.rules.first
|
|
504
|
+
receipt = rule.receipt
|
|
505
|
+
assignor = receipt.assignor
|
|
506
|
+
assignee = receipt.assignee
|
|
507
|
+
|
|
508
|
+
expect(assignor).not_to be_nil
|
|
509
|
+
expect(assignor.name)
|
|
510
|
+
.to eq 'K.V.M. COMÉRCIO E CONFECÇÕES LTDA-EPP'
|
|
511
|
+
expect(assignor.country).to eq 'BR'
|
|
512
|
+
expect(assignor.state).to eq 'SP'
|
|
513
|
+
|
|
514
|
+
expect(assignee).not_to be_nil
|
|
515
|
+
expect(assignee.name)
|
|
516
|
+
.to eq 'K.V.M. COMÉRCIO E CONFECÇÕES LTDA-EPP'
|
|
517
|
+
expect(assignee.country).to be_nil
|
|
518
|
+
expect(assignee.state).to be_nil
|
|
519
|
+
end
|
|
520
|
+
end
|
|
521
|
+
|
|
522
|
+
context 'classificação NCL, nacional e de logotipo' do
|
|
523
|
+
it 'pode ter classificação NCL' do
|
|
524
|
+
publication = RpiMarca::Publication.new(DEPOSITO)
|
|
525
|
+
|
|
526
|
+
expect(publication.ncl).not_to be_nil
|
|
527
|
+
expect(publication.ncl.number).to eq '35'
|
|
528
|
+
expect(publication.ncl.edition).to eq 10
|
|
529
|
+
expect(publication.ncl.goods_services)
|
|
530
|
+
.to eq 'COMÉRCIO VAREJISTA ATRAVÉS DE QUALQUER MEIO DE BONECOS, ' \
|
|
531
|
+
'ESTÁTUAS, DIORAMAS, BRINQUEDOS COLECIONÁVEIS, RELACIONADOS A ' \
|
|
532
|
+
'PERSONAGENS DE FILMES E SÉRIES DE TV E VIDEOGAMES.;'
|
|
533
|
+
end
|
|
534
|
+
|
|
535
|
+
it 'classificação NCL pode vir sem edição' do
|
|
536
|
+
publication = RpiMarca::Publication.new(DEPOSITO_NCL_SEM_EDICAO)
|
|
537
|
+
|
|
538
|
+
expect(publication.ncl).not_to be_nil
|
|
539
|
+
expect(publication.ncl.number).to eq '35'
|
|
540
|
+
expect(publication.ncl.edition).to be_nil
|
|
541
|
+
expect(publication.ncl.goods_services)
|
|
542
|
+
.to eq 'COMÉRCIO VAREJISTA ATRAVÉS DE QUALQUER MEIO DE BONECOS, ' \
|
|
543
|
+
'ESTÁTUAS, DIORAMAS, BRINQUEDOS COLECIONÁVEIS, RELACIONADOS A ' \
|
|
544
|
+
'PERSONAGENS DE FILMES E SÉRIES DE TV E VIDEOGAMES.;'
|
|
545
|
+
end
|
|
546
|
+
|
|
547
|
+
it 'pode ter classificação nacional' do
|
|
548
|
+
publication = RpiMarca::Publication.new(PUBLICACAO_COM_CLASSE_NACIONAL)
|
|
549
|
+
|
|
550
|
+
expect(publication.national_class).not_to be_nil
|
|
551
|
+
expect(publication.national_class.number).to eq 25
|
|
552
|
+
expect(publication.national_class.subclass1).to eq 10
|
|
553
|
+
expect(publication.national_class.subclass2).to eq 20
|
|
554
|
+
expect(publication.national_class.subclass3).to eq nil
|
|
555
|
+
expect(publication.national_class.goods_services).to eq 'Teste'
|
|
556
|
+
end
|
|
557
|
+
|
|
558
|
+
it 'classificação nacional não pode ter mais de 3 subclasses' do
|
|
559
|
+
expect { RpiMarca::Publication.new(CLASSE_NACIONAL_MAIS_DE_3_SUBCLASSES) }
|
|
560
|
+
.to raise_error(RpiMarca::ParseError)
|
|
561
|
+
end
|
|
562
|
+
|
|
563
|
+
it 'pode ter classificação de logotipo' do
|
|
564
|
+
publication = RpiMarca::Publication.new(DEPOSITO)
|
|
565
|
+
|
|
566
|
+
expect(publication.vienna_class).not_to be_nil
|
|
567
|
+
expect(publication.vienna_class.edition).to eq 4
|
|
568
|
+
expect(publication.vienna_class.subclass1).to eq '27.5.1'
|
|
569
|
+
expect(publication.vienna_class.subclass2).to eq '27.7.1'
|
|
570
|
+
expect(publication.vienna_class.subclass3).to be_nil
|
|
571
|
+
expect(publication.vienna_class.subclass4).to be_nil
|
|
572
|
+
expect(publication.vienna_class.subclass5).to be_nil
|
|
573
|
+
end
|
|
574
|
+
|
|
575
|
+
it 'classificação de logotipo não pode ter mais de 5 classes' do
|
|
576
|
+
expect { RpiMarca::Publication.new(CLASSE_LOGOTIPO_MAIS_DE_5_SUBCLASSES) }
|
|
577
|
+
.to raise_error(RpiMarca::ParseError)
|
|
578
|
+
end
|
|
579
|
+
end
|
|
580
|
+
|
|
581
|
+
context 'publicação' do
|
|
582
|
+
it 'pode ter titulares' do
|
|
583
|
+
publication = RpiMarca::Publication.new(PROCURADOR_SEM_PROTOCOLO)
|
|
584
|
+
expect(publication.owners).not_to be_empty
|
|
585
|
+
end
|
|
586
|
+
|
|
587
|
+
it 'primeiro titular tem dados corretos' do
|
|
588
|
+
publication = RpiMarca::Publication.new(PROCURADOR_SEM_PROTOCOLO)
|
|
589
|
+
|
|
590
|
+
owner = publication.owners.first
|
|
591
|
+
expect(owner.name)
|
|
592
|
+
.to eq 'DIGITAL 21 PRODUÇÕES ARTISTICAS LTDA'
|
|
593
|
+
expect(owner.country).to eq 'BR'
|
|
594
|
+
expect(owner.state).to eq 'SP'
|
|
595
|
+
end
|
|
596
|
+
|
|
597
|
+
it 'segundo titular tem dados corretos' do
|
|
598
|
+
publication = RpiMarca::Publication.new(PROCURADOR_SEM_PROTOCOLO)
|
|
599
|
+
|
|
600
|
+
owner = publication.owners.last
|
|
601
|
+
expect(owner.name)
|
|
602
|
+
.to eq 'BROOKFIELD RIO DE JANEIRO EMPREENDIMENTOS IMOBILIÁRIOS S/A.'
|
|
603
|
+
expect(owner.country).to eq 'BR'
|
|
604
|
+
expect(owner.state).to eq 'RJ'
|
|
605
|
+
end
|
|
606
|
+
|
|
607
|
+
it 'pode ter marca' do
|
|
608
|
+
publication = RpiMarca::Publication.new(DEPOSITO)
|
|
609
|
+
|
|
610
|
+
expect(publication.trademark).to eq 'MC FARLANE TOYS'
|
|
611
|
+
end
|
|
612
|
+
|
|
613
|
+
it 'não tem marca quando for Figurativa ou Tridimensional' do
|
|
614
|
+
publication = RpiMarca::Publication.new(DEPOSITO_MARCA_FIGURATIVA)
|
|
615
|
+
|
|
616
|
+
expect(publication.trademark).to be_nil
|
|
617
|
+
end
|
|
618
|
+
|
|
619
|
+
it 'pode ter apresentação' do
|
|
620
|
+
publication = RpiMarca::Publication.new(DEPOSITO)
|
|
621
|
+
|
|
622
|
+
expect(publication.kind).to eq 'Mista'
|
|
623
|
+
end
|
|
624
|
+
|
|
625
|
+
it 'pode ter natureza' do
|
|
626
|
+
publication = RpiMarca::Publication.new(DEPOSITO)
|
|
627
|
+
|
|
628
|
+
expect(publication.nature).to eq 'De Serviço'
|
|
629
|
+
end
|
|
630
|
+
|
|
631
|
+
it "natureza 'Certificação' é normalizada" do
|
|
632
|
+
publication = RpiMarca::Publication.new(DEPOSITO_MARCA_CERTIFIC)
|
|
633
|
+
|
|
634
|
+
expect(publication.nature).to eq 'Certificação'
|
|
635
|
+
end
|
|
636
|
+
|
|
637
|
+
it 'pode ter procurador' do
|
|
638
|
+
publication = RpiMarca::Publication.new(PROCURADOR_SEM_PROTOCOLO)
|
|
639
|
+
expect(publication.agent).to eq 'LAURA GARKISCH MOREIRA'
|
|
640
|
+
end
|
|
641
|
+
|
|
642
|
+
it 'pode ter apostila' do
|
|
643
|
+
publication = RpiMarca::Publication.new(DEPOSITO)
|
|
644
|
+
|
|
645
|
+
expect(publication.disclaimer)
|
|
646
|
+
.to eq 'SEM DIREITO AO USO EXCLUSIVO DA EXPRESSÃO "TOYS".'
|
|
647
|
+
end
|
|
648
|
+
|
|
649
|
+
it 'pode ter prioridade unionista' do
|
|
650
|
+
publication = RpiMarca::Publication.new(DEPOSITO)
|
|
651
|
+
priority = publication.priorities.first
|
|
652
|
+
|
|
653
|
+
expect(priority).not_to be_nil
|
|
654
|
+
expect(priority.number).to eq 'CTM 010645091'
|
|
655
|
+
expect(priority.date).to eq Date.new(2012, 2, 15)
|
|
656
|
+
expect(priority.country).to eq 'IT'
|
|
657
|
+
end
|
|
658
|
+
|
|
659
|
+
it 'prioridade unionista deve ter data da prioridade' do
|
|
660
|
+
expect { RpiMarca::Publication.new(PRIORIDADE_UNIONISTA_SEM_DATA) }
|
|
661
|
+
.to raise_error(RpiMarca::ParseError)
|
|
662
|
+
end
|
|
663
|
+
|
|
664
|
+
it 'pode ter processos sobrestadores' do
|
|
665
|
+
publication = RpiMarca::Publication.new(PROCURADOR_SEM_PROTOCOLO)
|
|
666
|
+
|
|
667
|
+
previous_applications = publication.previous_applications
|
|
668
|
+
expect(previous_applications).not_to be_nil
|
|
669
|
+
|
|
670
|
+
previous_application = previous_applications.first
|
|
671
|
+
expect(previous_application.application).to eq '823129900'
|
|
672
|
+
expect(previous_application.trademark).to eq 'MÓDULO E-SECURITY'
|
|
673
|
+
end
|
|
674
|
+
end
|
|
675
|
+
end
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require 'simplecov'
|
|
2
|
+
SimpleCov.start do
|
|
3
|
+
# add_filter "/spec/"
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
RSpec.configure do |config|
|
|
7
|
+
config.expect_with :rspec do |expectations|
|
|
8
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
config.mock_with :rspec do |mocks|
|
|
12
|
+
mocks.verify_partial_doubles = true
|
|
13
|
+
end
|
|
14
|
+
end
|