assert_json 0.2.1 → 0.2.2

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,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MzAxM2QzMGNiNzJiNDFhYTdkNWM0ZDZhNWRlYjIwMTMwZTUyN2Y4MQ==
5
- data.tar.gz: !binary |-
6
- MjhlOGNmZGE0YTlmYzA0YTIyYmM0MTVlMTlkMDZkYmMxMzBiZDVjYg==
2
+ SHA1:
3
+ metadata.gz: b01b0ad73c49c672ad096d20bc0c01989f47bd2f
4
+ data.tar.gz: 89aefc5f150b7955103a3099cca8a82ade7fa4a7
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- NGNjMTA3MDc5N2VlNjJjZjA2ZDEyMjhmOTQ3YjZhOTdkZjVjMWNjMjlkZDYw
10
- ZTMzYzkyNzgzNmRkOTU0NWZiMTViNTE0NGQzNzA3NGI5ODFiYWM0Y2VlYTAy
11
- ZDUxMThjMjE3YzJhMjU2MGFjZjc1ZTNiMjdkOWIxZjMzMjU0ZDM=
12
- data.tar.gz: !binary |-
13
- YjlkZTk5NTQzOWU5MGQ3MjY1OGY4ZWNkMjkzMmJmZTg2YjY5Y2M3YjdiMzc2
14
- ZTA3NzE3NjgxYjc5ZmEzMTYzZTNhODRjY2ZlODNhMWE1OTJjMmJkYmE2MmEw
15
- ODRlYWZjYjU2OGZiMTk5NDk4MGFhNDUyYWRjN2FhYjA3YmI2MDI=
6
+ metadata.gz: d25fdba2cfa9776c19bb5ddc62cdae83b1fd3d603f8440c331b56c9f7849ae261c833e30bfaaecad0a06d00bc8ee069c58402508978829de381146df84e3a8ba
7
+ data.tar.gz: 39e7799b0c82bf725a396b187ef4f2596da1888d583dfeeb99e960d4dfb956e2b9c74aec6fc3546f23b4b30186fd881777533c4ec1c64e21b5052262e7ecd916
data/.travis.yml ADDED
@@ -0,0 +1,14 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 1.9.3
5
+ - 2.0.0
6
+ - 2.1
7
+ # - jruby-18mode # JRuby in 1.8 mode
8
+ - jruby-19mode # JRuby in 1.9 mode
9
+ - rbx-2.2.1
10
+
11
+ matrix:
12
+ allow_failures:
13
+ - rvm: rbx-2.2.1
14
+ - rvm: jruby-19mode
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 0.3.0 (not yet released)
4
+
5
+ * allow Ruby symbols as keys and values (thanks to [@pgaertig](https://github.com/pgaertig), see [issue 4](https://github.com/alto/assert_json/issues/4))
6
+
7
+ ## 0.2.2
8
+
9
+ * allowing to validate real numbers (thanks to [@plu](https://github.com/plu), see [issue 6](https://github.com/alto/assert_json/pull/6))
10
+
3
11
  ## 0.2.1
4
12
 
5
13
  * correctly match boolean and null values (thanks to [@pgaertig](https://github.com/pgaertig), see [issue 3](https://github.com/alto/assert_json/issues/3))
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # AssertJson #
2
2
 
3
+ [![Build Status](https://travis-ci.org/alto/assert_json.svg?branch=master)](https://travis-ci.org/alto/assert_json)
4
+
3
5
  Test your JSON strings.
4
6
 
5
7
  ## Installation ##
@@ -25,14 +27,15 @@ class MyActionTest < ActionController::TestCase
25
27
 
26
28
  def test_my_action
27
29
  get :my_action, :format => 'json'
28
- # => @response.body= '{"key":[{"inner_key1":"value1"},{"inner_key2":"value2"}]}'
30
+ # => @response.body= '{"key":[{"inner_key1":"value1"},{"inner_key2":"value2"}, {'special-key': null}]}'
29
31
 
30
32
  assert_json(@response.body) do
31
- has 'key' do
32
- has 'inner_key1', 'value1'
33
- has 'inner_key2', /lue2/
33
+ has :key do
34
+ has :inner_key1, 'value1'
35
+ has :inner_key2, /lue2/
34
36
  end
35
- has_not 'key_not_included'
37
+ has 'special-key', nil
38
+ has_not :key_not_included
36
39
  end
37
40
  end
38
41
 
@@ -45,9 +48,9 @@ use `item(i)` to select the item to test, like this
45
48
  ```ruby
46
49
  assert_json '[{"id":1, "key":"test", "name":"test"}, {"id":2, "key":"test", "name":"test"}, {"id":3, "key":"test", "name":"test"}]' do
47
50
  item 0 do
48
- has 'id', 1
49
- has 'key', 'test'
50
- has 'name', 'test'
51
+ has :id, 1
52
+ has :key, 'test'
53
+ has :name, 'test'
51
54
  end
52
55
  item 2 do
53
56
  has 'id', 3
data/Rakefile CHANGED
@@ -1,12 +1,11 @@
1
- require 'rubygems'
2
- require 'rake'
3
- require 'bundler/gem_tasks'
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
4
3
 
5
4
  require 'rake/testtask'
6
5
 
7
6
  desc 'Test the assert_json plugin.'
8
7
  Rake::TestTask.new(:test) do |t|
9
- t.libs << 'lib'
8
+ t.libs << 'lib' << 'test'
10
9
  t.pattern = 'test/**/*_test.rb'
11
10
  t.verbose = true
12
11
  end
data/assert_json.gemspec CHANGED
@@ -20,5 +20,6 @@ Gem::Specification.new do |s|
20
20
 
21
21
  s.add_dependency 'activesupport'
22
22
 
23
+ s.add_development_dependency 'rake'
23
24
  s.add_development_dependency 'minitest'
24
25
  end
@@ -44,14 +44,18 @@ module AssertJson
44
44
  end
45
45
  case token
46
46
  when Hash
47
+ arg = arg.to_s
47
48
  raise_error("element #{arg} not found") unless token.keys.include?(arg)
48
49
  unless args.empty?
49
50
  second_arg = args.shift
51
+ gen_error = lambda {raise_error("element #{token[arg].inspect} does not match #{second_arg.inspect}")}
50
52
  case second_arg
51
53
  when Regexp
52
- raise_error("element #{token[arg].inspect} does not match #{second_arg.inspect}") if second_arg !~ token[arg]
54
+ gen_error.call if second_arg !~ token[arg].to_s
55
+ when Symbol
56
+ gen_error.call if second_arg.to_s != token[arg]
53
57
  else
54
- raise_error("element #{token[arg].inspect} does not match #{second_arg.inspect}") if second_arg != token[arg]
58
+ gen_error.call if second_arg != token[arg]
55
59
  end
56
60
  end
57
61
  when Array
@@ -61,7 +65,7 @@ module AssertJson
61
65
  when Regexp
62
66
  raise_error("element #{arg.inspect} not found") if token !~ arg
63
67
  else
64
- raise_error("element #{arg.inspect} not found") if token != arg
68
+ raise_error("element #{arg.inspect} not found") if token != arg.to_s
65
69
  end
66
70
  when NilClass
67
71
  raise_error("no element left")
@@ -86,9 +90,9 @@ module AssertJson
86
90
  token = @decoded_json
87
91
  case token
88
92
  when Array
89
- raise_error("element #{arg} found, but not expected") if token.include?(arg)
93
+ raise_error("element #{arg} found, but not expected") if token.include?(arg.to_s)
90
94
  else
91
- raise_error("element #{arg} found, but not expected") if token.keys.include?(arg)
95
+ raise_error("element #{arg} found, but not expected") if token.keys.include?(arg.to_s)
92
96
  end
93
97
  end
94
98
  alias has_not not_element
@@ -1,3 +1,3 @@
1
1
  module AssertJson
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
@@ -1,6 +1,6 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/test_helper')
1
+ require 'test_helper'
2
2
 
3
- class AssertJsonNewDslTest < Test::Unit::TestCase
3
+ class AssertJsonNewDslTest < Minitest::Test
4
4
  include AssertJson
5
5
 
6
6
  def test_string
@@ -344,4 +344,72 @@ class AssertJsonNewDslTest < Test::Unit::TestCase
344
344
  end
345
345
  end
346
346
 
347
+ def test_symbol_as_a_value
348
+ assert_json '{"key": "text"}' do
349
+ has :key, :text
350
+ end
351
+ assert_raises(MiniTest::Assertion) do
352
+ assert_json '{"key": "badtext"}' do
353
+ has :key, :text
354
+ end
355
+ end
356
+ end
357
+
358
+ def test_symbol_as_a_key
359
+ assert_json '{"sym": true, "text": "1"}' do
360
+ has :sym, true
361
+ has :text, /\d+/
362
+ has_not :bad_sym
363
+ end
364
+ assert_json '{"sym": false, "text": "2", "topkey": {"subkey": "value1"}}' do
365
+ has :sym, false
366
+ has :text, /\d+/
367
+ has_not :bad_sym
368
+ has :topkey do
369
+ has :subkey, :value1
370
+ end
371
+ end
372
+ end
373
+
374
+ def test_symbol_as_string_value
375
+ assert_json '{"topkey": {"subkey": "value1"}}' do
376
+ has :topkey do
377
+ has :subkey do
378
+ has :value1
379
+ end
380
+ end
381
+ end
382
+ end
383
+
384
+
385
+ def test_symbol_as_a_key_crossheck
386
+ assert_raises(MiniTest::Assertion) do
387
+ assert_json '{"text": "1"}' do
388
+ has :sym, true #this should fail
389
+ has :text, /\d+/
390
+ has_not :bad_sym
391
+ end
392
+ end
393
+
394
+ assert_raises(MiniTest::Assertion) do
395
+ assert_json '{"sym": false, "text": "abc"}' do
396
+ has :sym, false
397
+ has :text, /\d+/ #this should fail
398
+ has_not :bad_sym
399
+ end
400
+ end
401
+
402
+ assert_raises(MiniTest::Assertion) do
403
+ assert_json '{"sym": false}' do
404
+ has_not :sym
405
+ end
406
+ end
407
+ end
408
+
409
+ def test_regex_with_number
410
+ assert_json '{"number": 1}' do
411
+ has :number, /^\d+$/
412
+ end
413
+ end
414
+
347
415
  end
@@ -1,6 +1,6 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/test_helper')
1
+ require 'test_helper'
2
2
 
3
- class AssertJsonTest < Test::Unit::TestCase
3
+ class AssertJsonTest < Minitest::Test
4
4
  include AssertJson
5
5
 
6
6
  def test_string
data/test/test_helper.rb CHANGED
@@ -1,6 +1,4 @@
1
- require 'rubygems'
2
- require 'minitest'
3
- require 'test/unit'
1
+ require 'minitest/autorun'
4
2
  require 'active_support'
5
3
 
6
4
  $:.push File.expand_path("../../lib", __FILE__)
metadata CHANGED
@@ -1,41 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: assert_json
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thorsten Böttger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-28 00:00:00.000000000 Z
11
+ date: 2014-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
25
39
  - !ruby/object:Gem::Version
26
40
  version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: minitest
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - ! '>='
45
+ - - '>='
32
46
  - !ruby/object:Gem::Version
33
47
  version: '0'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - ! '>='
52
+ - - '>='
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
55
  description: A gem to test JSON strings.
@@ -45,6 +59,7 @@ extensions: []
45
59
  extra_rdoc_files: []
46
60
  files:
47
61
  - .gitignore
62
+ - .travis.yml
48
63
  - CHANGELOG.md
49
64
  - Gemfile
50
65
  - MIT-LICENSE
@@ -67,17 +82,17 @@ require_paths:
67
82
  - lib
68
83
  required_ruby_version: !ruby/object:Gem::Requirement
69
84
  requirements:
70
- - - ! '>='
85
+ - - '>='
71
86
  - !ruby/object:Gem::Version
72
87
  version: '0'
73
88
  required_rubygems_version: !ruby/object:Gem::Requirement
74
89
  requirements:
75
- - - ! '>='
90
+ - - '>='
76
91
  - !ruby/object:Gem::Version
77
92
  version: '0'
78
93
  requirements: []
79
94
  rubyforge_project:
80
- rubygems_version: 2.2.2
95
+ rubygems_version: 2.1.11
81
96
  signing_key:
82
97
  specification_version: 4
83
98
  summary: A gem to test JSON strings.