RusaMember 1.0.0 → 1.0.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.
@@ -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: