status_page_ruby 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.
Files changed (41) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +25 -0
  3. data/.gitignore +3 -0
  4. data/.rubocop.yml +10 -0
  5. data/Gemfile +14 -0
  6. data/Gemfile.lock +61 -0
  7. data/README.md +53 -0
  8. data/bin/status-page +6 -0
  9. data/lib/status_page_ruby.rb +20 -0
  10. data/lib/status_page_ruby/pages/base.rb +52 -0
  11. data/lib/status_page_ruby/pages/bitbucket.rb +14 -0
  12. data/lib/status_page_ruby/pages/cloudflare.rb +29 -0
  13. data/lib/status_page_ruby/pages/github.rb +19 -0
  14. data/lib/status_page_ruby/pages/rubygems.rb +14 -0
  15. data/lib/status_page_ruby/repositories/status.rb +40 -0
  16. data/lib/status_page_ruby/services/backup_data.rb +15 -0
  17. data/lib/status_page_ruby/services/build_history_table.rb +32 -0
  18. data/lib/status_page_ruby/services/build_log_table.rb +14 -0
  19. data/lib/status_page_ruby/services/build_stats_table.rb +79 -0
  20. data/lib/status_page_ruby/services/pull_statuses.rb +44 -0
  21. data/lib/status_page_ruby/services/restore_data.rb +15 -0
  22. data/lib/status_page_ruby/status.rb +36 -0
  23. data/lib/status_page_ruby/storage.rb +55 -0
  24. data/lib/status_page_ruby/version.rb +3 -0
  25. data/lib/status_page_ruby_cli.rb +76 -0
  26. data/spec/lib/status_page_ruby/pages/bitbucket_spec.rb +39 -0
  27. data/spec/lib/status_page_ruby/pages/cloudflare_spec.rb +64 -0
  28. data/spec/lib/status_page_ruby/pages/github_spec.rb +57 -0
  29. data/spec/lib/status_page_ruby/pages/rubygems_spec.rb +39 -0
  30. data/spec/lib/status_page_ruby/repositories/status_spec.rb +124 -0
  31. data/spec/lib/status_page_ruby/services/backup_data_spec.rb +13 -0
  32. data/spec/lib/status_page_ruby/services/build_history_table_spec.rb +71 -0
  33. data/spec/lib/status_page_ruby/services/build_log_table_spec.rb +43 -0
  34. data/spec/lib/status_page_ruby/services/build_stats_table_spec.rb +72 -0
  35. data/spec/lib/status_page_ruby/services/pull_statuses_spec.rb +30 -0
  36. data/spec/lib/status_page_ruby/services/restore_data_spec.rb +13 -0
  37. data/spec/lib/status_page_ruby/status_spec.rb +65 -0
  38. data/spec/lib/status_page_ruby/storage_spec.rb +134 -0
  39. data/spec/spec_helper.rb +15 -0
  40. data/status_page_ruby.gemspec +22 -0
  41. metadata +139 -0
@@ -0,0 +1,134 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe StatusPageRuby::Storage do
4
+ describe '.new' do
5
+ subject { described_class.new(data_file_path) }
6
+ let(:data_file_path) { double(to_s: double) }
7
+
8
+ before do
9
+ allow(File).to receive(:file?).with(data_file_path.to_s) { is_file }
10
+ allow(File).to receive(:readable?).with(data_file_path.to_s) { is_readable }
11
+ end
12
+
13
+ context 'when file valid' do
14
+ let(:is_file) { true }
15
+ let(:is_readable) { true }
16
+
17
+ it { expect(subject.data_file_path).to eq(data_file_path) }
18
+ end
19
+
20
+ context 'when file invalid' do
21
+ let(:is_file) { false }
22
+ let(:is_readable) { false }
23
+
24
+ it { expect { subject }.to raise_exception(ArgumentError, 'Invalid file given.') }
25
+
26
+ context 'when file is not file' do
27
+ let(:is_readable) { true }
28
+
29
+ it { expect { subject }.to raise_exception(ArgumentError, 'Invalid file given.') }
30
+ end
31
+
32
+ context 'when file is not readable' do
33
+ let(:is_file) { true }
34
+
35
+ it { expect { subject }.to raise_exception(ArgumentError, 'Invalid file given.') }
36
+ end
37
+ end
38
+ end
39
+
40
+ describe '#include?' do
41
+ let(:data_file_path) { Tempfile.new('data_file_path').path }
42
+
43
+ before { File.write(data_file_path, "a,a,a\n1,1,1\n,,\n") }
44
+
45
+ [
46
+ [%w[a a a], true],
47
+ [%w[1 1 1], true],
48
+ [[1, 1, 1], false],
49
+ [['', '', ''], false],
50
+ [[nil, nil, nil], true]
51
+ ].each do |record, result|
52
+ context "when record: #{record.inspect}" do
53
+ subject { described_class.new(data_file_path).include?(record) }
54
+
55
+ it { is_expected.to eq(result) }
56
+ end
57
+ end
58
+ end
59
+
60
+ describe '#write' do
61
+ let(:data_file_path) { Tempfile.new('data_file_path').path }
62
+
63
+ before { File.write(data_file_path, "a,a,a\n") }
64
+
65
+ [
66
+ [[nil, nil, nil], "a,a,a\n,,\n"],
67
+ [['', '', ''], "a,a,a\n\"\",\"\",\"\"\n"],
68
+ [[1, 2, 3], "a,a,a\n1,2,3\n"],
69
+ [['Github', 'up', 1_539_506_590], "a,a,a\nGithub,up,1539506590\n"]
70
+ ].each do |record, result|
71
+ context "when record: #{record.inspect}" do
72
+ it do
73
+ described_class.new(data_file_path).write(record)
74
+ expect(File.read(data_file_path)).to eq(result)
75
+ end
76
+ end
77
+ end
78
+ end
79
+
80
+ describe '#merge' do
81
+ let(:data_file_path) { Tempfile.new('data_file_path').path }
82
+
83
+ before { File.write(data_file_path, "a,a,a\n") }
84
+
85
+ [
86
+ [[%w[a a a], %w[b b b]], "a,a,a\nb,b,b\n"],
87
+ [[%w[b b b]], "a,a,a\nb,b,b\n"],
88
+ [[%w[a a a]], "a,a,a\n"]
89
+ ].each do |records, result|
90
+ context "when records: #{records.inspect}" do
91
+ it do
92
+ described_class.new(data_file_path).merge(records)
93
+ expect(File.read(data_file_path)).to eq(result)
94
+ end
95
+ end
96
+ end
97
+ end
98
+
99
+ describe '#copy' do
100
+ let(:data_file_path) { Tempfile.new('data_file_path').path }
101
+ let(:target_file_path) { Tempfile.new('data_file_path').path }
102
+
103
+ before { File.write(data_file_path, "a,a,a\nb,b,b\nc,c,c\n") }
104
+
105
+ it do
106
+ described_class.new(data_file_path).copy(target_file_path)
107
+ expect(File.read(target_file_path)).to eq("a,a,a\nb,b,b\nc,c,c\n")
108
+ end
109
+ end
110
+
111
+ describe '#restore' do
112
+ let(:data_file_path) { Tempfile.new('data_file_path').path }
113
+ let(:new_file_path) { Tempfile.new('new_file_path').path }
114
+
115
+ [
116
+ %W[a,a,a\nc,c,c\n a,a,a\nb,b,b\n a,a,a\nb,b,b\nc,c,c\n],
117
+ %W[a,a,a\nc,c,c\n a,a,a\n a,a,a\nc,c,c\n],
118
+ %W[a,a,a\nc,c,c\n a,a,a\n a,a,a\nc,c,c\n],
119
+ %W[a,a,a\nc,c,c\n a,a,a\nc,c,c\n a,a,a\nc,c,c\n]
120
+ ].each do |data_file_content, new_file_content, result|
121
+ context do
122
+ before do
123
+ File.write(data_file_path, data_file_content)
124
+ File.write(new_file_path, new_file_content)
125
+ end
126
+
127
+ it do
128
+ described_class.new(data_file_path).restore(new_file_path)
129
+ expect(File.read(data_file_path)).to eq(result)
130
+ end
131
+ end
132
+ end
133
+ end
134
+ end
@@ -0,0 +1,15 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'tempfile'
5
+ require 'timecop'
6
+
7
+ require 'status_page_ruby'
8
+ require 'status_page_ruby_cli'
9
+
10
+ RSpec.configure do |config|
11
+ config.disable_monkey_patching!
12
+ config.after do
13
+ Timecop.return
14
+ end
15
+ end
@@ -0,0 +1,22 @@
1
+ require File.expand_path('lib/status_page_ruby/version', __dir__)
2
+
3
+ Gem::Specification.new do |gem|
4
+ gem.name = 'status_page_ruby'
5
+ gem.version = StatusPageRuby::VERSION
6
+ gem.date = '2018-10-14'
7
+ gem.summary = 'Status page commandline tool.'
8
+ gem.description = 'Status page tool parses, stores and report statuses of web services.'
9
+ gem.authors = ['Konstantin Lynda']
10
+ gem.email = 'knlynda@gmail.com'
11
+ gem.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
12
+ gem.test_files = gem.files.grep(%r{^spec/})
13
+ gem.require_paths = ['lib']
14
+ gem.bindir = 'bin'
15
+ gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
16
+ gem.homepage = 'http://rubygems.org/gems/status_page_ruby'
17
+ gem.license = 'MIT'
18
+
19
+ gem.add_runtime_dependency 'nokogiri', '1.8.5'
20
+ gem.add_runtime_dependency 'terminal-table', '1.8.0'
21
+ gem.add_runtime_dependency 'thor', '0.20.0'
22
+ end
metadata ADDED
@@ -0,0 +1,139 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: status_page_ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Konstantin Lynda
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-10-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: nokogiri
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.8.5
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.8.5
27
+ - !ruby/object:Gem::Dependency
28
+ name: terminal-table
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 1.8.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 1.8.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: thor
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 0.20.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 0.20.0
55
+ description: Status page tool parses, stores and report statuses of web services.
56
+ email: knlynda@gmail.com
57
+ executables:
58
+ - status-page
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".circleci/config.yml"
63
+ - ".gitignore"
64
+ - ".rubocop.yml"
65
+ - Gemfile
66
+ - Gemfile.lock
67
+ - README.md
68
+ - bin/status-page
69
+ - lib/status_page_ruby.rb
70
+ - lib/status_page_ruby/pages/base.rb
71
+ - lib/status_page_ruby/pages/bitbucket.rb
72
+ - lib/status_page_ruby/pages/cloudflare.rb
73
+ - lib/status_page_ruby/pages/github.rb
74
+ - lib/status_page_ruby/pages/rubygems.rb
75
+ - lib/status_page_ruby/repositories/status.rb
76
+ - lib/status_page_ruby/services/backup_data.rb
77
+ - lib/status_page_ruby/services/build_history_table.rb
78
+ - lib/status_page_ruby/services/build_log_table.rb
79
+ - lib/status_page_ruby/services/build_stats_table.rb
80
+ - lib/status_page_ruby/services/pull_statuses.rb
81
+ - lib/status_page_ruby/services/restore_data.rb
82
+ - lib/status_page_ruby/status.rb
83
+ - lib/status_page_ruby/storage.rb
84
+ - lib/status_page_ruby/version.rb
85
+ - lib/status_page_ruby_cli.rb
86
+ - spec/lib/status_page_ruby/pages/bitbucket_spec.rb
87
+ - spec/lib/status_page_ruby/pages/cloudflare_spec.rb
88
+ - spec/lib/status_page_ruby/pages/github_spec.rb
89
+ - spec/lib/status_page_ruby/pages/rubygems_spec.rb
90
+ - spec/lib/status_page_ruby/repositories/status_spec.rb
91
+ - spec/lib/status_page_ruby/services/backup_data_spec.rb
92
+ - spec/lib/status_page_ruby/services/build_history_table_spec.rb
93
+ - spec/lib/status_page_ruby/services/build_log_table_spec.rb
94
+ - spec/lib/status_page_ruby/services/build_stats_table_spec.rb
95
+ - spec/lib/status_page_ruby/services/pull_statuses_spec.rb
96
+ - spec/lib/status_page_ruby/services/restore_data_spec.rb
97
+ - spec/lib/status_page_ruby/status_spec.rb
98
+ - spec/lib/status_page_ruby/storage_spec.rb
99
+ - spec/spec_helper.rb
100
+ - status_page_ruby.gemspec
101
+ homepage: http://rubygems.org/gems/status_page_ruby
102
+ licenses:
103
+ - MIT
104
+ metadata: {}
105
+ post_install_message:
106
+ rdoc_options: []
107
+ require_paths:
108
+ - lib
109
+ required_ruby_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ required_rubygems_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ requirements: []
120
+ rubyforge_project:
121
+ rubygems_version: 2.6.11
122
+ signing_key:
123
+ specification_version: 4
124
+ summary: Status page commandline tool.
125
+ test_files:
126
+ - spec/lib/status_page_ruby/pages/bitbucket_spec.rb
127
+ - spec/lib/status_page_ruby/pages/cloudflare_spec.rb
128
+ - spec/lib/status_page_ruby/pages/github_spec.rb
129
+ - spec/lib/status_page_ruby/pages/rubygems_spec.rb
130
+ - spec/lib/status_page_ruby/repositories/status_spec.rb
131
+ - spec/lib/status_page_ruby/services/backup_data_spec.rb
132
+ - spec/lib/status_page_ruby/services/build_history_table_spec.rb
133
+ - spec/lib/status_page_ruby/services/build_log_table_spec.rb
134
+ - spec/lib/status_page_ruby/services/build_stats_table_spec.rb
135
+ - spec/lib/status_page_ruby/services/pull_statuses_spec.rb
136
+ - spec/lib/status_page_ruby/services/restore_data_spec.rb
137
+ - spec/lib/status_page_ruby/status_spec.rb
138
+ - spec/lib/status_page_ruby/storage_spec.rb
139
+ - spec/spec_helper.rb