citygrid_api 0.0.5 → 0.0.5.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 (83) hide show
  1. data/.sass-cache/7a5a675d951455410512a59af5ab2d160bd1735c/test.scssc +0 -0
  2. data/Gemfile +10 -8
  3. data/Gemfile.lock +24 -9
  4. data/README +21 -0
  5. data/citygrid_api.gemspec +77 -17
  6. data/citygrid_api.yml.sample +33 -0
  7. data/config.ru +2 -0
  8. data/dashboard.rb +110 -0
  9. data/lib/citygrid/abstraction/collection.rb +1 -1
  10. data/lib/citygrid/abstraction/super_hash.rb +2 -0
  11. data/lib/citygrid/api/ad_center/account.rb +26 -0
  12. data/lib/citygrid/api/ad_center/account_manager.rb +8 -0
  13. data/lib/citygrid/api/ad_center/ad_group.rb +8 -0
  14. data/lib/citygrid/api/ad_center/ad_group_ad.rb +8 -0
  15. data/lib/citygrid/api/ad_center/ad_group_criterion.rb +8 -0
  16. data/lib/citygrid/api/ad_center/ad_group_geo.rb +8 -0
  17. data/lib/citygrid/api/ad_center/authentication.rb +20 -0
  18. data/lib/citygrid/api/ad_center/billing.rb +8 -0
  19. data/lib/citygrid/api/ad_center/budget.rb +9 -0
  20. data/lib/citygrid/api/ad_center/call_detail.rb +25 -0
  21. data/lib/citygrid/api/ad_center/campaign.rb +8 -0
  22. data/lib/citygrid/api/ad_center/category.rb +9 -0
  23. data/lib/citygrid/api/ad_center/geolocation.rb +9 -0
  24. data/lib/citygrid/api/ad_center/image.rb +30 -0
  25. data/lib/citygrid/api/ad_center/method_of_payment.rb +10 -0
  26. data/lib/citygrid/api/ad_center/performance.rb +17 -0
  27. data/lib/citygrid/api/ad_center/places.rb +8 -0
  28. data/lib/citygrid/api/ad_center/user.rb +8 -0
  29. data/lib/citygrid/api/ad_center.rb +20 -0
  30. data/lib/citygrid/api/content/offers.rb +14 -9
  31. data/lib/citygrid/api/content/places/detail.rb +5 -11
  32. data/lib/citygrid/api/content/places/search.rb +5 -11
  33. data/lib/citygrid/api/content/places.rb +30 -14
  34. data/lib/citygrid/api/content/reviews.rb +5 -10
  35. data/lib/citygrid/api/content.rb +12 -3
  36. data/lib/citygrid/api/response.rb +2 -2
  37. data/lib/citygrid/api.rb +190 -3
  38. data/lib/citygrid/details.rb +1 -1
  39. data/lib/citygrid/listing.rb +7 -2
  40. data/lib/citygrid/offers.rb +4 -0
  41. data/lib/citygrid/reviews.rb +4 -0
  42. data/lib/citygrid/search.rb +6 -0
  43. data/lib/citygrid.rb +117 -12
  44. data/lib/dashboard/sinatra_partial.rb +17 -0
  45. data/lib/dashboard/stored_reporter.rb +101 -0
  46. data/lib/dashboard/test_result.rb +8 -0
  47. data/lib/request_ext.rb +32 -0
  48. data/public/javascript/dashboard.js +5 -0
  49. data/test/api/ad_center/test_account.rb +120 -0
  50. data/test/api/ad_center/test_ad_group.rb +50 -0
  51. data/test/api/ad_center/test_ad_group_ad.rb +27 -0
  52. data/test/api/ad_center/test_ad_group_criterion.rb +37 -0
  53. data/test/api/ad_center/test_ad_group_geo.rb +19 -0
  54. data/test/api/ad_center/test_authentication.rb +22 -0
  55. data/test/api/ad_center/test_billing.rb +14 -0
  56. data/test/api/ad_center/test_budget.rb +13 -0
  57. data/test/api/ad_center/test_call_detail.rb +36 -0
  58. data/test/api/ad_center/test_campaign.rb +27 -0
  59. data/test/api/ad_center/test_category.rb +37 -0
  60. data/test/api/ad_center/test_geolocation.rb +19 -0
  61. data/test/api/ad_center/test_image.rb +17 -0
  62. data/test/api/ad_center/test_method_of_payment.rb +51 -0
  63. data/test/api/ad_center/test_places.rb +79 -0
  64. data/test/api/ad_center/test_reports.rb +37 -0
  65. data/test/api/content/test_offers.rb +28 -0
  66. data/test/api/content/test_places.rb +66 -0
  67. data/test/helper.rb +67 -14
  68. data/test/test_config.rb +11 -0
  69. data/test/test_details.rb +14 -5
  70. data/test/test_img.jpg +0 -0
  71. data/test/test_img_big.png +0 -0
  72. data/test/test_listing.rb +64 -64
  73. data/test/test_search.rb +21 -1
  74. data/test/test_super_array.rb +1 -1
  75. data/test/test_super_hash.rb +1 -1
  76. data/views/_context_result.haml +25 -0
  77. data/views/_request.haml +3 -0
  78. data/views/_test_result.haml +4 -0
  79. data/views/stylesheets/test.scss +53 -0
  80. data/views/test.haml +8 -0
  81. metadata +145 -114
  82. data/lib/citygrid/api/base.rb +0 -60
  83. data/test/test_citygrid.rb +0 -7
@@ -0,0 +1,79 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'helper'))
2
+
3
+ token = AuthToken.generate
4
+
5
+ context "Adding a place" do
6
+ setup do
7
+ run_with_rescue do
8
+ CityGrid::API::AdCenter::Places.search(
9
+ :token => token,
10
+ "placeId" => 11489139
11
+ )
12
+ end
13
+ end
14
+
15
+ should("not be empty") { !topic.empty? }
16
+ should("return code OK") { topic.response.code }.equals(200)
17
+ should("return message OK") { topic.response.message }.equals("OK")
18
+ end
19
+
20
+ context "Adding a place by Adcenter API" do
21
+ setup do
22
+ run_with_rescue do
23
+ CityGrid::API::AdCenter::Places.mutate(
24
+ :token => token,
25
+ "mutateOperationListResource" => [{
26
+ "operator" => "ADD",
27
+ "operand" => {
28
+ "name" => "Pi on sunset in LAAAAAAAAAAAAAA",
29
+ "address_1" => "Jackson 2102",
30
+ "address_2" => "",
31
+ "city" => "Los Angeles",
32
+ "state" => "California",
33
+ "postal_code" => 90025,
34
+ "phone_number" => 3103333333,
35
+ "website_url" => "pi.com",
36
+ "primary_tag_id" => "3623",
37
+ "bullet1" => "Knoll bullet 1",
38
+ "tagline" => "my tagline",
39
+ "primary_tag_id" => 3623,
40
+ "secondary_tags" => '1776'}
41
+ }]
42
+ )
43
+ end
44
+ end
45
+ should("not be empty") { !topic.empty? }
46
+ should("return code OK") { topic.resources.first.response.code }.equals(200)
47
+ should("return message OK") { topic.resources.first.response.message.upcase }.equals("OK")
48
+ end
49
+
50
+ context "Update a place by Adcenter API" do
51
+ setup do
52
+ run_with_rescue do
53
+ CityGrid::API::AdCenter::Places.mutate(
54
+ :token => token,
55
+ "mutateOperationListResource" => [{
56
+ "operator" => "SET",
57
+ "operand" => {
58
+ "name" => "Pi on sunset in LAAAAAAAAAAAAAA",
59
+ "address_1" => "Jackson 2102",
60
+ "address_2" => "",
61
+ "city" => "Los Angeles",
62
+ "state" => "California",
63
+ "postal_code" => 90025,
64
+ "phone_number" => 3103333333,
65
+ "website_url" => "pi.com",
66
+ "primary_tag_id" => "3623",
67
+ "bullet1" => "Knoll bullet 1",
68
+ "tagline" => "my tagline",
69
+ "primary_tag_id" => 3623,
70
+ "secondary_tags" => '1776',
71
+ "listing_id" => 755498442}
72
+ }]
73
+ )
74
+ end
75
+ end
76
+ should("not be empty"){ !topic.empty? }
77
+ should("return code OK"){ topic.resources.first.response.code }.equals(200)
78
+ should("return message OK") { topic.resources.first.response.message }.equals("OK")
79
+ end
@@ -0,0 +1,37 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'helper'))
2
+
3
+ token = AuthToken.sales_coord
4
+
5
+ context "Report summary" do
6
+ context "daily" do
7
+ setup do
8
+ run_with_rescue do
9
+ CityGrid::API::AdCenter::Performance.summary(
10
+ :daily,
11
+ :campaignId => 786,
12
+ :period => 'last30Days',
13
+ :token => token
14
+ )
15
+ end
16
+ end
17
+ should("not be empty"){ !topic.empty? }
18
+ should("have performance resources"){
19
+ topic.dailyCampaignPerformanceResources.length > 0
20
+ }
21
+ end
22
+
23
+ context "user actions" do
24
+ setup do
25
+ run_with_rescue do
26
+ CityGrid::API::AdCenter::Performance.summary(
27
+ :actions,
28
+ :campaignId => 786,
29
+ :period => 'last30Days',
30
+ :token => token
31
+ )
32
+ end
33
+ end
34
+ should("not be empty"){ !topic.empty? }
35
+ should("have user actions"){ topic.userActions.length > 0 }
36
+ end
37
+ end
@@ -0,0 +1,28 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'helper'))
2
+
3
+ # context "Getting an offer" do
4
+ # setup do
5
+ # run_with_rescue do
6
+ # response = CityGrid::API::Content::Offers.where(
7
+ # :what => "restaurant",
8
+ # :where => "98033",
9
+ # :format => :json
10
+ # )
11
+ # response
12
+ # end
13
+ # end
14
+ #
15
+ # should("not be empty") { !topic.empty? }
16
+ # end
17
+
18
+ context "Getting an offer by listing ID" do
19
+ setup do
20
+ run_with_rescue do
21
+ CityGrid::API::Content::Offers.places(
22
+ :listing_id => 628554020
23
+ )
24
+ end
25
+ end
26
+
27
+ should("not be empty") { !topic.empty? }
28
+ end
@@ -0,0 +1,66 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'helper'))
2
+
3
+ token = AuthToken.generate
4
+
5
+ context "Adding a place" do
6
+ setup do
7
+ run_with_rescue do
8
+ CityGrid::API::Content::Places.mutate(
9
+ :token => token,
10
+ "mutateOperationListResource" => [{
11
+ "operator" => "ADD",
12
+ "operand" => {
13
+ # "accountId" => "123",
14
+ "name" => "Pi on sunset in LAAAAAAAAAAAAAA",
15
+ "address_1" => "Jackson 2102",
16
+ "address_2" => "",
17
+ "city" => "Los Angeles",
18
+ "state" => "California",
19
+ "postal_code" => 90025,
20
+ "phone_number" => 3103333333,
21
+ "website_url" => "pi.com",
22
+ "primary_tag_id" => "3623",
23
+ "bullet1" => "Knoll bullet 1",
24
+ "tagline" => "my tagline",
25
+ "primary_tag_id" => 3623,
26
+ "secondary_tags" => '1776'}
27
+ }]
28
+ )
29
+ end
30
+ end
31
+ should("not be empty") { !topic.empty? }
32
+ should("return code OK") { topic.resources.first.response.code }.equals(200)
33
+ should("return message OK") { topic.resources.first.response.message.upcase }.equals("OK")
34
+ end
35
+
36
+ context "Update a place" do
37
+ setup do
38
+ run_with_rescue do
39
+ CityGrid::API::Content::Places.mutate(
40
+ :token => token,
41
+ "mutateOperationListResource" => [{
42
+ "operator" => "SET",
43
+ "operand" => {
44
+ # "accountId" => "123",
45
+ "name" => "Pi on sunset in LAAAAAAAAAAAAAA",
46
+ "address_1" => "Jackson 2102",
47
+ "address_2" => "",
48
+ "city" => "Los Angeles",
49
+ "state" => "California",
50
+ "postal_code" => 90025,
51
+ "phone_number" => 3103333333,
52
+ "website_url" => "pi.com",
53
+ "primary_tag_id" => "3623",
54
+ "bullet1" => "Knoll bullet 1",
55
+ "tagline" => "my tagline",
56
+ "primary_tag_id" => 3623,
57
+ "secondary_tags" => '1776',
58
+ "listing_id" => 755498442}
59
+ }]
60
+ )
61
+ end
62
+ end
63
+ should("not be empty"){ !topic.empty? }
64
+ should("return code OK"){ topic.resources.first.response.code }.equals(200)
65
+ should("return message OK") { topic.resources.first.response.message }.equals("OK")
66
+ end
data/test/helper.rb CHANGED
@@ -1,16 +1,69 @@
1
- require 'rubygems'
2
- require 'bundler'
3
- begin
4
- Bundler.setup(:default, :development)
5
- rescue Bundler::BundlerError => e
6
- $stderr.puts e.message
7
- $stderr.puts "Run `bundle install` to install missing gems"
8
- exit e.status_code
1
+ # Hack to allow storing tokens between tests
2
+ class AuthToken
3
+ class << self
4
+ def kunimom
5
+ @@kunimom ||= CityGrid.login(
6
+ :username => 'kunimom',
7
+ :password => 'pppppp'
8
+ ).authToken
9
+ end
10
+
11
+ def sales_coord
12
+ @@sales_cord ||= CityGrid.login(
13
+ :username => 'QASalesCoord',
14
+ :password => 'pppppp'
15
+ ).authToken
16
+ end
17
+
18
+ def rand_number
19
+ @@rand_number ||= rand(10000000)
20
+ end
21
+
22
+ def generate
23
+ kunimom
24
+ end
25
+ end
9
26
  end
10
- require "ap"
11
- require "riot"
12
27
 
13
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
- $LOAD_PATH.unshift(File.dirname(__FILE__))
15
- require "citygrid_api"
16
- require "publisher_helper"
28
+ # don't do gem setup if we're in the dashboad environment
29
+ unless defined? IN_DASHBOARD
30
+ require 'rubygems'
31
+ require 'bundler'
32
+ begin
33
+ Bundler.setup(:default, :development)
34
+ rescue Bundler::BundlerError => e
35
+ $stderr.puts e.message
36
+ $stderr.puts "Run `bundle install` to install missing gems"
37
+ exit e.status_code
38
+ end
39
+ require "ap"
40
+ require "riot"
41
+
42
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
43
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
44
+ require "citygrid_api"
45
+ require "publisher_helper"
46
+
47
+ # load default config
48
+ CityGrid.load_config File.expand_path(File.join(File.dirname(__FILE__), '..', 'citygrid_api.yml')), "qa"
49
+ # load endpoints from configs
50
+ # CityGrid.set_endpoints File.join(File.dirname(__FILE__), '..', "qa-endpoints.properties")
51
+ # CityGrid.set_env File.join(File.dirname(__FILE__), '..', "qa-env.properties")
52
+
53
+ # Run code with rescue so that exceptions
54
+ # will be printed, but won't stop test suite
55
+ def run_with_rescue
56
+ begin
57
+ yield
58
+ rescue CityGrid::API::InvalidResponseFormat => ex
59
+ x = {"description" => ex.description, "server_msg" => ex.server_msg}
60
+ puts "======= ERROR ======="
61
+ ap x
62
+ false
63
+ rescue => ex
64
+ ap ex
65
+ puts ex.backtrace.join("\n")
66
+ false # return false
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,11 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
2
+
3
+ context "loading config file" do
4
+ setup do
5
+ # CityGrid.load_config "../citygrid_api.yml"
6
+ end
7
+
8
+ should "load correctly" do
9
+ true
10
+ end
11
+ end
data/test/test_details.rb CHANGED
@@ -1,18 +1,27 @@
1
- require "helper"
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
2
2
 
3
- context "Initiating a Details" do
3
+ c = context "Initiating a Details" do
4
4
  setup do
5
- CityGrid::Details.new :public_id => "philip-marie-restaurant-new-york"
5
+ begin
6
+ run_with_rescue do
7
+ CityGrid::Details.new :public_id => "philip-marie-restaurant-new-york"
8
+ end
9
+ rescue
10
+ puts "An error occurred while fetch philip-marie-restaurant-new-york details"
11
+ end
6
12
  end
7
13
 
8
14
  should "return a single Details object" do
9
15
  topic.is_a? CityGrid::Details
10
16
  end
17
+
11
18
  end
12
-
19
+
13
20
  context "Initiating new MultiDetails" do
14
21
  setup do
15
- CityGrid::MultiDetails.new :public_id => "philip-marie-restaurant-new-york"
22
+ run_with_rescue do
23
+ CityGrid::MultiDetails.new :public_id => "philip-marie-restaurant-new-york"
24
+ end
16
25
  end
17
26
 
18
27
  should "return a MultiDetails object" do
data/test/test_img.jpg ADDED
Binary file
Binary file
data/test/test_listing.rb CHANGED
@@ -1,64 +1,64 @@
1
- require "helper"
2
-
3
- context "A Listing created from scratch" do
4
- setup do
5
- CityGrid::Listing.new "id" => 7117426
6
- end
7
-
8
- should "load details after first access" do
9
- topic.tips
10
- end
11
- end
12
-
13
- context "A Listing created from search" do
14
- setup do
15
- CityGrid.search(:what => "sushi", :where => "seattle").first
16
- end
17
-
18
- # Test loading
19
- # ----------------- #
20
- context "that has not been accessed" do
21
- should "not be loaded" do
22
- !topic.clone.instance_variable_get "@loaded"
23
- end
24
- end
25
-
26
- context "that has a method called on it for the first time" do
27
- setup do
28
- old = topic.clone
29
- listing = topic.clone
30
- listing.summary
31
- [old, listing]
32
- end
33
-
34
- should "become loaded" do
35
- topic.last.instance_variable_get "@loaded"
36
- end
37
-
38
- should "update details into itself" do
39
- topic.first != topic.last
40
- end
41
- end
42
-
43
- # Test offers, reviews
44
- # -------------------- #
45
- should "get offers" do
46
- !topic.offers.empty?
47
- end
48
-
49
- # Test reviews
50
- # -------------------- #
51
- should "get reviews" do
52
- !topic.reviews.empty?
53
- end
54
-
55
- context "updating reviews" do
56
- setup do
57
- [topic.reviews.clone, topic.reviews(:rpp => 2).clone]
58
- end
59
-
60
- should "not be the same" do
61
- topic[0] != topic[-1]
62
- end
63
- end
64
- end
1
+ # require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
2
+ #
3
+ # context "A Listing created from scratch" do
4
+ # setup do
5
+ # CityGrid::Listing.new "id" => 7117426
6
+ # end
7
+ #
8
+ # should "load details after first access" do
9
+ # topic.tips
10
+ # end
11
+ # end
12
+ #
13
+ # context "A Listing created from search" do
14
+ # setup do
15
+ # CityGrid.search(:what => "food", :where => "seattle").first
16
+ # end
17
+ #
18
+ # # Test loading
19
+ # # ----------------- #
20
+ # context "that has not been accessed" do
21
+ # should "not be loaded" do
22
+ # !topic.clone.instance_variable_get "@loaded"
23
+ # end
24
+ # end
25
+ #
26
+ # context "that has a method called on it for the first time" do
27
+ # setup do
28
+ # old = topic.clone
29
+ # listing = topic.clone
30
+ # listing.summary
31
+ # [old, listing]
32
+ # end
33
+ #
34
+ # should "become loaded" do
35
+ # topic.last.instance_variable_get "@loaded"
36
+ # end
37
+ #
38
+ # should "update details into itself" do
39
+ # topic.first != topic.last
40
+ # end
41
+ # end
42
+ #
43
+ # # # Test offers, reviews
44
+ # # # -------------------- #
45
+ # # should "get offers" do
46
+ # # !topic.offers.empty?
47
+ # # end
48
+ # #
49
+ # # # Test reviews
50
+ # # # -------------------- #
51
+ # # should "get reviews" do
52
+ # # !topic.reviews.empty?
53
+ # # end
54
+ #
55
+ # context "updating reviews" do
56
+ # setup do
57
+ # [topic.reviews.clone, topic.reviews(:rpp => 2).clone]
58
+ # end
59
+ #
60
+ # should "not be the same" do
61
+ # topic[0] != topic[-1]
62
+ # end
63
+ # end
64
+ # end
data/test/test_search.rb CHANGED
@@ -1,4 +1,4 @@
1
- require "helper"
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
2
2
 
3
3
  context "searching for a CityGrid listing" do
4
4
  setup do
@@ -13,6 +13,26 @@ context "searching for a CityGrid listing" do
13
13
  topic.empty?
14
14
  end
15
15
 
16
+ should "create an array containing Listing objects" do
17
+ topic.reject do |listing|
18
+ listing.is_a? CityGrid::Listing
19
+ end.empty?
20
+ end
21
+ end
22
+
23
+ context "searching for a special CityGrid listing" do
24
+ setup do
25
+ CityGrid.search :what => "Divine Dynasty Cleaners", :where => "84129"
26
+ end
27
+
28
+ should "create an array" do
29
+ topic.is_a? Array
30
+ end
31
+
32
+ should_not "be empty" do
33
+ topic.empty?
34
+ end
35
+
16
36
  should "create an array containing Listing objects" do
17
37
  topic.reject do |listing|
18
38
  listing.is_a? CityGrid::Listing
@@ -1,4 +1,4 @@
1
- require "helper"
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
2
2
 
3
3
  super_array = CityGrid::Abstraction::SuperArray
4
4
  super_hash = CityGrid::Abstraction::SuperHash
@@ -1,4 +1,4 @@
1
- require "helper"
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
2
2
 
3
3
  context "A SuperHash" do
4
4
  # Test creation
@@ -0,0 +1,25 @@
1
+ .context_result
2
+ .title{:class => context_result.passed? ? "passed" : "failed"}= context_result.desc
3
+
4
+ .content
5
+ .passes
6
+ - context_result.passes.each do |pass|
7
+ .pass
8
+ == <b style="color:green">+</b>
9
+ #{pass.desc}
10
+ - if pass.result != ""
11
+ ==: #{pass.result}
12
+
13
+ .fails
14
+ - context_result.fails.each do |fail|
15
+ .fail
16
+ == <b style="color:red">-</b>
17
+ #{fail.desc}
18
+ - if fail.result != ""
19
+ ==: #{fail.result}
20
+
21
+ .requests
22
+ = partial :request, :collection => context_result.requests
23
+
24
+ .children
25
+ = partial :context_result, :collection => context_result.children
@@ -0,0 +1,3 @@
1
+ %textarea.curl
2
+ = request.to_curl
3
+
@@ -0,0 +1,4 @@
1
+ .test_result
2
+ .title= test_result.desc
3
+ .results
4
+ = partial :context_result, :collection => test_result.results
@@ -0,0 +1,53 @@
1
+ body {
2
+ font-family: Arial;
3
+ font-size: 14px;
4
+ }
5
+
6
+ .passed {
7
+ color: green;
8
+ }
9
+
10
+ .failed {
11
+ color: red;
12
+ }
13
+
14
+ .test_result {
15
+ .title {
16
+ font-weight: bold;
17
+ font-size: 16px;
18
+ margin-bottom: 5px;
19
+ }
20
+
21
+ .results {
22
+ margin-left: 10px;
23
+ }
24
+ }
25
+ .context_result {
26
+ margin-bottom: 20px;
27
+ .title {
28
+ font-weight: bold;
29
+ }
30
+
31
+ .content {
32
+ margin-left: 20px;
33
+
34
+ .passes {
35
+ .pass {
36
+ // color: green;
37
+ }
38
+ }
39
+
40
+ .fails {
41
+ .fail {
42
+ // color: red;
43
+ }
44
+ }
45
+
46
+ .requests {
47
+ .curl {
48
+ width: 1000px;
49
+ height: 60px;
50
+ }
51
+ }
52
+ }
53
+ }
data/views/test.haml ADDED
@@ -0,0 +1,8 @@
1
+ %html
2
+ %head
3
+ %link{:rel => "stylesheet", :href => "/stylesheets/test.css"}
4
+ %script{:language => "javascript", :src => "http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"}
5
+ %script{:language => "javascript", :src => "/javascript/dashboard.js"}
6
+
7
+ %body
8
+ = partial :test_result, :collection => @results