neuron-client 0.2.6 → 0.3.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.
Files changed (116) hide show
  1. data/README.md +11 -8
  2. data/lib/neuron-client/api.rb +5 -0
  3. data/lib/neuron-client/model/ad.rb +142 -0
  4. data/lib/neuron-client/model/ad_calculations.rb +325 -0
  5. data/lib/neuron-client/model/ad_zone.rb +45 -0
  6. data/lib/neuron-client/model/base.rb +233 -18
  7. data/lib/neuron-client/model/blocked_referer.rb +20 -0
  8. data/lib/neuron-client/model/blocked_user_agent.rb +21 -0
  9. data/lib/neuron-client/model/geo_target.rb +36 -0
  10. data/lib/neuron-client/model/pixel.rb +22 -0
  11. data/lib/neuron-client/model/report.rb +35 -0
  12. data/lib/neuron-client/model/s3_file.rb +30 -0
  13. data/lib/neuron-client/model/zone.rb +64 -0
  14. data/lib/neuron-client/model/zone_calculations.rb +37 -0
  15. data/lib/neuron-client/schema/ad.rb +406 -0
  16. data/lib/neuron-client/schema/ad_zone.rb +49 -0
  17. data/lib/neuron-client/schema/blocked_referer.rb +52 -0
  18. data/lib/neuron-client/schema/blocked_user_agent.rb +64 -0
  19. data/lib/neuron-client/schema/common.rb +220 -0
  20. data/lib/neuron-client/schema/event.rb +17 -0
  21. data/lib/neuron-client/schema/geo_target.rb +33 -0
  22. data/lib/neuron-client/schema/pixel.rb +39 -0
  23. data/lib/neuron-client/schema/report.rb +59 -0
  24. data/lib/neuron-client/schema/s3_file.rb +87 -0
  25. data/lib/neuron-client/schema/zone.rb +214 -0
  26. data/lib/neuron-client/version.rb +1 -1
  27. data/lib/neuron-client.rb +24 -59
  28. data/neuron-client.gemspec +3 -0
  29. data/spec/lib/admin_connection_spec.rb +234 -0
  30. data/spec/lib/api_spec.rb +41 -63
  31. data/spec/lib/model/ad_calculations_spec.rb +1146 -0
  32. data/spec/lib/model/ad_spec.rb +253 -0
  33. data/spec/lib/model/ad_zone_spec.rb +15 -0
  34. data/spec/lib/model/base_spec.rb +5 -83
  35. data/spec/lib/model/blocked_referer_spec.rb +36 -0
  36. data/spec/lib/model/blocked_user_agent_spec.rb +36 -0
  37. data/spec/lib/model/geo_target_spec.rb +28 -0
  38. data/spec/lib/model/pixel_spec.rb +36 -0
  39. data/spec/lib/model/report_spec.rb +17 -0
  40. data/spec/lib/{s3_file_spec.rb → model/s3_file_spec.rb} +6 -5
  41. data/spec/lib/model/zone_calculations_spec.rb +49 -0
  42. data/spec/lib/model/zone_spec.rb +155 -0
  43. data/spec/lib/schema/ad_spec.rb +515 -0
  44. data/spec/lib/schema/ad_zone_spec.rb +149 -0
  45. data/spec/lib/schema/blocked_referer_spec.rb +136 -0
  46. data/spec/lib/schema/blocked_user_agent_spec.rb +147 -0
  47. data/spec/lib/schema/geo_target_spec.rb +92 -0
  48. data/spec/lib/schema/pixel_spec.rb +125 -0
  49. data/spec/lib/schema/report_spec.rb +129 -0
  50. data/spec/lib/schema/s3_file_spec.rb +164 -0
  51. data/spec/lib/schema/zone_spec.rb +243 -0
  52. data/spec/spec_helper.rb +2 -1
  53. metadata +141 -121
  54. data/lib/neuron-client/model/admin/ad.rb +0 -22
  55. data/lib/neuron-client/model/admin/ad_zone.rb +0 -15
  56. data/lib/neuron-client/model/admin/base.rb +0 -91
  57. data/lib/neuron-client/model/admin/blocked_referer.rb +0 -12
  58. data/lib/neuron-client/model/admin/blocked_user_agent.rb +0 -12
  59. data/lib/neuron-client/model/admin/geo_target.rb +0 -16
  60. data/lib/neuron-client/model/admin/pixel.rb +0 -12
  61. data/lib/neuron-client/model/admin/report.rb +0 -15
  62. data/lib/neuron-client/model/admin/s3_file.rb +0 -12
  63. data/lib/neuron-client/model/admin/zone.rb +0 -15
  64. data/lib/neuron-client/model/common/ad.rb +0 -42
  65. data/lib/neuron-client/model/common/ad_calculations.rb +0 -329
  66. data/lib/neuron-client/model/common/ad_zone.rb +0 -17
  67. data/lib/neuron-client/model/common/base.rb +0 -67
  68. data/lib/neuron-client/model/common/blocked_referer.rb +0 -16
  69. data/lib/neuron-client/model/common/blocked_user_agent.rb +0 -16
  70. data/lib/neuron-client/model/common/geo_target.rb +0 -16
  71. data/lib/neuron-client/model/common/pixel.rb +0 -18
  72. data/lib/neuron-client/model/common/report.rb +0 -21
  73. data/lib/neuron-client/model/common/s3_file.rb +0 -16
  74. data/lib/neuron-client/model/common/zone.rb +0 -22
  75. data/lib/neuron-client/model/common/zone_calculations.rb +0 -41
  76. data/lib/neuron-client/model/membase/ad.rb +0 -49
  77. data/lib/neuron-client/model/membase/ad_zone.rb +0 -11
  78. data/lib/neuron-client/model/membase/blocked_referer.rb +0 -20
  79. data/lib/neuron-client/model/membase/blocked_user_agent.rb +0 -20
  80. data/lib/neuron-client/model/membase/geo_target.rb +0 -11
  81. data/lib/neuron-client/model/membase/pixel.rb +0 -22
  82. data/lib/neuron-client/model/membase/report.rb +0 -11
  83. data/lib/neuron-client/model/membase/s3_file.rb +0 -11
  84. data/lib/neuron-client/model/membase/zone.rb +0 -30
  85. data/lib/neuron-client/model/models.rb +0 -15
  86. data/spec/lib/model/admin/ad_spec.rb +0 -34
  87. data/spec/lib/model/admin/ad_zone_spec.rb +0 -19
  88. data/spec/lib/model/admin/base_spec.rb +0 -11
  89. data/spec/lib/model/admin/blocked_referer_spec.rb +0 -11
  90. data/spec/lib/model/admin/blocked_user_agent_spec.rb +0 -11
  91. data/spec/lib/model/admin/geo_target_spec.rb +0 -30
  92. data/spec/lib/model/admin/report_spec.rb +0 -21
  93. data/spec/lib/model/admin/s3_spec.rb +0 -11
  94. data/spec/lib/model/admin/zone_spec.rb +0 -21
  95. data/spec/lib/model/common/ad_calculations_spec.rb +0 -1151
  96. data/spec/lib/model/common/ad_spec.rb +0 -11
  97. data/spec/lib/model/common/ad_zone_spec.rb +0 -11
  98. data/spec/lib/model/common/base_spec.rb +0 -11
  99. data/spec/lib/model/common/blocked_referer_spec.rb +0 -11
  100. data/spec/lib/model/common/blocked_user_agent_spec.rb +0 -11
  101. data/spec/lib/model/common/geo_target_spec.rb +0 -11
  102. data/spec/lib/model/common/report_spec.rb +0 -11
  103. data/spec/lib/model/common/s3_spec.rb +0 -11
  104. data/spec/lib/model/common/zone_calculations_spec.rb +0 -54
  105. data/spec/lib/model/common/zone_spec.rb +0 -11
  106. data/spec/lib/model/membase/ad_spec.rb +0 -54
  107. data/spec/lib/model/membase/ad_zone_spec.rb +0 -11
  108. data/spec/lib/model/membase/base_spec.rb +0 -11
  109. data/spec/lib/model/membase/blocked_referer_spec.rb +0 -34
  110. data/spec/lib/model/membase/blocked_user_agent_spec.rb +0 -34
  111. data/spec/lib/model/membase/geo_target_spec.rb +0 -11
  112. data/spec/lib/model/membase/pixel_spec.rb +0 -34
  113. data/spec/lib/model/membase/report_spec.rb +0 -11
  114. data/spec/lib/model/membase/s3_spec.rb +0 -11
  115. data/spec/lib/model/membase/zone_spec.rb +0 -32
  116. data/spec/lib/old_spec.rb +0 -437
@@ -0,0 +1,149 @@
1
+ require 'json-schema'
2
+
3
+ module Neuron
4
+ module Schema
5
+ describe AdZone do
6
+ before(:each) do
7
+ @datetime = "2011-11-11T11:11:11Z"
8
+ @monkey_wrench = {"monkey_wrench" => {"id" => 42, "name" => "a", "updated_at" => @datetime}}
9
+ @monkey_wrenches = [
10
+ {"monkey_wrench" => {"id" => 1, "name" => "a", "updated_at" => @datetime}},
11
+ {"monkey_wrench" => {"id" => 2, "name" => "b", "updated_at" => @datetime}},
12
+ {"monkey_wrench" => {"id" => 3, "name" => "c", "updated_at" => @datetime}}
13
+ ]
14
+ end
15
+
16
+ def validate(data, opts={})
17
+ schema = opts[:against] || raise("You forgot to specify the schema!")
18
+ JSON::Validator.validate!(schema, data)
19
+ end
20
+
21
+ def invalidate(data, opts={})
22
+ schema = opts[:against] || raise("You forgot to specify the schema!")
23
+ JSON::Validator.validate(schema, data).should be_false
24
+ end
25
+
26
+ describe "index" do
27
+ it "should approve an example list of ad-zones" do
28
+ validate(
29
+ [{"ad_zone" => {"ad_id" => 42, "zone_id" => "zone101", "weight" => 1.5, "priority" => 1}},
30
+ {"ad_zone" => {"ad_id" => 82, "zone_id" => "zone101", "weight" => 1.0, "priority" => 2}},
31
+ {"ad_zone" => {"ad_id" => 246, "zone_id" => "zone102", "weight" => 1.5, "priority" => 1}}
32
+ ],
33
+ :against => AdZone::SCHEMA.index)
34
+ end
35
+
36
+ it "should approve an empty list" do
37
+ validate([], :against => AdZone::SCHEMA.index)
38
+ end
39
+
40
+ it "should not approve an example ad_zone outside of a list" do
41
+ invalidate(
42
+ {"ad_zone" => {"ad_id" => 42, "zone_id" => "zone101", "weight" => 1.5, "priority" => 1}},
43
+ :against => AdZone::SCHEMA.index)
44
+ end
45
+
46
+ it "should not approve an example list of monkey wrenches" do
47
+ invalidate(@monkey_wrenches, :against => AdZone::SCHEMA.index)
48
+ end
49
+ end
50
+
51
+ describe "create" do
52
+ it "should approve an example ad-zone" do
53
+ validate({"ad_zone" => {
54
+ "ad_id" => 1,
55
+ "zone_id" => "zone1",
56
+ "weight" => 1.0,
57
+ "priority" => 1
58
+ }}, :against => AdZone::SCHEMA.create)
59
+ end
60
+
61
+ it "should not approve a ad-zone with missing information" do
62
+ invalidate({"ad_zone" => {
63
+ "ad_id" => 1,
64
+ "zone_id" => "zone1",
65
+ }}, :against => AdZone::SCHEMA.create)
66
+ end
67
+
68
+ it "should not approve a ad-zone with extra information" do
69
+ invalidate({"ad_zone" => {
70
+ "ad_id" => 1,
71
+ "zone_id" => "zone1",
72
+ "weight" => 1.0,
73
+ "priority" => 1,
74
+ "id" => 9
75
+ }}, :against => AdZone::SCHEMA.create)
76
+ end
77
+
78
+ it "should not approve a monkey wrench" do
79
+ invalidate(@monkey_wrench, :against => AdZone::SCHEMA.create)
80
+ end
81
+ end
82
+
83
+ describe "show" do
84
+ it "should approve an example ad-zone" do
85
+ validate({"ad_zone" => {
86
+ "ad_id" => 1,
87
+ "zone_id" => "zone1",
88
+ "weight" => 1.0,
89
+ "priority" => 1
90
+ }}, :against => AdZone::SCHEMA.show)
91
+ end
92
+
93
+ it "should not approve a ad-zone with missing information" do
94
+ invalidate({"ad_zone" => {
95
+ "ad_id" => 1,
96
+ "zone_id" => "zone1",
97
+ }}, :against => AdZone::SCHEMA.show)
98
+ end
99
+
100
+ it "should not approve a ad-zone with extra information" do
101
+ invalidate({"ad_zone" => {
102
+ "ad_id" => 1,
103
+ "zone_id" => "zone1",
104
+ "weight" => 1.0,
105
+ "priority" => 1,
106
+ "id" => 9
107
+ }}, :against => AdZone::SCHEMA.show)
108
+ end
109
+
110
+ it "should not approve a monkey wrench" do
111
+ invalidate(@monkey_wrench, :against => AdZone::SCHEMA.show)
112
+ end
113
+ end
114
+
115
+ describe "update" do
116
+ it "should approve an example ad-zone" do
117
+ validate({"ad_zone" => {
118
+ "ad_id" => 1,
119
+ "zone_id" => "zone1",
120
+ "weight" => 1.0,
121
+ "priority" => 1
122
+ }}, :against => AdZone::SCHEMA.update)
123
+ end
124
+
125
+ it "should not approve a ad-zone with missing information" do
126
+ invalidate({"ad_zone" => {
127
+ "ad_id" => 1,
128
+ "zone_id" => "zone1",
129
+ "priority" => 1
130
+ }}, :against => AdZone::SCHEMA.update)
131
+ end
132
+
133
+ it "should not approve a ad-zone with extra information" do
134
+ invalidate({"ad_zone" => {
135
+ "ad_id" => 1,
136
+ "zone_id" => "zone1",
137
+ "weight" => 1.0,
138
+ "priority" => 1,
139
+ "id" => 1
140
+ }}, :against => AdZone::SCHEMA.update)
141
+ end
142
+
143
+ it "should not approve a monkey wrench" do
144
+ invalidate(@monkey_wrench, :against => AdZone::SCHEMA.update)
145
+ end
146
+ end
147
+ end
148
+ end
149
+ end
@@ -0,0 +1,136 @@
1
+ require 'json-schema'
2
+
3
+ module Neuron
4
+ module Schema
5
+ describe BlockedReferer do
6
+ before(:each) do
7
+ @datetime = "2011-11-11T11:11:11Z"
8
+ @monkey_wrench = {"monkey_wrench" => {"id" => 42, "name" => "a"}}
9
+ @monkey_wrenches = [
10
+ {"monkey_wrench" => {"id" => 1, "name" => "a"}},
11
+ {"monkey_wrench" => {"id" => 2, "name" => "b"}},
12
+ {"monkey_wrench" => {"id" => 3, "name" => "c"}}
13
+ ]
14
+ end
15
+
16
+ def validate(data, opts={})
17
+ schema = opts[:against] || raise("You forgot to specify the schema!")
18
+ JSON::Validator.validate!(schema, data)
19
+ end
20
+
21
+ def invalidate(data, opts={})
22
+ schema = opts[:against] || raise("You forgot to specify the schema!")
23
+ JSON::Validator.validate(schema, data).should be_false
24
+ end
25
+
26
+ describe "index" do
27
+ it "should approve an example list of blocked referers" do
28
+ validate(
29
+ [{"blocked_referer" => {"id" => 42, "referer" => "127.0.0.1"}},
30
+ {"blocked_referer" => {"id" => 82, "referer" => "an.example.com"}},
31
+ {"blocked_referer" => {"id" => 246, "referer" => "another.example.com/site/page.html"}}
32
+ ],
33
+ :against => BlockedReferer::SCHEMA.index)
34
+ end
35
+
36
+ it "should approve an empty list" do
37
+ validate([], :against => BlockedReferer::SCHEMA.index)
38
+ end
39
+
40
+ it "should not approve an example blocked_referer outside of a list" do
41
+ invalidate(
42
+ {"blocked_referer" => {"id" => 42, "referer" => "127.0.0.1"}},
43
+ :against => BlockedReferer::SCHEMA.index)
44
+ end
45
+
46
+ it "should not approve an example list of monkey wrenches" do
47
+ invalidate(@monkey_wrenches, :against => BlockedReferer::SCHEMA.index)
48
+ end
49
+ end
50
+
51
+ describe "create" do
52
+ it "should approve an example blocked referer" do
53
+ validate({"blocked_referer" => {
54
+ "referer" => "an.example.com"
55
+ }}, :against => BlockedReferer::SCHEMA.create)
56
+ end
57
+
58
+ it "should not approve a blocked referer with missing information" do
59
+ invalidate({"blocked_referer" => {
60
+ }}, :against => BlockedReferer::SCHEMA.create)
61
+ end
62
+
63
+ it "should not approve a blocked referer with extra information" do
64
+ invalidate({"blocked_referer" => {
65
+ "referer" => "an.example.com",
66
+ "name" => "extra"
67
+ }}, :against => BlockedReferer::SCHEMA.create)
68
+ end
69
+
70
+ it "should not approve a monkey wrench" do
71
+ invalidate(@monkey_wrench, :against => BlockedReferer::SCHEMA.create)
72
+ end
73
+ end
74
+
75
+ describe "show" do
76
+ it "should approve an example blocked referer" do
77
+ validate({"blocked_referer" => {
78
+ "referer" => "an.example.com",
79
+ "created_at" => @datetime,
80
+ "updated_at" => @datetime,
81
+ "id" => 1
82
+ }}, :against => BlockedReferer::SCHEMA.show)
83
+ end
84
+
85
+ it "should not approve a blocked referer with missing information" do
86
+ invalidate({"blocked_referer" => {
87
+ "referer" => "an.example.com",
88
+ "updated_at" => @datetime,
89
+ "id" => 1
90
+ }}, :against => BlockedReferer::SCHEMA.show)
91
+ end
92
+
93
+ it "should not approve a blocked referer with extra information" do
94
+ invalidate({"blocked_referer" => {
95
+ "referer" => "an.example.com",
96
+ "created_at" => @datetime,
97
+ "updated_at" => @datetime,
98
+ "id" => 1,
99
+ "name" => "extra"
100
+ }}, :against => BlockedReferer::SCHEMA.show)
101
+ end
102
+
103
+ it "should not approve a monkey wrench" do
104
+ invalidate(@monkey_wrench, :against => BlockedReferer::SCHEMA.show)
105
+ end
106
+ end
107
+
108
+ describe "update" do
109
+ it "should approve an example blocked referer" do
110
+ validate({"blocked_referer" => {
111
+ "referer" => "an.example.com",
112
+ "id" => 1
113
+ }}, :against => BlockedReferer::SCHEMA.update)
114
+ end
115
+
116
+ it "should not approve a blocked referer with missing information" do
117
+ invalidate({"blocked_referer" => {
118
+ "id" => 1
119
+ }}, :against => BlockedReferer::SCHEMA.update)
120
+ end
121
+
122
+ it "should not approve a blocked referer with extra information" do
123
+ invalidate({"blocked_referer" => {
124
+ "referer" => "an.example.com",
125
+ "id" => 1,
126
+ "name" => "extra"
127
+ }}, :against => BlockedReferer::SCHEMA.update)
128
+ end
129
+
130
+ it "should not approve a monkey wrench" do
131
+ invalidate(@monkey_wrench, :against => BlockedReferer::SCHEMA.update)
132
+ end
133
+ end
134
+ end
135
+ end
136
+ end
@@ -0,0 +1,147 @@
1
+ require 'json-schema'
2
+
3
+ module Neuron
4
+ module Schema
5
+ describe BlockedUserAgent do
6
+ before(:each) do
7
+ @datetime = "2011-11-11T11:11:11Z"
8
+ @monkey_wrench = {"monkey_wrench" => {"id" => 42, "name" => "a"}}
9
+ @monkey_wrenches = [
10
+ {"monkey_wrench" => {"id" => 1, "name" => "a"}},
11
+ {"monkey_wrench" => {"id" => 2, "name" => "b"}},
12
+ {"monkey_wrench" => {"id" => 3, "name" => "c"}}
13
+ ]
14
+ end
15
+
16
+ def validate(data, opts={})
17
+ schema = opts[:against] || raise("You forgot to specify the schema!")
18
+ JSON::Validator.validate!(schema, data)
19
+ end
20
+
21
+ def invalidate(data, opts={})
22
+ schema = opts[:against] || raise("You forgot to specify the schema!")
23
+ JSON::Validator.validate(schema, data).should be_false
24
+ end
25
+
26
+ describe "index" do
27
+ it "should approve an example list of blocked user agents" do
28
+ validate(
29
+ [{"blocked_user_agent" => {"id" => 42, "description" => nil, "user_agent" => ".*robot.*"}},
30
+ {"blocked_user_agent" => {"id" => 82, "description" => nil, "user_agent" => "^Badbot"}},
31
+ {"blocked_user_agent" => {"id" => 246, "description" => nil, "user_agent" => "crawler$"}}
32
+ ],
33
+ :against => BlockedUserAgent::SCHEMA.index)
34
+ end
35
+
36
+ it "should approve an empty list" do
37
+ validate([], :against => BlockedUserAgent::SCHEMA.index)
38
+ end
39
+
40
+ it "should not approve an example blocked user agent outside of a list" do
41
+ invalidate(
42
+ {"blocked_user_agent" => {"id" => 42, "description" => nil, "user_agent" => ".*robot.*"}},
43
+ :against => BlockedUserAgent::SCHEMA.index)
44
+ end
45
+
46
+ it "should not approve an example list of monkey wrenches" do
47
+ invalidate(@monkey_wrenches, :against => BlockedUserAgent::SCHEMA.index)
48
+ end
49
+ end
50
+
51
+ describe "create" do
52
+ it "should approve an example blocked user agent" do
53
+ validate({"blocked_user_agent" => {
54
+ "description" => 'Anything with "robot" in it',
55
+ "user_agent" => ".*robot.*"
56
+ }}, :against => BlockedUserAgent::SCHEMA.create)
57
+ end
58
+
59
+ it "should not approve a blocked user agent with missing information" do
60
+ invalidate({"blocked_user_agent" => {
61
+ "description" => 'Anything with "robot" in it',
62
+ #"user_agent" => ".*robot.*",
63
+ }}, :against => BlockedUserAgent::SCHEMA.create)
64
+ end
65
+
66
+ it "should not approve a blocked user agent with extra information" do
67
+ invalidate({"blocked_user_agent" => {
68
+ "description" => 'Anything with "robot" in it',
69
+ "user_agent" => ".*robot.*",
70
+ "name" => "extra"
71
+ }}, :against => BlockedUserAgent::SCHEMA.create)
72
+ end
73
+
74
+ it "should not approve a monkey wrench" do
75
+ invalidate(@monkey_wrench, :against => BlockedUserAgent::SCHEMA.create)
76
+ end
77
+ end
78
+
79
+ describe "show" do
80
+ it "should approve an example blocked user agent" do
81
+ validate({"blocked_user_agent" => {
82
+ "description" => 'Anything with "robot" in it',
83
+ "user_agent" => ".*robot.*",
84
+ "created_at" => @datetime,
85
+ "updated_at" => @datetime,
86
+ "id" => 1
87
+ }}, :against => BlockedUserAgent::SCHEMA.show)
88
+ end
89
+
90
+ it "should not approve a blocked user agent with missing information" do
91
+ invalidate({"blocked_user_agent" => {
92
+ "user_agent" => ".*robot.*",
93
+ "created_at" => @datetime,
94
+ "updated_at" => @datetime,
95
+ "id" => 1
96
+ }}, :against => BlockedUserAgent::SCHEMA.show)
97
+ end
98
+
99
+ it "should not approve a blocked user agent with extra information" do
100
+ invalidate({"blocked_user_agent" => {
101
+ "description" => 'Anything with "robot" in it',
102
+ "user_agent" => ".*robot.*",
103
+ "created_at" => @datetime,
104
+ "updated_at" => @datetime,
105
+ "id" => 1,
106
+ "name" => "extra"
107
+ }}, :against => BlockedUserAgent::SCHEMA.show)
108
+ end
109
+
110
+ it "should not approve a monkey wrench" do
111
+ invalidate(@monkey_wrench, :against => BlockedUserAgent::SCHEMA.show)
112
+ end
113
+ end
114
+
115
+ describe "update" do
116
+ it "should approve an example blocked user agent" do
117
+ validate({"blocked_user_agent" => {
118
+ "description" => 'Anything with "robot" in it',
119
+ "user_agent" => ".*robot.*",
120
+ "id" => 1
121
+ }}, :against => BlockedUserAgent::SCHEMA.update)
122
+ end
123
+
124
+ it "should not approve a blocked user agent with missing id" do
125
+ invalidate({"blocked_user_agent" => {
126
+ "description" => 'Anything with "robot" in it',
127
+ "user_agent" => ".*robot.*",
128
+ #"id" => 1
129
+ }}, :against => BlockedUserAgent::SCHEMA.update)
130
+ end
131
+
132
+ it "should not approve a blocked user agent with extra information" do
133
+ invalidate({"blocked_user_agent" => {
134
+ "description" => 'Anything with "robot" in it',
135
+ "user_agent" => ".*robot.*",
136
+ "id" => 1,
137
+ "name" => "extra"
138
+ }}, :against => BlockedUserAgent::SCHEMA.update)
139
+ end
140
+
141
+ it "should not approve a monkey wrench" do
142
+ invalidate(@monkey_wrench, :against => BlockedUserAgent::SCHEMA.update)
143
+ end
144
+ end
145
+ end
146
+ end
147
+ end
@@ -0,0 +1,92 @@
1
+ require 'json-schema'
2
+
3
+ module Neuron
4
+ module Schema
5
+ describe GeoTarget do
6
+ before(:each) do
7
+ @datetime = "2011-11-11T11:11:11Z"
8
+ @monkey_wrench = {"monkey_wrench" => {"id" => 42, "name" => "a"}}
9
+ @monkey_wrenches = [
10
+ {"monkey_wrench" => {"id" => 1, "name" => "a"}},
11
+ {"monkey_wrench" => {"id" => 2, "name" => "b"}},
12
+ {"monkey_wrench" => {"id" => 3, "name" => "c"}}
13
+ ]
14
+ end
15
+
16
+ def validate(data, opts={})
17
+ schema = opts[:against] || raise("You forgot to specify the schema!")
18
+ JSON::Validator.validate!(schema, data)
19
+ end
20
+
21
+ def invalidate(data, opts={})
22
+ schema = opts[:against] || raise("You forgot to specify the schema!")
23
+ JSON::Validator.validate(schema, data).should be_false
24
+ end
25
+
26
+ describe "index" do
27
+ it "should approve an example list of geo targets" do
28
+ validate(
29
+ [{"geo_target" => {"id" => 42, "abbreviation" => "A", "name" => "A", "full_name" => "A, Texas, USA", "geo_type" => "CITY", "netacuity_id" => 1}},
30
+ {"geo_target" => {"id" => 82, "abbreviation" => "TX", "name" => "Texas", "full_name" => "Texas, USA", "geo_type" => "REGION", "netacuity_id" => 2}},
31
+ {"geo_target" => {"id" => 246, "abbreviation" => "USA", "name" => "United States", "full_name" => "United States", "geo_type" => "COUNTRY", "netacuity_id" => 3}},
32
+ ],
33
+ :against => GeoTarget::SCHEMA.index)
34
+ end
35
+
36
+ it "should approve an empty list" do
37
+ validate([], :against => GeoTarget::SCHEMA.index)
38
+ end
39
+
40
+ it "should not approve an example geo_target outside of a list" do
41
+ invalidate(
42
+ {"geo_target" => {"id" => 42, "abbreviation" => "A", "name" => "A", "full_name" => "A, Texas, USA", "geo_type" => "CITY", "netacuity_id" => 1}},
43
+ :against => GeoTarget::SCHEMA.index)
44
+ end
45
+
46
+ it "should not approve an example list of monkey wrenches" do
47
+ invalidate(@monkey_wrenches, :against => GeoTarget::SCHEMA.index)
48
+ end
49
+ end
50
+
51
+ describe "show" do
52
+ it "should approve an example geo target" do
53
+ validate({"geo_target" => {
54
+ "id" => 42,
55
+ "abbreviation" => "A",
56
+ "name" => "A",
57
+ "full_name" => "A, Texas, USA",
58
+ "geo_type" => "CITY",
59
+ "netacuity_id" => 1
60
+ }}, :against => GeoTarget::SCHEMA.show)
61
+ end
62
+
63
+ it "should not approve a geo target with missing information" do
64
+ invalidate({"geo_target" => {
65
+ "id" => 42,
66
+ "abbreviation" => "A",
67
+ #"name" => "A",
68
+ "full_name" => "A, Texas, USA",
69
+ "geo_type" => "CITY",
70
+ "netacuity_id" => 1
71
+ }}, :against => GeoTarget::SCHEMA.show)
72
+ end
73
+
74
+ it "should not approve a geo target with extra information" do
75
+ invalidate({"geo_target" => {
76
+ "id" => 42,
77
+ "abbreviation" => "A",
78
+ "name" => "A",
79
+ "full_name" => "A, Texas, USA",
80
+ "geo_type" => "CITY",
81
+ "netacuity_id" => 1,
82
+ "extra" => "extra"
83
+ }}, :against => GeoTarget::SCHEMA.show)
84
+ end
85
+
86
+ it "should not approve a monkey wrench" do
87
+ invalidate(@monkey_wrench, :against => GeoTarget::SCHEMA.show)
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,125 @@
1
+ require 'json-schema'
2
+
3
+ module Neuron
4
+ module Schema
5
+ describe Pixel do
6
+ before(:each) do
7
+ @datetime = "2011-11-11T11:11:11Z"
8
+ @monkey_wrench = {"monkey_wrench" => {"id" => 42, "name" => "a"}}
9
+ @monkey_wrenches = [
10
+ {"monkey_wrench" => {"id" => 1, "name" => "a"}},
11
+ {"monkey_wrench" => {"id" => 2, "name" => "b"}},
12
+ {"monkey_wrench" => {"id" => 3, "name" => "c"}}
13
+ ]
14
+ end
15
+
16
+ def validate(data, opts={})
17
+ schema = opts[:against] || raise("You forgot to specify the schema!")
18
+ JSON::Validator.validate!(schema, data)
19
+ end
20
+
21
+ def invalidate(data, opts={})
22
+ schema = opts[:against] || raise("You forgot to specify the schema!")
23
+ JSON::Validator.validate(schema, data).should be_false
24
+ end
25
+
26
+ describe "index" do
27
+ it "should approve an example list of pixels" do
28
+ validate(
29
+ [{"pixel" => {"id" => 42}},
30
+ {"pixel" => {"id" => 82}},
31
+ {"pixel" => {"id" => 246}}
32
+ ],
33
+ :against => Pixel::SCHEMA.index)
34
+ end
35
+
36
+ it "should approve an empty list" do
37
+ validate([], :against => Pixel::SCHEMA.index)
38
+ end
39
+
40
+ it "should not approve an example pixel outside of a list" do
41
+ invalidate(
42
+ {"pixel" => {"id" => 42}},
43
+ :against => Pixel::SCHEMA.index)
44
+ end
45
+
46
+ it "should not approve an example list of monkey wrenches" do
47
+ invalidate(@monkey_wrenches, :against => Pixel::SCHEMA.index)
48
+ end
49
+ end
50
+
51
+ describe "create" do
52
+ it "should approve an example pixel" do
53
+ validate({"pixel" => {
54
+ "ad_ids" => []
55
+ }}, :against => Pixel::SCHEMA.create)
56
+ end
57
+
58
+ it "should not approve a pixel with extra information" do
59
+ invalidate({"pixel" => {
60
+ "ad_ids" => [1,2,3],
61
+ "name" => "extra"
62
+ }}, :against => Pixel::SCHEMA.create)
63
+ end
64
+
65
+ it "should not approve a monkey wrench" do
66
+ invalidate(@monkey_wrench, :against => Pixel::SCHEMA.create)
67
+ end
68
+ end
69
+
70
+ describe "show" do
71
+ it "should approve an example pixel" do
72
+ validate({"pixel" => {
73
+ "ad_ids" => [1,2,3],
74
+ "id" => 1
75
+ }}, :against => Pixel::SCHEMA.show)
76
+ end
77
+
78
+ it "should not approve a pixel with missing information" do
79
+ invalidate({"pixel" => {
80
+ "id" => 1
81
+ }}, :against => Pixel::SCHEMA.show)
82
+ end
83
+
84
+ it "should not approve a pixel with extra information" do
85
+ invalidate({"pixel" => {
86
+ "ad_ids" => [1,2,3],
87
+ "id" => 1,
88
+ "name" => "extra"
89
+ }}, :against => Pixel::SCHEMA.show)
90
+ end
91
+
92
+ it "should not approve a monkey wrench" do
93
+ invalidate(@monkey_wrench, :against => Pixel::SCHEMA.show)
94
+ end
95
+ end
96
+
97
+ describe "update" do
98
+ it "should approve an example pixel" do
99
+ validate({"pixel" => {
100
+ "ad_ids" => [1,2,3],
101
+ "id" => 1
102
+ }}, :against => Pixel::SCHEMA.update)
103
+ end
104
+
105
+ it "should not approve a pixel with missing information" do
106
+ invalidate({"pixel" => {
107
+ "id" => 1
108
+ }}, :against => Pixel::SCHEMA.update)
109
+ end
110
+
111
+ it "should not approve a pixel with extra information" do
112
+ invalidate({"pixel" => {
113
+ "ad_ids" => [1,2,3],
114
+ "id" => 1,
115
+ "name" => "extra"
116
+ }}, :against => Pixel::SCHEMA.update)
117
+ end
118
+
119
+ it "should not approve a monkey wrench" do
120
+ invalidate(@monkey_wrench, :against => Pixel::SCHEMA.update)
121
+ end
122
+ end
123
+ end
124
+ end
125
+ end