mangdown 0.20.8 → 0.21.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'stringio'
2
4
  require 'test_helper'
3
5
 
4
6
  module Mangdown
5
7
  class LoggingTest < Minitest::Test
6
-
7
- class LoggingEnabled
8
+ class LoggingEnabled
8
9
  include Logging
9
10
 
10
11
  def log(message, level)
@@ -31,6 +32,7 @@ module Mangdown
31
32
  Mangdown.configure_logger(file: STDOUT)
32
33
  end
33
34
 
35
+ # rubocop:disable Metrics/AbcSize
34
36
  def test_logger
35
37
  @instance.log('hello world', :debug)
36
38
  @instance.log('hello world', :fatal)
@@ -40,6 +42,7 @@ module Mangdown
40
42
  assert_equal 1, @io.string.scan(/FATAL/).length
41
43
  assert_equal 2, @io.string.scan(/hello world/).length
42
44
  end
45
+ # rubocop:enable Metrics/AbcSize
43
46
 
44
47
  def test_configure_logger
45
48
  assert_equal @io, @instance.device
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
  require 'webmock/minitest'
3
5
 
@@ -25,15 +27,15 @@ module Mangdown
25
27
  url_with_path = 'http://www.anything.com/path/to/something'
26
28
  url_with_slash = 'http://www.anything.com/'
27
29
  url = 'http://www.anything.com'
28
-
30
+
29
31
  assert_equal url, Tools.get_root(url)
30
32
  assert_equal url, Tools.get_root(url_with_slash)
31
33
  assert_equal url, Tools.get_root(url_with_path)
32
34
  end
33
35
 
34
36
  def test_relative_or_absolute_path
35
- absolute = %w(/root to this path)
36
- relative = %w(relative path from here)
37
+ absolute = %w[/root to this path]
38
+ relative = %w[relative path from here]
37
39
 
38
40
  absolute_path = Tools.relative_or_absolute_path(*absolute)
39
41
  relative_path = Tools.relative_or_absolute_path(*relative)
@@ -42,6 +44,8 @@ module Mangdown
42
44
  assert_equal Dir.pwd + '/relative/path/from/here', relative_path.to_s
43
45
  end
44
46
 
47
+ # rubocop:disable Metrics/AbcSize
48
+ # rubocop:disable Metrics/MethodLength
45
49
  def test_valid_path_name
46
50
  assert_equal 'Name 00001.ext', Tools.valid_path_name('Name 001.ext')
47
51
  assert_equal 'Name 00001', Tools.valid_path_name('Name 001')
@@ -57,6 +61,8 @@ module Mangdown
57
61
  '/path/to/Name 00001', Tools.valid_path_name('/path/to/Name 001')
58
62
  )
59
63
  end
64
+ # rubocop:enable Metrics/AbcSize
65
+ # rubocop:enable Metrics/MethodLength
60
66
 
61
67
  def test_file_type
62
68
  image_dir = Pathname.new(
@@ -68,8 +74,11 @@ module Mangdown
68
74
  assert_equal 'gif', Tools.image_extension(image_dir.join('naruto.gif'))
69
75
  end
70
76
 
77
+ # rubocop:disable Metrics/AbcSize
78
+ # rubocop:disable Metrics/MethodLength
79
+ # rubocop:disable Metrics/CyclomaticComplexity
71
80
  def test_hydra_streaming
72
- objects = 3.times.map do |i|
81
+ objects = Array.new(3) do |i|
73
82
  url = "http://www.anything-#{i}.com/"
74
83
  stub_request(:get, url).to_return(
75
84
  body: "<html><body>Body-#{i}</body>"
@@ -84,13 +93,14 @@ module Mangdown
84
93
  bodies = []
85
94
  fails = []
86
95
  complete = []
87
-
88
- Tools.hydra_streaming(objects) do |status, object, data=nil|
96
+
97
+ Tools.hydra_streaming(objects) do |status, object, data = nil|
89
98
  case status
90
99
  when :before
91
100
  return true unless objects.index(object) == 1
92
101
  when :succeeded
93
102
  # Do nothing
103
+ nil
94
104
  when :failed
95
105
  fails << object
96
106
  when :complete
@@ -105,5 +115,8 @@ module Mangdown
105
115
  refute_includes complete, objects.delete(1)
106
116
  assert_equal objects, complete
107
117
  end
118
+ # rubocop:enable Metrics/AbcSize
119
+ # rubocop:enable Metrics/MethodLength
120
+ # rubocop:enable Metrics/CyclomaticComplexity
108
121
  end
109
122
  end
@@ -1,44 +1,57 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  class MangdownTest < Minitest::Test
4
-
5
- def doc
6
- Nokogiri::HTML("<html></html>")
6
+ def setup
7
+ register_test_adapter
7
8
  end
8
9
 
9
10
  def test_register_adapter
10
11
  adapters_before = Mangdown.adapters.length
11
12
 
12
- bogus = Class.new(Mangdown::Adapter::Base)
13
+ bogus = Object.new
13
14
 
14
15
  Mangdown.register_adapter(:bogus_adapter, bogus)
15
16
 
16
- assert Mangdown.adapters.length == adapters_before + 1
17
-
17
+ assert_equal adapters_before + 1, Mangdown.adapters.length
18
+ ensure
18
19
  Mangdown.adapters.delete(:bogus_adapter)
19
20
  end
20
21
 
21
- def test_adapter
22
- assert_equal TestAdapter, Mangdown.adapter(:test)
23
- assert_equal TestAdapter, Mangdown.adapter(:test)
22
+ def test_manga_with_url
23
+ Mangdown.manga('uri')
24
+
25
+ assert_equal 1, test_adapter.manga_called
24
26
  end
25
27
 
26
- def test_adapter!
27
- assert_instance_of Mangdown::Adapter::Proxy, Mangdown.adapter!("test")
28
+ def test_chapter_with_url
29
+ Mangdown.chapter('uri')
28
30
 
29
- assert_instance_of TestAdapter, Mangdown.adapter!("test").adapter
30
- assert_instance_of TestAdapter, Mangdown.adapter!(nil, "test").adapter
31
- assert_instance_of TestAdapter, Mangdown.adapter!(
32
- "test", nil, doc, "test"
33
- ).adapter
31
+ assert_equal 1, test_adapter.chapter_called
32
+ end
33
+
34
+ def test_page_with_url
35
+ Mangdown.page('uri')
34
36
 
35
- adapters = Mangdown.adapters.dup
36
- Mangdown.adapters.clear
37
+ assert_equal 1, test_adapter.page_called
38
+ end
39
+
40
+ def test_manga_with_instance
41
+ Mangdown.manga(TestAdapter::Manga.new(url: 'url'))
42
+
43
+ assert_nil test_adapter.manga_called
44
+ end
45
+
46
+ def test_chapter_with_instance
47
+ Mangdown.chapter(TestAdapter::Chapter.new(url: 'url'))
48
+
49
+ assert_nil test_adapter.chapter_called
50
+ end
37
51
 
38
- assert_raises(Mangdown::Adapter::NoAdapterError) {
39
- Mangdown.adapter!(nil)
40
- }
52
+ def test_page_with_instance
53
+ Mangdown.page(TestAdapter::Page.new(url: 'url'))
41
54
 
42
- Mangdown.adapters.merge!(adapters)
55
+ assert_nil test_adapter.page_called
43
56
  end
44
57
  end
@@ -1,105 +1,85 @@
1
- class TestAdapter < Mangdown::Adapter::Base
1
+ # frozen_string_literal: true
2
2
 
3
- site :test
4
-
5
- def self.for?(url_or_site)
3
+ # rubocop:disable Naming/MemoizedInstanceVariableName
4
+ class TestAdapter
5
+ def for?(_url)
6
6
  true
7
7
  end
8
8
 
9
- # Overwrite if you want to check the uri if it belongs to a manga list
10
- def is_manga_list?(uri = @uri)
11
- true
9
+ def manga_list
10
+ MangaList.new
12
11
  end
13
12
 
14
- # Must return true/false if uri represents a manga for adapter
15
- def is_manga?(uri = @uri)
16
- true
17
- end
13
+ def manga(url)
14
+ @manga_called ||= 0
15
+ @manga_called += 1
18
16
 
19
- # Must return true/false if uri represents a chapter for adapter
20
- def is_chapter?(uri = @uri)
21
- true
17
+ @manga_stub ||= Manga.load(url)
22
18
  end
19
+ attr_reader :manga_called, :manga_stub
23
20
 
24
- # Must return true/false if uri represents a page for adapter
25
- def is_page?(uri = @uri)
26
- true
27
- end
21
+ def chapter(url)
22
+ @chapter_called ||= 0
23
+ @chapter_called += 1
28
24
 
29
- # Return Array of Hash with keys: :uri, :name, :site
30
- def manga_list
31
- [
32
- { uri: "http://www.manga.com/naruto", name: "Naruto", site: site },
33
- { uri: "http://www.manga.com/bleach", name: "Bleach", site: site },
34
- { uri: "http://www.manga.com/one-piece", name: "One Piece", site: site }
35
- ]
25
+ @chapter_stub ||= Chapter.load(url)
36
26
  end
27
+ attr_reader :chapter_called, :chapter_stub
37
28
 
38
- # Return Hash with keys: :uri, :name, :site
39
- def manga
40
- { uri: "http://www.manga.com/naruto", name: "Naruto", site: site }
41
- end
29
+ def page(url)
30
+ @page_called ||= 0
31
+ @page_called += 1
42
32
 
43
- # Return Array of Hash with keys: :uri, :name, :site
44
- def chapter_list
45
- [
46
- { uri: "http://www.manga.com/naruto/1", name: "Naruto", site: site },
47
- { uri: "http://www.manga.com/naruto/2", name: "Naruto", site: site },
48
- { uri: "http://www.manga.com/naruto/3", name: "Naruto", site: site },
49
- { uri: "http://www.manga.com/naruto/4", name: "Naruto", site: site },
50
- { uri: "http://www.manga.com/naruto/5", name: "Naruto", site: site }
51
- ]
33
+ @page_stub ||= Page.load(url)
52
34
  end
35
+ attr_reader :page_called, :page_stub
53
36
 
54
- # Return Hash with keys: :uri, :name, :chapter, :manga, :site
55
- def chapter
56
- { uri: "http://www.manga.com/naruto/2",
57
- name: "Naruto - Chapter 2",
58
- chapter: 2,
59
- manga: "Naruto",
60
- site: site
61
- }
62
- end
37
+ class Manga < Scrapework::Object
38
+ attribute :name
39
+
40
+ def chapters
41
+ @chapters_called ||= 0
42
+ @chapters_called += 1
43
+
44
+ @chapters_stub ||= []
45
+ end
46
+ attr_reader :chapters_called, :chapters_stub
63
47
 
64
- # Return Array of Hash with keys: :uri, :name, :site
65
- def page_list
66
- [
67
- {
68
- uri: "http://www.manga.com/naruto/2/page/1",
69
- name: "Naruto - Chapter 2 - page 1",
70
- site: site
71
- },
72
- {
73
- uri: "http://www.manga.com/naruto/2/page/2",
74
- name: "Naruto - Chapter 2 - page 2",
75
- site: site
76
- },
77
- {
78
- uri: "http://www.manga.com/naruto/2/page/3",
79
- name: "Naruto - Chapter 2 - page 3",
80
- site: site
81
- },
82
- {
83
- uri: "http://www.manga.com/naruto/2/page/4",
84
- name: "Naruto - Chapter 2 - page 4",
85
- site: site
86
- },
87
- {
88
- uri: "http://www.manga.com/naruto/2/page/5",
89
- name: "Naruto - Chapter 2 - page 5",
90
- site: site
91
- }
92
- ]
48
+ map(:name) {}
49
+
50
+ def html
51
+ ''
52
+ end
93
53
  end
54
+ class Chapter < Scrapework::Object
55
+ attribute :name
56
+ attribute :number
57
+
58
+ attr_accessor :manga
94
59
 
95
- # Return Hash with keys: :uri, :name, :site
96
- def page
97
- path = File.expand_path("../fixtures/images/naruto.jpg", __FILE__)
98
- { uri: path, name: "Naruto - Chapter 2 - page 2", site: site }
60
+ def pages
61
+ @pages_called ||= 0
62
+ @pages_called += 1
63
+
64
+ @pages_stub ||= []
65
+ end
66
+ attr_reader :pages_called, :pages_stub
67
+
68
+ map(:name) {}
69
+ map(:number) {}
70
+
71
+ def html
72
+ ''
73
+ end
99
74
  end
75
+ class Page < Scrapework::Object
76
+ attribute :name
100
77
 
101
- def doc
102
- @doc
78
+ map(:name) {}
79
+
80
+ def html
81
+ ''
82
+ end
103
83
  end
104
84
  end
105
-
85
+ # rubocop:enable Naming/MemoizedInstanceVariableName
@@ -1,8 +1,56 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'minitest/autorun'
2
4
  require 'minitest/pride'
5
+ require 'warning'
6
+
7
+ Gem.path.each do |path|
8
+ Warning.ignore(//, path)
9
+ end
10
+ Warning.ignore(/method redefined/)
11
+ Warning.ignore(/previous definition/)
3
12
 
4
13
  require 'mangdown'
5
14
 
6
15
  require_relative 'support/test_adapter'
7
16
 
8
- Mangdown.register_adapter(:test, TestAdapter)
17
+ # rubocop:disable Style/TrivialAccessors
18
+ def test_adapter
19
+ @test_adapter
20
+ end
21
+ # rubocop:enable Style/TrivialAccessors
22
+
23
+ def register_test_adapter
24
+ @test_adapter = TestAdapter.new
25
+
26
+ Mangdown.register_adapter(:test, test_adapter)
27
+ end
28
+
29
+ # rubocop:disable Metrics/MethodLength
30
+ def with_stubbed_cbz
31
+ Mangdown::CBZ.class_eval do
32
+ class << self
33
+ alias_method :old_all, :all
34
+ alias_method :old_one, :one
35
+
36
+ def all(path)
37
+ ['cbz_called', path]
38
+ end
39
+
40
+ def one(path)
41
+ ['cbz_called', path]
42
+ end
43
+ end
44
+ end
45
+ yield
46
+ ensure
47
+ Mangdown::CBZ.class_eval do
48
+ class << self
49
+ # rubocop:disable Lint/DuplicateMethods
50
+ alias_method :all, :old_all
51
+ alias_method :one, :old_one
52
+ # rubocop:enable Lint/DuplicateMethods
53
+ end
54
+ end
55
+ end
56
+ # rubocop:enable Metrics/MethodLength
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mangdown
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.8
4
+ version: 0.21.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - jphager2
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-20 00:00:00.000000000 Z
11
+ date: 2019-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -66,20 +66,62 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: scrapework
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
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: sequel
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
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: sqlite3
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
69
111
  - !ruby/object:Gem::Dependency
70
112
  name: typhoeus
71
113
  requirement: !ruby/object:Gem::Requirement
72
114
  requirements:
73
115
  - - "~>"
74
116
  - !ruby/object:Gem::Version
75
- version: '0.7'
117
+ version: '1.3'
76
118
  type: :runtime
77
119
  prerelease: false
78
120
  version_requirements: !ruby/object:Gem::Requirement
79
121
  requirements:
80
122
  - - "~>"
81
123
  - !ruby/object:Gem::Version
82
- version: '0.7'
124
+ version: '1.3'
83
125
  - !ruby/object:Gem::Dependency
84
126
  name: minitest
85
127
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +164,20 @@ dependencies:
122
164
  - - ">="
123
165
  - !ruby/object:Gem::Version
124
166
  version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: warning
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
125
181
  - !ruby/object:Gem::Dependency
126
182
  name: webmock
127
183
  requirement: !ruby/object:Gem::Requirement
@@ -144,33 +200,29 @@ extra_rdoc_files: []
144
200
  files:
145
201
  - LICENSE
146
202
  - README.md
203
+ - db/migrate/001_create_manga_table.rb
147
204
  - lib/mangdown.rb
148
- - lib/mangdown/adapter.rb
205
+ - lib/mangdown/adapter/manga_bat.rb
149
206
  - lib/mangdown/adapter/mangareader.rb
150
207
  - lib/mangdown/adapter/no_adapter_error.rb
151
208
  - lib/mangdown/adapter/not_implemented_error.rb
152
- - lib/mangdown/adapter/proxy.rb
153
209
  - lib/mangdown/chapter.rb
154
210
  - lib/mangdown/client.rb
211
+ - lib/mangdown/db.rb
212
+ - lib/mangdown/db/manga.rb
155
213
  - lib/mangdown/error.rb
156
214
  - lib/mangdown/manga.rb
157
- - lib/mangdown/manga_list.rb
158
- - lib/mangdown/md_hash.rb
159
215
  - lib/mangdown/page.rb
160
216
  - lib/mangdown/support/cbz.rb
161
217
  - lib/mangdown/support/equality.rb
162
218
  - lib/mangdown/support/logging.rb
163
- - lib/mangdown/support/properties.rb
164
219
  - lib/mangdown/support/tools.rb
165
220
  - lib/mangdown/version.rb
166
- - test/lib/mangdown/adapter_test.rb
167
221
  - test/lib/mangdown/chapter_test.rb
168
- - test/lib/mangdown/manga_list_test.rb
169
222
  - test/lib/mangdown/manga_test.rb
170
223
  - test/lib/mangdown/support/cbz_test.rb
171
224
  - test/lib/mangdown/support/equality_test.rb
172
225
  - test/lib/mangdown/support/logging_test.rb
173
- - test/lib/mangdown/support/properties_test.rb
174
226
  - test/lib/mangdown/support/tools_test.rb
175
227
  - test/lib/mangdown_test.rb
176
228
  - test/support/test_adapter.rb
@@ -190,9 +242,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
190
242
  version: '0'
191
243
  required_rubygems_version: !ruby/object:Gem::Requirement
192
244
  requirements:
193
- - - ">="
245
+ - - ">"
194
246
  - !ruby/object:Gem::Version
195
- version: '0'
247
+ version: 1.3.1
196
248
  requirements: []
197
249
  rubygems_version: 3.0.3
198
250
  signing_key: