craig 0.0.1.pre → 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. data/README.md +165 -28
  2. data/Rakefile +7 -0
  3. data/craig.gemspec +2 -2
  4. data/lib/craig/categories.rb +169 -0
  5. data/lib/craig/cities.rb +262 -0
  6. data/lib/craig/craigslist.rb +49 -0
  7. data/lib/craig/listing.rb +73 -0
  8. data/lib/craig/node.rb +151 -0
  9. data/lib/craig/page.rb +50 -0
  10. data/lib/craig/tasks/update_cities.rb +95 -0
  11. data/lib/craig/version.rb +1 -1
  12. data/lib/craig.rb +24 -1
  13. data/test/community_events_test.rb +56 -0
  14. data/test/for_sale_cars_trucks_test.rb +38 -0
  15. data/test/for_sale_photo_video_test.rb +24 -0
  16. data/test/parsing_test.rb +119 -0
  17. data/test/personals_casual_encounters_test.rb +36 -0
  18. data/test/resumes_test.rb +24 -0
  19. data/test/sample_html/community_event-one-page_files/craigslist.css +1487 -0
  20. data/test/sample_html/community_event-one-page_files/formats.js +100 -0
  21. data/test/sample_html/community_event-one-page_files/jquery-1.7.2.js +632 -0
  22. data/test/sample_html/community_event-one-page_files/jquery.form-defaults.js +2 -0
  23. data/test/sample_html/community_event-one-page_files/toChecklist.js +47 -0
  24. data/test/sample_html/community_event-one-page_files/tocs.js +30 -0
  25. data/test/sample_html/community_events-one-page.html +294 -0
  26. data/test/sample_html/community_events.html +1077 -0
  27. data/test/sample_html/community_events_files/craigslist.css +1487 -0
  28. data/test/sample_html/community_events_files/formats.js +100 -0
  29. data/test/sample_html/community_events_files/jquery-1.7.2.js +632 -0
  30. data/test/sample_html/community_events_files/jquery-1.js +632 -0
  31. data/test/sample_html/community_events_files/jquery.form-defaults.js +2 -0
  32. data/test/sample_html/community_events_files/jquery.js +2 -0
  33. data/test/sample_html/community_events_files/toChecklist.js +47 -0
  34. data/test/sample_html/community_events_files/tocs.js +30 -0
  35. data/test/sample_html/for_sale.html +1478 -0
  36. data/test/sample_html/for_sale_cars_trucks.html +1483 -0
  37. data/test/sample_html/for_sale_cars_trucks_files/craigslist.css +1487 -0
  38. data/test/sample_html/for_sale_cars_trucks_files/formats.js +100 -0
  39. data/test/sample_html/for_sale_cars_trucks_files/jquery-1.7.2.js +632 -0
  40. data/test/sample_html/for_sale_cars_trucks_files/jquery.form-defaults.js +2 -0
  41. data/test/sample_html/for_sale_cars_trucks_files/toChecklist.js +47 -0
  42. data/test/sample_html/for_sale_cars_trucks_files/tocs.js +30 -0
  43. data/test/sample_html/for_sale_files/craigslist.css +1474 -0
  44. data/test/sample_html/for_sale_files/formats.js +107 -0
  45. data/test/sample_html/for_sale_files/jquery-1.js +632 -0
  46. data/test/sample_html/for_sale_files/jquery.js +2 -0
  47. data/test/sample_html/for_sale_files/toChecklist.js +47 -0
  48. data/test/sample_html/for_sale_files/tocs.js +30 -0
  49. data/test/sample_html/for_sale_photo_video.html +674 -0
  50. data/test/sample_html/for_sale_photo_video_files/craigslist.css +1487 -0
  51. data/test/sample_html/for_sale_photo_video_files/formats.js +100 -0
  52. data/test/sample_html/for_sale_photo_video_files/jquery-1.7.2.js +632 -0
  53. data/test/sample_html/for_sale_photo_video_files/jquery.form-defaults.js +2 -0
  54. data/test/sample_html/for_sale_photo_video_files/toChecklist.js +47 -0
  55. data/test/sample_html/for_sale_photo_video_files/tocs.js +30 -0
  56. data/test/sample_html/gigs.html +1047 -0
  57. data/test/sample_html/gigs_files/craigslist.css +1474 -0
  58. data/test/sample_html/gigs_files/formats.js +107 -0
  59. data/test/sample_html/gigs_files/jquery-1.js +632 -0
  60. data/test/sample_html/gigs_files/jquery.js +2 -0
  61. data/test/sample_html/gigs_files/toChecklist.js +47 -0
  62. data/test/sample_html/gigs_files/tocs.js +30 -0
  63. data/test/sample_html/housing.html +1406 -0
  64. data/test/sample_html/housing_vacation_rentals_files/craigslist.css +1474 -0
  65. data/test/sample_html/housing_vacation_rentals_files/formats.js +107 -0
  66. data/test/sample_html/housing_vacation_rentals_files/jquery-1.7.2.js +632 -0
  67. data/test/sample_html/housing_vacation_rentals_files/jquery.form-defaults.js +2 -0
  68. data/test/sample_html/housing_vacation_rentals_files/toChecklist.js +47 -0
  69. data/test/sample_html/housing_vacation_rentals_files/tocs.js +30 -0
  70. data/test/sample_html/jobs.html +1120 -0
  71. data/test/sample_html/jobs_files/craigslist.css +1474 -0
  72. data/test/sample_html/jobs_files/formats.js +107 -0
  73. data/test/sample_html/jobs_files/jquery-1.js +632 -0
  74. data/test/sample_html/jobs_files/jquery.js +2 -0
  75. data/test/sample_html/jobs_files/toChecklist.js +47 -0
  76. data/test/sample_html/jobs_files/tocs.js +30 -0
  77. data/test/sample_html/personals.html +1096 -0
  78. data/test/sample_html/personals_casual_encounters.html +1086 -0
  79. data/test/sample_html/personals_casual_encounters_files/craigslist.css +1487 -0
  80. data/test/sample_html/personals_casual_encounters_files/formats.js +100 -0
  81. data/test/sample_html/personals_casual_encounters_files/jquery-1.7.2.js +632 -0
  82. data/test/sample_html/personals_casual_encounters_files/jquery.form-defaults.js +2 -0
  83. data/test/sample_html/personals_casual_encounters_files/toChecklist.js +47 -0
  84. data/test/sample_html/personals_casual_encounters_files/tocs.js +30 -0
  85. data/test/sample_html/personals_strictly_platonic_files/craigslist.css +1474 -0
  86. data/test/sample_html/personals_strictly_platonic_files/formats.js +107 -0
  87. data/test/sample_html/personals_strictly_platonic_files/jquery-1.js +632 -0
  88. data/test/sample_html/personals_strictly_platonic_files/jquery.js +2 -0
  89. data/test/sample_html/personals_strictly_platonic_files/toChecklist.js +47 -0
  90. data/test/sample_html/personals_strictly_platonic_files/tocs.js +30 -0
  91. data/test/sample_html/resumes.html +811 -0
  92. data/test/sample_html/resumes_files/craigslist.css +1487 -0
  93. data/test/sample_html/resumes_files/formats.js +100 -0
  94. data/test/sample_html/resumes_files/jquery-1.7.2.js +632 -0
  95. data/test/sample_html/resumes_files/jquery.form-defaults.js +2 -0
  96. data/test/sample_html/resumes_files/toChecklist.js +47 -0
  97. data/test/sample_html/resumes_files/tocs.js +30 -0
  98. data/test/sample_html/services.html +1096 -0
  99. data/test/sample_html/services_files/craigslist.css +1487 -0
  100. data/test/sample_html/services_files/formats.js +100 -0
  101. data/test/sample_html/services_files/jquery-1.7.2.js +632 -0
  102. data/test/sample_html/services_files/jquery.form-defaults.js +2 -0
  103. data/test/sample_html/services_files/toChecklist.js +47 -0
  104. data/test/sample_html/services_files/tocs.js +30 -0
  105. data/test/sample_html/test.rb +309 -0
  106. data/test/services_test.rb +25 -0
  107. data/test/test_helper.rb +26 -0
  108. metadata +205 -9
@@ -0,0 +1,36 @@
1
+
2
+ require "test_helper"
3
+
4
+ module Craig
5
+
6
+ dom = Helper.dom("personals_casual_encounters.html")
7
+ listings = Page.new(:personals, :casual_encounters, dom).listings
8
+
9
+ describe "Craig" do
10
+
11
+ it "parses :personals => :casual_encounters" do
12
+ listing = listings[63]
13
+
14
+ assert { listing.title == "looking for a real couple - m4mw - 37" }
15
+ assert { listing.location == "abilene" }
16
+ assert { listing.has_image? == false }
17
+ assert { listing.has_map? == false }
18
+ assert { listing.age == 37 }
19
+ assert { listing.seeking == "m4mw" }
20
+ assert { listing.posted_at.strftime("%a %b %-d") == "Tue Jan 22" }
21
+ end
22
+
23
+ it "knows when no age is given" do
24
+ listing = listings[74]
25
+
26
+ assert { listing.title == "CD - t4m" }
27
+ assert { listing.location == "Abilene" }
28
+ assert { listing.has_image? == false }
29
+ assert { listing.has_map? == false }
30
+ assert { listing.age == 0 }
31
+ assert { listing.seeking == "t4m" }
32
+ assert { listing.posted_at.strftime("%a %b %-d") == "Tue Jan 22" }
33
+ end
34
+ end
35
+
36
+ end
@@ -0,0 +1,24 @@
1
+ require "test_helper"
2
+
3
+ module Craig
4
+
5
+ dom = Helper.dom("resumes.html")
6
+
7
+ describe "Craig" do
8
+ it "parses :resumes" do
9
+ listings = Page.new(:resumes, nil, dom).listings
10
+ listing = listings[52]
11
+
12
+ assert { listing.title == "Female / 28 / Seeking Employment" }
13
+ assert { listing.location == "Sweetwater Texas" }
14
+ assert { listing.has_image? == false }
15
+ deny { listing.respond_to? :price }
16
+ deny { listing.respond_to? :bedrooms }
17
+ deny { listing.respond_to? :square_feet }
18
+ deny { listing.respond_to? :seller }
19
+ assert { listing.has_map? == false }
20
+ assert { listing.posted_at.strftime("%a %b %-d") == "Fri Dec 20" }
21
+ end
22
+ end
23
+
24
+ end