RusaMember 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,113 @@
1
+ #!/usr/bin/env ruby -w
2
+
3
+ ##
4
+ # Student Name: bill dussler
5
+ # Homework Week: 8
6
+ #
7
+
8
+ module HtmlFragments
9
+
10
+ RESULT_1 = <<-EOF
11
+ <P><B>Dussler</B>, William | RUSA No. 0137 | Burien, WA
12
+ <BR>Seattle International Randonneurs | ACP Club Code: 947018
13
+ <BR><A HREF="/join.html">Membership Expires:</A>
14
+ <B>2008/12/31</B>
15
+ EOF
16
+
17
+ RESULT_2 = <<-EOF
18
+ <P><B>Aard</B>, Arar | RUSA No. 013 | Boston, MA
19
+ <BR>Boston Brevet Series | ACP Club Code: 123
20
+ <BR><A HREF="/join.html">Membership Expires:</A>
21
+ <B>2009/12/31</B>
22
+ EOF
23
+
24
+ RESULT_3 = <<-EOF
25
+ <P><B>Zard</B>, Marmar | RUSA No. 9137 | Bothell, WA
26
+ <BR>Ballard Vikings | ACP Club Code: 947018
27
+ <BR><A HREF="/join.html">Membership Expires:</A>
28
+ <B>1999/12/31</B>
29
+ EOF
30
+
31
+ HTML_OPEN = <<-EOF
32
+ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 3.2//EN">
33
+ <HTML>
34
+ <HEAD>
35
+ <TITLE>RUSA: Members </TITLE>
36
+ <META HTTP-EQUIV="Keywords" CONTENT="Bicycle Touring, Bicycle Racing, Long Distance Cycling, Cycling, Bicycling, Randonneur, Randonneuring, Brevet, RUSA">
37
+ <META HTTP-EQUIV="Reply-to" CONTENT="lois_springsteen@prodigy.net (Lois Springsteen)">
38
+ <BASEFONT SIZE=3>
39
+ </HEAD>
40
+ <BODY BGCOLOR="#FFFFFF" TEXT="#003399" LINK="#FF0000" VLINK="#FF0000" ALINK="#003399">
41
+ <TABLE BORDER=0 HSPACE=0 cellpadding=10 WIDTH=100%>
42
+ <TR>
43
+ <TD ALIGN=left VALIGN=middle width=140>
44
+ <IMG SRC="http://www.rusa.org/Images/logorusa.gif" ALT="RUSA Logo" HSPACE=0 ALIGN=absmiddle>
45
+ </TD>
46
+ <TD ALIGN=left VALIGN=middle>
47
+ <H1><FONT FACE="ARIAL, HELVETICA"><B>Members</B></FONT></H1>
48
+ </TD>
49
+ <TD ALIGN=right VALIGN=middle></TD>
50
+ </TR>
51
+ </TABLE>
52
+ <HR SIZE=3 WIDTH="100%" ALIGN=CENTER>
53
+ <TABLE BORDER=0 HSPACE=0 cellpadding=10>
54
+ <TR ALIGN=left VALIGN=top width=140>
55
+ <TD NOWRAP>
56
+ <FONT FACE="ARIAL, HELVETICA" SIZE=-1>
57
+ <B>General</B><SMALL>
58
+ <BR>-- <A HREF="http://www.rusa.org/announce.html"><FONT COLOR="#3cb545">Announcements (11/28)</FONT></A>
59
+ <BR>-- <A HREF="http://www.rusa.org/about.html">About Randonneuring</A>
60
+ <BR>-- <A HREF="http://www.rusa.org/links.html">Links</A>
61
+ <BR>-- <A HREF="http://www.rusa.org/index.html">Home</A>
62
+ </SMALL>
63
+ <P><B>Search For</B><SMALL>
64
+ <BR>-- <A HREF="http://www.rusa.org/cgi-bin/eventsearch_GF.pl">Rides</A>
65
+ <BR>-- <A HREF="http://www.rusa.org/results_search.html">Results</A>
66
+ <BR>-- <A HREF="http://www.rusa.org/cgi-bin/membersearch_GF.pl">Members</A>
67
+ <BR>-- <A HREF="http://www.rusa.org/cgi-bin/officialsearch_GF.pl">Officials</A>
68
+ <BR>-- <A HREF="http://www.rusa.org/cgi-bin/clubsearch_GF.pl">ACP Club Codes</A>
69
+ <BR>-- <A HREF="http://www.rusa.org/cgi-bin/routesearch_GF.pl">Routes</A>
70
+ <BR>-- <A HREF="http://www.rusa.org/teamrando.html">Team Events</A>
71
+ <BR>-- <A HREF="http://www.rusa.org/perminfo.html">Permanents</A>
72
+ </SMALL>
73
+ <P><B>Members' Info</B><SMALL>
74
+ <BR>-- <A HREF="http://www.rusa.org/join.html">Join/Renew</A>
75
+ <BR>-- <A HREF="http://www.rusa.org/awards.html">Awards</A>
76
+ <BR>-- <A HREF="http://www.rusa.org/cgi-bin/store_GF.pl">Online Store</A>
77
+ <BR>-- <A HREF="http://www.rusa.org/nletter.html">Newsletter</A>
78
+ <BR>-- <A HREF="http://www.rusa.org/pbpphotogallery.html">Photo Gallery</A>
79
+ <BR>-- <A HREF="http://www.rusa.org/stories.html">Rider Stories</A>
80
+ </SMALL>
81
+ <P><B>Long Brevets</B><SMALL>
82
+ <BR>-- <A HREF="http://www.rusa.org/pbp.html">PBP: Paris-Brest-Paris</A>
83
+ <BR>-- <A HREF="http://www.rusa.org/1200kms.html">Others</A>
84
+ </SMALL>
85
+ <P><B>Administration</B><SMALL>
86
+ <BR>-- <A HREF="http://www.rusa.org/rules.html">Rules</A>
87
+ <BR>-- <A HREF="http://www.rusa.org/rbakit.html">RBAs</A>
88
+ <BR>-- <A HREF="http://www.rusa.org/records.html">Records</A>
89
+ </SMALL>
90
+ </FONT>
91
+ </TD>
92
+ <TD ALIGN=left VALIGN=top>
93
+
94
+ 999999 Matches Found
95
+ EOF
96
+
97
+ HTML_CLOSE = <<-EOF
98
+ </TD>
99
+ </TR>
100
+ </TABLE>
101
+ <HR SIZE=3 WIDTH="100%" ALIGN=Center>
102
+ <P><FONT FACE="ARIAL, HELVETICA" SIZE=-1>Revision: November 29, 2008<BR>
103
+ Please direct questions, comments, or problem reports to the <A HREF="http://www.rusa.org/webmaster.html">webmaster</A>.<BR>
104
+ <B>&copy; Copyright 2008, <A HREF="http://www.rusa.org">Randonneurs USA</A></B>,
105
+ except as noted otherwise.</FONT></P>
106
+ </BODY>
107
+ </HTML>
108
+
109
+ </BODY>
110
+ </HTML>
111
+ EOF
112
+
113
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  ##
4
4
  # Student Name: bill dussler
5
- # Homework Week: 7
5
+ # Homework Week: 8
6
6
  #
7
7
 
8
8
  $: << 'lib'
@@ -13,38 +13,112 @@ require 'time'
13
13
  require 'lib/member'
14
14
  require 'parse_member'
15
15
  require 'parse_result'
16
- require 'pp'
17
16
 
18
- #require 'html_frags'
19
-
20
- class TestParseMember < Test::Unit::TestCase
17
+ class TestParseResult < Test::Unit::TestCase
21
18
  def setup
22
19
  @stringIO_mock = Proc.new{|file| StringIO.open file }
23
20
  @localFile_mock = Proc.new{|file| open file }
24
21
  @pm = ParseMember.new
25
22
 
26
23
  end
27
- #
28
- def test_1
29
- assert true
24
+
25
+ def test_parse_no_results
26
+ member = Person.new({
27
+ :id => '0137',
28
+ :first_name => 'william',
29
+ :last_name => 'dussler',
30
+ })
31
+
32
+ pr = ParseResult.new
33
+ pr.results(member) {|file| open "test/files/no_results.html"}
34
+ assert_equal 0, member.results.size
30
35
  end
31
36
 
32
- def test_parse_1
33
- member = Person.new
34
- member.id = '0137'
35
- member.first_name = 'william'
36
- member.last_name = 'dussler'
37
-
37
+ def test_parse_one_result
38
+ member = Person.new({
39
+ :id => '0137',
40
+ :first_name => 'william',
41
+ :last_name => 'dussler',
42
+ })
43
+
44
+ pr = ParseResult.new
45
+ pr.results(member) {|file| open "test/files/one_result.html"}
46
+ assert_equal 1, member.results.size
47
+
48
+ assert_equal Time.parse("09/13/2008"), member.results[0].date
49
+ assert_equal "50055", member.results[0].certificate
50
+ assert_equal "600", member.results[0].distance
51
+ assert_equal "ACPB", member.results[0].type
52
+ end
53
+
54
+ def test_parse_multi_years
55
+ member = Person.new({
56
+ :id => '0137',
57
+ :first_name => 'william',
58
+ :last_name => 'dussler',
59
+ })
60
+
38
61
  pr = ParseResult.new
39
62
  pr.results(member, 2008) {|file| open "test/files/dussler_results_2008.html"}
63
+ pr.results(member, 2006) {|file| open "test/files/dussler_results_2006.html"}
40
64
 
41
- assert_equal 6, member.results.size
42
- #pr.results(member, 2007) #{|file| open "files/resultsOut.html"}
43
- #pr.results(member, 2006) #{|file| open "files/resultsOut.html"}
65
+ assert_equal 11, member.results.size
66
+
67
+ assert_equal 2, member.awards[2008].size
68
+ assert_equal 2008, member.awards[2008][0].year
69
+ assert_equal "RUSA 1570 km", member.awards[2008][0].type
70
+ assert_equal "Super Randonneur", member.awards[2008][1].type
71
+
72
+ assert_equal 1, member.awards[2006].size
73
+ assert_equal 2006, member.awards[2006][0].year
74
+ assert_equal "RUSA 2260 km", member.awards[2006][0].type
75
+
76
+ assert_equal Time.parse("07/12/2008"), member.results[0].date
77
+ assert_equal "RUSA-P02782", member.results[0].certificate
78
+ assert_equal "100", member.results[0].distance
79
+ assert_equal "RUSAP", member.results[0].type
80
+ end
44
81
 
45
- member.results.sort {|a,b| (a.date <=> b.date) }.each do |result|
46
- #pp result
47
- end
82
+ def test_parse_multi_members
83
+ member1 = Person.new({
84
+ :id => '0137',
85
+ :first_name => 'william',
86
+ :last_name => 'dussler',
87
+ })
88
+
89
+ member2 = Person.new({
90
+ :id => '0064',
91
+ :first_name => 'mark',
92
+ :last_name => 'thomas',
93
+ })
94
+
95
+ pr = ParseResult.new
96
+ pr.results(member1, 2008) {|file| open "test/files/dussler_results_2008.html"}
97
+ pr.results(member2, 2008) {|file| open "test/files/thomas_results_2008.html"}
98
+
99
+ # first member
100
+ assert_equal 6, member1.results.size
101
+
102
+ assert_equal 2, member1.awards[2008].size
103
+ assert_equal 2008, member1.awards[2008][0].year
104
+ assert_equal "RUSA 1570 km", member1.awards[2008][0].type
105
+ assert_equal "Super Randonneur", member1.awards[2008][1].type
106
+ assert_equal Time.parse("07/12/2008"), member1.results[0].date
107
+ assert_equal "RUSA-P02782", member1.results[0].certificate
108
+ assert_equal "100", member1.results[0].distance
109
+ assert_equal "RUSAP", member1.results[0].type
110
+
111
+ # second member
112
+ assert_equal 23, member2.results.size
113
+ assert_equal 1, member2.awards[2008].size
114
+ assert_equal 2008, member2.awards[2008][0].year
115
+ assert_equal "RUSA 5549 km", member2.awards[2008][0].type
116
+
117
+ assert_equal Time.parse("09/13/2008"), member2.results[22].date
118
+ assert_equal "50062", member2.results[22].certificate
119
+ assert_equal "600", member2.results[22].distance
120
+ assert_equal "ACPB", member2.results[22].type
121
+ assert_equal "Seattle International Randonneurs / 947018", member2.results[22].organizer
48
122
 
49
123
  end
50
124
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: RusaMember
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - bill dussler
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-12-17 00:00:00 -08:00
12
+ date: 2008-12-20 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -33,13 +33,45 @@ extra_rdoc_files:
33
33
  - History.txt
34
34
  - Manifest.txt
35
35
  - README.txt
36
+ - test/files/clubMembers.txt
37
+ - test/files/doe.txt
38
+ - test/files/dussler.txt
39
+ - test/files/member_pre.txt
40
+ - test/files/member_search.txt
41
+ - test/files/multiSmith.txt
42
+ - test/files/post.txt
43
+ - test/files/smith.txt
36
44
  files:
37
45
  - History.txt
38
46
  - Manifest.txt
39
47
  - README.txt
40
48
  - Rakefile
41
49
  - bin/rusa_member
50
+ - lib/member.rb
51
+ - lib/parse_member.rb
52
+ - lib/parse_result.rb
42
53
  - lib/rusa_member.rb
54
+ - test/files/boston.html
55
+ - test/files/clubMembers.txt
56
+ - test/files/doe.txt
57
+ - test/files/dussler.html
58
+ - test/files/dussler.txt
59
+ - test/files/dussler_results_2006.html
60
+ - test/files/dussler_results_2007.html
61
+ - test/files/dussler_results_2008.html
62
+ - test/files/member_pre.txt
63
+ - test/files/member_search.txt
64
+ - test/files/multiSmith.txt
65
+ - test/files/no_results.html
66
+ - test/files/one_result.html
67
+ - test/files/post.txt
68
+ - test/files/smith.html
69
+ - test/files/smith.txt
70
+ - test/files/thomas.html
71
+ - test/files/thomas_results_2008.html
72
+ - test/html_frags.rb
73
+ - test/test_parse_member.rb
74
+ - test/test_parse_results.rb
43
75
  has_rdoc: true
44
76
  homepage: http://rubyforge.org/projects/uwruby
45
77
  post_install_message: