kapnismology 0.0.3 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 565f475fcc90aab29030360616ecfd60023389ca
4
- data.tar.gz: 7492b82b186be20419569b6ca72daa80dce01304
3
+ metadata.gz: 1a05110e9b2addcd9d077d36b678e0cffe0d3a97
4
+ data.tar.gz: 2bdfbe64c9780805ef8f64f2e4de157f567720f5
5
5
  SHA512:
6
- metadata.gz: e71b5b30517b5982b45d04415a46867f743e534641332cca94d3fcb7415b5c688fb22e32eff01de78a6ac10c53fe137e10ae37080027480e50b0003ef06c709b
7
- data.tar.gz: 72c9f4d404408e29afb03760a226ed486b5a486a800dd312b5373918e816847fdf18f057c18c52677b88e42721698dacc2f60dbeab91d417f149c43be5fcd762
6
+ metadata.gz: eee5969dccaa61696a93b799045adcba90693b46717011e86c1c52b58c794b620ce9efb576b81092f353166cf24431c8ce4e2e5be7b20fb458d8dfc150cff963
7
+ data.tar.gz: ee025709b71099a390c5bf88c4fc6132fb2d52fa8199f7844d4f9020449988a4138dba692e31f35ee64469933df6493b4315e689889fe25508991239a7c1b51d
@@ -1,8 +1,16 @@
1
1
  module Kapnismology
2
2
  class SmokeTestsController < ApplicationController
3
3
  def index
4
- result = SmokeTest.result
5
- render text: result.to_json
4
+ evaluations = SmokeTest.evaluations
5
+ render text: evaluations.to_json, status: status(evaluations)
6
6
  end
7
+
8
+ private
9
+ def status(evaluations)
10
+ if evaluations.passed?
11
+ :ok
12
+ else
13
+ :service_unavailable
14
+ end
7
15
  end
8
16
  end
data/lib/kapnismology.rb CHANGED
@@ -2,8 +2,8 @@
2
2
  unless defined?(Kapnismology::Engine)
3
3
  require "kapnismology/engine"
4
4
  end
5
- require 'contracts'
6
5
  require 'kapnismology/result'
7
6
  require 'kapnismology/evaluation'
7
+ require 'kapnismology/evaluation_collection'
8
8
  require 'kapnismology/rake_task'
9
9
  require 'kapnismology/smoke_test'
@@ -1,4 +1,5 @@
1
1
  module Kapnismology
2
+ begin
2
3
  class Engine < ::Rails::Engine
3
4
  initializer "kapnismology.add_autoload_paths", before: :set_autoload_paths do |app|
4
5
  app.config.eager_load_paths += Dir["#{app.config.root}/lib/**/*"]
@@ -17,5 +18,7 @@ module Kapnismology
17
18
  end
18
19
  end
19
20
  end
20
-
21
+ rescue NameError => e
22
+ puts "Incompatible Rails version #{e}"
23
+ end
21
24
  end
@@ -1,18 +1,18 @@
1
+ require 'json'
2
+
1
3
  module Kapnismology
2
4
 
3
5
  # Mapping of test_name => result for each smoke test
4
6
  class Evaluation
5
- include Contracts
6
7
  extend Forwardable
7
8
  attr_reader :test_name
8
9
  def_delegators :@result, :data, :passed, :message
9
10
 
10
- # Contract String, Any
11
11
  def initialize(test_name, result)
12
12
  @test_name, @result = test_name, result
13
13
  end
14
14
 
15
- def to_json
15
+ def to_json(_options = nil)
16
16
  {test_name => @result.to_hash}.to_json
17
17
  end
18
18
  end
@@ -0,0 +1,35 @@
1
+ require 'json'
2
+
3
+ module Kapnismology
4
+ class EvaluationCollection
5
+ include Enumerable
6
+
7
+ def initialize(smoke_tests)
8
+ @smoke_tests = smoke_tests
9
+ end
10
+
11
+ def each(&block)
12
+ evaluations.each do |member|
13
+ block.call(member)
14
+ end
15
+ end
16
+
17
+ def passed?
18
+ evaluations.all?{|evaluation| evaluation.passed}
19
+ end
20
+
21
+ def to_json
22
+ evaluations.to_json
23
+ end
24
+
25
+ private
26
+
27
+ def evaluations
28
+ @evaluations ||= @smoke_tests.map do |smoke_test|
29
+ result = smoke_test.result
30
+ Evaluation.new(smoke_test.name, result) if result
31
+ end.compact
32
+ end
33
+ end
34
+
35
+ end
@@ -1,14 +1,13 @@
1
1
  module Kapnismology
2
2
  class RakeTask
3
3
  def output
4
- evaluations = SmokeTest.result
4
+ evaluations = SmokeTest.evaluations
5
5
  evaluations.each do |evaluation|
6
6
  puts "The smoke test #{evaluation.test_name} #{passed_or_failed(evaluation.passed)}"
7
7
  puts evaluation.message
8
8
  puts
9
9
  end
10
- all_passed = evaluations.map(&:passed).inject{|m, result| m && result}
11
- fail 'We have some failures in our smoke tests' unless all_passed
10
+ fail 'We have some failures in our smoke tests' unless evaluations.passed?
12
11
  end
13
12
 
14
13
  def passed_or_failed(passed)
@@ -7,10 +7,8 @@ module Kapnismology
7
7
  # * passed : Boolean: true -> test passed, false -> test failed
8
8
  # * message: String: extra message set by the test if it wants to provide more information
9
9
  class Result
10
- include Contracts
11
10
  attr_reader :data, :passed, :message
12
11
 
13
- # Contract Any, Bool, String => nil
14
12
  def initialize(data, passed, message)
15
13
  @data, @passed, @message = data, passed, message
16
14
  end
@@ -25,10 +25,8 @@ module Kapnismology
25
25
  @smoke_tests ||= []
26
26
  end
27
27
 
28
- def result
29
- smoke_tests.inject([]) do |memo, smoke_test|
30
- memo.push(Evaluation.new(smoke_test.name, smoke_test.new.result))
31
- end
28
+ def evaluations
29
+ EvaluationCollection.new(smoke_tests)
32
30
  end
33
31
  end
34
32
 
@@ -1,3 +1,3 @@
1
1
  module Kapnismology
2
- VERSION = "0.0.3"
2
+ VERSION = "0.1.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kapnismology
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jordi Polo Carres
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-24 00:00:00.000000000 Z
11
+ date: 2015-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -25,47 +25,61 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '4.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: contracts
28
+ name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
33
+ version: '3.2'
34
+ type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '3.2'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: byebug
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.2'
47
+ version: '6.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.2'
54
+ version: '6.0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: byebug
56
+ name: mutant
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '4.0'
61
+ version: '0.8'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '4.0'
68
+ version: '0.8'
69
+ - !ruby/object:Gem::Dependency
70
+ name: mutant-rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.8'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.8'
69
83
  description: Engine for smoke tests and base classes
70
84
  email:
71
85
  - mumismo@gmail.com
@@ -81,12 +95,14 @@ files:
81
95
  - lib/kapnismology.rb
82
96
  - lib/kapnismology/engine.rb
83
97
  - lib/kapnismology/evaluation.rb
98
+ - lib/kapnismology/evaluation_collection.rb
84
99
  - lib/kapnismology/rake_task.rb
85
100
  - lib/kapnismology/result.rb
86
101
  - lib/kapnismology/smoke_test.rb
87
102
  - lib/kapnismology/version.rb
88
103
  homepage: https://www.github.com/JordiPolo/kapnismology
89
- licenses: []
104
+ licenses:
105
+ - MIT
90
106
  metadata: {}
91
107
  post_install_message:
92
108
  rdoc_options: []