RusaMember 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,6 @@
1
+ === 1.0.0 / 2008-12-17
2
+
3
+ * 1 major enhancement
4
+
5
+ * Birthday!
6
+
@@ -0,0 +1,6 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README.txt
4
+ Rakefile
5
+ bin/rusa_member
6
+ lib/rusa_member.rb
@@ -0,0 +1,49 @@
1
+ = RusaMember
2
+
3
+ * http://rubyforge.org/projects/uwruby
4
+ * http://uwruby.rubyforge.org/RusaMember
5
+
6
+ == DESCRIPTION:
7
+
8
+ Extract data from RUSA web site to get members information, results, awards
9
+
10
+ == FEATURES/PROBLEMS:
11
+
12
+ * FIX (list of features or problems)
13
+
14
+ == SYNOPSIS:
15
+
16
+ FIX (code sample of usage)
17
+
18
+ == REQUIREMENTS:
19
+
20
+ * FIX (list of requirements)
21
+
22
+ == INSTALL:
23
+
24
+ * FIX (sudo gem install, anything else)
25
+
26
+ == LICENSE:
27
+
28
+ (The MIT License)
29
+
30
+ Copyright (c) 2008 Bill Dussler
31
+
32
+ Permission is hereby granted, free of charge, to any person obtaining
33
+ a copy of this software and associated documentation files (the
34
+ 'Software'), to deal in the Software without restriction, including
35
+ without limitation the rights to use, copy, modify, merge, publish,
36
+ distribute, sublicense, and/or sell copies of the Software, and to
37
+ permit persons to whom the Software is furnished to do so, subject to
38
+ the following conditions:
39
+
40
+ The above copyright notice and this permission notice shall be
41
+ included in all copies or substantial portions of the Software.
42
+
43
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
44
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
45
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
46
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
47
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
48
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
49
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,17 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'rubygems'
4
+ require 'hoe'
5
+ #require 'test/unit'
6
+ require './lib/rusa_member.rb'
7
+ #require './test/test_parse_member.rb'
8
+ #require './test/test_parse_results.rb'
9
+
10
+ Hoe.new('RusaMember', RusaMember::VERSION) do |p|
11
+ p.rubyforge_name = 'uwruby'
12
+ p.developer('bill dussler', 'bdussler@gmail.com')
13
+
14
+ end
15
+
16
+ #task :gem => 'test'
17
+ # vim: syntax=Ruby
File without changes
@@ -0,0 +1,3 @@
1
+ class RusaMember
2
+ VERSION = '1.0.0'
3
+ end
@@ -0,0 +1,122 @@
1
+ #!/usr/bin/env ruby -w
2
+
3
+ ##
4
+ # Student Name: bill dussler
5
+ # Homework Week: 7
6
+ #
7
+
8
+ $: << 'lib'
9
+
10
+ require 'test/unit'
11
+ require 'parse_member'
12
+ require 'stringio'
13
+ require 'time'
14
+ require 'lib/member'
15
+
16
+ require 'test/html_frags'
17
+
18
+ class TestParseMember < Test::Unit::TestCase
19
+ include HtmlFragments
20
+
21
+ def setup
22
+ @stringIO_mock = Proc.new{|file| StringIO.open file }
23
+ @localFile_mock = Proc.new{|file| open file }
24
+ @pm = ParseMember.new
25
+
26
+ end
27
+
28
+ def test_parse_1
29
+ file = HTML_OPEN + RESULT_1 + HTML_CLOSE
30
+ @pm.url = file
31
+ @pm.run(&@stringIO_mock)
32
+
33
+ assert_equal 1, @pm.members.size
34
+ assert_equal 'Dussler', @pm.members[137].last_name
35
+ assert_equal 'William', @pm.members[137].first_name
36
+ assert_equal '0137', @pm.members[137].id
37
+ assert_equal Time.parse('12/31/2008'), @pm.members[137].member_expiration_date
38
+ assert_equal 'Seattle International Randonneurs', @pm.members[137].club
39
+ assert_nil @pm.members[1]
40
+ end
41
+
42
+ def test_parse_2
43
+ file = HTML_OPEN + RESULT_1 + RESULT_2 + HTML_CLOSE
44
+ @pm.url = file
45
+ @pm.run(&@stringIO_mock)
46
+
47
+ assert_equal 2, @pm.members.size
48
+ assert_equal 'Dussler', @pm.members[137].last_name
49
+ assert_equal 'William', @pm.members[137].first_name
50
+ assert_equal '0137', @pm.members[137].id
51
+ assert_equal Time.parse('12/31/2008'), @pm.members[137].member_expiration_date
52
+ assert_equal 'Seattle International Randonneurs', @pm.members[137].club
53
+
54
+ assert_equal 'Aard', @pm.members[13].last_name
55
+ assert_equal 'Arar', @pm.members[13].first_name
56
+ assert_nil @pm.members[12]
57
+ end
58
+
59
+ def test_parse_no_results
60
+ file = HTML_OPEN + HTML_CLOSE
61
+ @pm.url = file
62
+ @pm.run(&@stringIO_mock)
63
+
64
+ assert_equal 0, @pm.members.size
65
+ assert_nil @pm.members[137]
66
+ end
67
+
68
+ def test_id_fetch_multiple_times
69
+ @pm.url = 'test/files/dussler.html'
70
+ @pm.run(&@localFile_mock)
71
+
72
+ @pm.url = 'test/files/thomas.html'
73
+ @pm.run(&@localFile_mock)
74
+
75
+ assert_equal 2, @pm.members.size
76
+ assert_equal 'Dussler', @pm.members[137].last_name
77
+ assert_equal 'William', @pm.members[137].first_name
78
+ assert_equal '0137', @pm.members[137].id
79
+ assert_equal Time.parse('12/31/2008'), @pm.members[137].member_expiration_date
80
+ assert_equal 'Seattle International Randonneurs', @pm.members[137].club
81
+ assert_equal 'Thomas', @pm.members[64].last_name
82
+ assert_equal 'Mark', @pm.members[64].first_name
83
+ assert_equal '0064', @pm.members[64].id
84
+ end
85
+
86
+ def test_name_fetch_multiple_people
87
+ @pm.url = 'test/files/dussler.html'
88
+ @pm.run(&@localFile_mock)
89
+
90
+ @pm.url = 'test/files/smith.html'
91
+ @pm.run(&@localFile_mock)
92
+
93
+ assert_equal 20, @pm.members.size
94
+ member = @pm.members[137]
95
+ assert_equal 'Dussler', member.last_name
96
+ assert_equal 'William', member.first_name
97
+ assert_equal '0137', member.id
98
+ assert_equal Time.parse('12/31/2008'), member.member_expiration_date
99
+ assert_equal 'Seattle International Randonneurs', member.club
100
+
101
+ member = @pm.members[1496]
102
+ assert_equal 'Smith', member.last_name
103
+ assert_equal 'Donald', member.first_name
104
+ assert_equal '1496', member.id
105
+ assert_equal Time.parse('12/31/2009'), member.member_expiration_date
106
+ assert_equal 'Seattle International Randonneurs', member.club
107
+ end
108
+
109
+ def test_club_fetch
110
+ @pm.url = 'test/files/boston.html'
111
+ @pm.run(&@localFile_mock)
112
+
113
+ assert_equal 28, @pm.members.size
114
+ member = @pm.members[2271]
115
+ assert_equal 'Coldwell', member.last_name
116
+ assert_equal 'Charles', member.first_name
117
+ assert_equal '2271', member.id
118
+ assert_equal Time.parse('12/31/2009'), member.member_expiration_date
119
+ assert_equal 'Boston Brevet Series', member.club
120
+ end
121
+
122
+ end
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env ruby -w
2
+
3
+ ##
4
+ # Student Name: bill dussler
5
+ # Homework Week: 7
6
+ #
7
+
8
+ $: << 'lib'
9
+
10
+ require 'test/unit'
11
+ require 'stringio'
12
+ require 'time'
13
+ require 'lib/member'
14
+ require 'parse_member'
15
+ require 'parse_result'
16
+ require 'pp'
17
+
18
+ #require 'html_frags'
19
+
20
+ class TestParseMember < Test::Unit::TestCase
21
+ def setup
22
+ @stringIO_mock = Proc.new{|file| StringIO.open file }
23
+ @localFile_mock = Proc.new{|file| open file }
24
+ @pm = ParseMember.new
25
+
26
+ end
27
+ #
28
+ def test_1
29
+ assert true
30
+ end
31
+
32
+ def test_parse_1
33
+ member = Person.new
34
+ member.id = '0137'
35
+ member.first_name = 'william'
36
+ member.last_name = 'dussler'
37
+
38
+ pr = ParseResult.new
39
+ pr.results(member, 2008) {|file| open "test/files/dussler_results_2008.html"}
40
+
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"}
44
+
45
+ member.results.sort {|a,b| (a.date <=> b.date) }.each do |result|
46
+ #pp result
47
+ end
48
+
49
+ end
50
+
51
+
52
+ end
metadata ADDED
@@ -0,0 +1,72 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: RusaMember
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - bill dussler
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-12-17 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: hoe
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.8.2
24
+ version:
25
+ description: Extract data from RUSA web site to get members information, results, awards
26
+ email:
27
+ - bdussler@gmail.com
28
+ executables:
29
+ - rusa_member
30
+ extensions: []
31
+
32
+ extra_rdoc_files:
33
+ - History.txt
34
+ - Manifest.txt
35
+ - README.txt
36
+ files:
37
+ - History.txt
38
+ - Manifest.txt
39
+ - README.txt
40
+ - Rakefile
41
+ - bin/rusa_member
42
+ - lib/rusa_member.rb
43
+ has_rdoc: true
44
+ homepage: http://rubyforge.org/projects/uwruby
45
+ post_install_message:
46
+ rdoc_options:
47
+ - --main
48
+ - README.txt
49
+ require_paths:
50
+ - lib
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: "0"
56
+ version:
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: "0"
62
+ version:
63
+ requirements: []
64
+
65
+ rubyforge_project: uwruby
66
+ rubygems_version: 1.3.1
67
+ signing_key:
68
+ specification_version: 2
69
+ summary: Extract data from RUSA web site to get members information, results, awards
70
+ test_files:
71
+ - test/test_parse_member.rb
72
+ - test/test_parse_results.rb