webtester 0.1.7 → 0.1.8

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: 37bf1bc603cea43f4fe4fe16e6aa5fae4d7383df
4
- data.tar.gz: 58bf187b68b9116e753bdfc0ef027d7891fbb69a
3
+ metadata.gz: 9d35049f469df39296436703b57f6c4d8878cce6
4
+ data.tar.gz: aed420a2d891b4d6d24a6abd9c0ff095a6f820f7
5
5
  SHA512:
6
- metadata.gz: 558043b63feada3a8023047d544ac710c2d2cc63205e5f575b1bea9eb6b7b9d366be55dd42355565b74cd75a5dbf41eb924aa22f2a854e0c2c9d947aa323be5f
7
- data.tar.gz: 75c60a68763ffc4febe37bced03a59b60204f4040fff177777b1454d706e6cc5c039e576ab0561ad71b602151b54706de761baa5f179fda0af6a3f777bf5144d
6
+ metadata.gz: 5f6bce1498f0d96af8fa0406d3cb5d65da38606a78f1c59647fbe77aadb93b65ea70a1cc376d2c2ddbd72e75cbc4320d102c4354c003b0e6374e4dc173fced10
7
+ data.tar.gz: ba4aea03283c4017c4473078fa018addfee0ffc883f4afbfa30816df10cac786761d8e9af695eb8881a4dd82b3a2c6856337642ede57b46781882afd767530b9
data/lib/array.rb ADDED
@@ -0,0 +1,5 @@
1
+ class Array
2
+ def json
3
+ WT::JSONObject.parse(self)
4
+ end
5
+ end
data/lib/hash.rb ADDED
@@ -0,0 +1,5 @@
1
+ class Hash
2
+ def json
3
+ WT::JSONObject.parse(self)
4
+ end
5
+ end
@@ -0,0 +1,116 @@
1
+ module WT
2
+ class JSONObject
3
+ def self.parse(data)
4
+ if data.is_a?(Array) or data.is_a?(Hash)
5
+ return JSONObject.new(data)
6
+ else
7
+ return data
8
+ end
9
+ end
10
+
11
+ def method_missing(name, *args)
12
+ raise "Invalid number of params. To create new attribute you show pass exactly one parameter." unless args.length == 1
13
+
14
+ self.instance_eval %{
15
+ def #{name}=(val)
16
+ @#{name} = JSONObject.parse(val)
17
+ end
18
+
19
+ def #{name}
20
+ @#{name}
21
+ end
22
+ }
23
+
24
+ self.method("#{name}=").call(args[0])
25
+ end
26
+
27
+ def to_s
28
+ result = ""
29
+
30
+ if @__items__ and @__items__.length > 0 # Object is an Array
31
+ result = "["
32
+ @__items__.each do |item|
33
+ result += "#{item.to_s},"
34
+ end
35
+ result += "]"
36
+ else # Object is a HASH
37
+ result += "{"
38
+ self.instance_variables.each do |iv|
39
+ if iv.to_s != "@__items__"
40
+ v_name = iv.to_s
41
+ v_name['@'] = ''
42
+ v_value = self.method(v_name).call
43
+
44
+ non_quoted_condition = (v_value.is_a?(JSONObject) or
45
+ v_value.is_a?(Integer) or
46
+ v_value.is_a?(TrueClass) or
47
+ v_value.is_a?(FalseClass) or
48
+ v_value.is_a?(Float))
49
+
50
+ result += "\"#{v_name}\":"
51
+ result += "\"" unless non_quoted_condition
52
+ result += v_value.to_s
53
+ result += "\"" unless non_quoted_condition
54
+ result += ","
55
+ end
56
+ end
57
+ result += "}"
58
+ end
59
+
60
+ result
61
+ end
62
+
63
+ private
64
+
65
+ def initialize(data = nil)
66
+ if data && data.is_a?(Array)
67
+ create_array_object(data)
68
+ elsif data && data.is_a?(Hash)
69
+ create_hash_object(data)
70
+ end
71
+ end
72
+
73
+ def create_array_object(data)
74
+ self.instance_eval do
75
+ def [](i,v)
76
+ @__items__[i] = JSONObject.parse(v)
77
+ end
78
+
79
+ def [](i)
80
+ @__items__[i]
81
+ end
82
+
83
+ def <<(item)
84
+ @__items__ << JSONObject.parse(item)
85
+ return self
86
+ end
87
+
88
+ def each(&block)
89
+ @__items__.each &block
90
+ end
91
+ end
92
+
93
+ @__items__ = []
94
+
95
+ data.each do |obj|
96
+ self << JSONObject.parse(obj)
97
+ end
98
+ end
99
+
100
+ def create_hash_object(data)
101
+ data.each do |k,v|
102
+ self.instance_eval %{
103
+ def #{k}=(value)
104
+ @#{k} = value
105
+ end
106
+
107
+ def #{k}
108
+ @#{k}
109
+ end
110
+ }
111
+
112
+ self.method("#{k}=").call(JSONObject.parse(v))
113
+ end
114
+ end
115
+ end
116
+ end
data/lib/string.rb ADDED
@@ -0,0 +1,9 @@
1
+ require 'json'
2
+ require 'json_object'
3
+
4
+ class String
5
+ def json
6
+ json_data = JSON.parse(self)
7
+ WT::JSONObject.parse(json_data)
8
+ end
9
+ end
data/lib/webtester.rb CHANGED
@@ -3,6 +3,10 @@ require 'web_session'
3
3
  require 'request'
4
4
  require 'result'
5
5
  require 'cookie'
6
+ require 'json_object'
7
+ require 'string'
8
+ require 'hash'
9
+ require 'array'
6
10
 
7
11
  module WT
8
12
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webtester
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Diego F. Nascimento
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-28 00:00:00.000000000 Z
11
+ date: 2015-09-30 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: " A simple API to create HTTP Request tests. "
14
14
  email: diego.fnascimento@gmail.com
@@ -16,12 +16,16 @@ executables: []
16
16
  extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
+ - lib/array.rb
19
20
  - lib/assertion.rb
20
21
  - lib/colorize.rb
21
22
  - lib/cookie.rb
23
+ - lib/hash.rb
24
+ - lib/json_object.rb
22
25
  - lib/log.rb
23
26
  - lib/request.rb
24
27
  - lib/result.rb
28
+ - lib/string.rb
25
29
  - lib/test.rb
26
30
  - lib/web_session.rb
27
31
  - lib/webtester.rb