acme-smileage 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (139) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/.travis.yml +3 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +215 -0
  7. data/Rakefile +9 -0
  8. data/acme-smileage.gemspec +29 -0
  9. data/bin/smileage +3 -0
  10. data/lib/acme/smileage/blog/ameblo.rb +49 -0
  11. data/lib/acme/smileage/blog/ameblo_downloader.rb +171 -0
  12. data/lib/acme/smileage/blog/entry.rb +51 -0
  13. data/lib/acme/smileage/commands/base.rb +10 -0
  14. data/lib/acme/smileage/commands/oricon.rb +47 -0
  15. data/lib/acme/smileage/commands/soundscan.rb +18 -0
  16. data/lib/acme/smileage/commands.rb +16 -0
  17. data/lib/acme/smileage/discography/albums/2009/I001_amanojaku.rb +35 -0
  18. data/lib/acme/smileage/discography/albums/2009/I002_asuha_date_nanoni_imasugu_koe_ga_kikitai.rb +35 -0
  19. data/lib/acme/smileage/discography/albums/2009/I003_sukichan.rb +35 -0
  20. data/lib/acme/smileage/discography/albums/2010/A001_waru_gaki_(1).rb +50 -0
  21. data/lib/acme/smileage/discography/albums/2010/D001_yumemiru_15sai_(pax_japonica_groove_remix).rb +35 -0
  22. data/lib/acme/smileage/discography/albums/2010/D002_gambaranakutemo_eenende_(topnude_remix_version_01).rb +35 -0
  23. data/lib/acme/smileage/discography/albums/2010/D003_onaji_jikyuu_de_hataraku_tomodachi_no_bijin_mama_(remix_type1).rb +35 -0
  24. data/lib/acme/smileage/discography/albums/2010/I004_otona_ni_narutte_muzukashii.rb +35 -0
  25. data/lib/acme/smileage/discography/albums/2010/S001_yumemiru_15sai.rb +42 -0
  26. data/lib/acme/smileage/discography/albums/2010/S002_gambaranakutemo_eenende.rb +47 -0
  27. data/lib/acme/smileage/discography/albums/2010/S003_onaji_jikyuu_de_hataraku_tomodachi_no_bijin_mama.rb +46 -0
  28. data/lib/acme/smileage/discography/albums/2011/D004_shortcut_(remixver).rb +35 -0
  29. data/lib/acme/smileage/discography/albums/2011/D005_uchouten_love_rocketman_mix.rb +35 -0
  30. data/lib/acme/smileage/discography/albums/2011/S004_shortcut.rb +51 -0
  31. data/lib/acme/smileage/discography/albums/2011/S005_koi_ni_booing_boo.rb +51 -0
  32. data/lib/acme/smileage/discography/albums/2011/S006_uchouten_love.rb +51 -0
  33. data/lib/acme/smileage/discography/albums/2011/S007_tachiagirl.rb +56 -0
  34. data/lib/acme/smileage/discography/albums/2011/S008_please_minisuka_post_woman.rb +52 -0
  35. data/lib/acme/smileage/discography/albums/2012/A002_smleage_best_album_complete_(1).rb +54 -0
  36. data/lib/acme/smileage/discography/albums/2012/S009_choto_mate_kudasai.rb +52 -0
  37. data/lib/acme/smileage/discography/albums/2012/S010_dotbikini.rb +51 -0
  38. data/lib/acme/smileage/discography/albums/2012/S011_sukiyo_junjou_hankouki.rb +50 -0
  39. data/lib/acme/smileage/discography/albums/2012/S012_samuine.rb +50 -0
  40. data/lib/acme/smileage/discography/albums/2013/A003_(2)_smile_sensation.rb +48 -0
  41. data/lib/acme/smileage/discography/albums/2013/S013_tabidachi_no_haru_ga_kita.rb +50 -0
  42. data/lib/acme/smileage/discography/albums/2013/S014_atarashii_watashini_nare_yattaruchan.rb +50 -0
  43. data/lib/acme/smileage/discography/albums/2013/S015_eeka_iiyatsu.rb +50 -0
  44. data/lib/acme/smileage/discography/albums/2014/S016_mystery_night_eighteen_emotion.rb +54 -0
  45. data/lib/acme/smileage/discography/albums/base.rb +37 -0
  46. data/lib/acme/smileage/discography/albums.rb +28 -0
  47. data/lib/acme/smileage/discography/hello_project_music_award.rb +22 -0
  48. data/lib/acme/smileage/discography/lyrics_downloader.rb +48 -0
  49. data/lib/acme/smileage/discography/sales.rb +43 -0
  50. data/lib/acme/smileage/discography/tracks/2009/001_amanojaku.rb +57 -0
  51. data/lib/acme/smileage/discography/tracks/2009/002_asuha_date_nanoni_imasugu_koe_ga_kikitai.rb +57 -0
  52. data/lib/acme/smileage/discography/tracks/2009/003_sukichan.rb +57 -0
  53. data/lib/acme/smileage/discography/tracks/2010/004_otona_ni_narutte_muzukashii.rb +57 -0
  54. data/lib/acme/smileage/discography/tracks/2010/005_yumemiru_15sai.rb +77 -0
  55. data/lib/acme/smileage/discography/tracks/2010/006_thank_you_creme_brulee_no_yuujou.rb +37 -0
  56. data/lib/acme/smileage/discography/tracks/2010/007_yumemiru_15sai_(pax_japonica_groove_remix).rb +38 -0
  57. data/lib/acme/smileage/discography/tracks/2010/008_gambaranakutemo_eenende.rb +85 -0
  58. data/lib/acme/smileage/discography/tracks/2010/009_gambaranakutemo_iindayo.rb +44 -0
  59. data/lib/acme/smileage/discography/tracks/2010/010_smile_bijin.rb +36 -0
  60. data/lib/acme/smileage/discography/tracks/2010/011_gambaranakutemo_eenende_(topnude_remix_version_01).rb +38 -0
  61. data/lib/acme/smileage/discography/tracks/2010/012_onaji_jikyuu_de_hataraku_tomodachi_no_bijin_mama.rb +85 -0
  62. data/lib/acme/smileage/discography/tracks/2010/013_chokotto_love.rb +38 -0
  63. data/lib/acme/smileage/discography/tracks/2010/014_onaji_jikyuu_de_hataraku_tomodachi_no_bijin_mama_(remix_type1).rb +38 -0
  64. data/lib/acme/smileage/discography/tracks/2010/015_odorouyo.rb +36 -0
  65. data/lib/acme/smileage/discography/tracks/2010/016_onna_bakari_no_nichiyoubi.rb +36 -0
  66. data/lib/acme/smileage/discography/tracks/2010/017_shooting_star.rb +36 -0
  67. data/lib/acme/smileage/discography/tracks/2010/018_gakkyuu_iinchou.rb +36 -0
  68. data/lib/acme/smileage/discography/tracks/2010/019_shikkari_shiteyo_mou.rb +36 -0
  69. data/lib/acme/smileage/discography/tracks/2011/020_shortcut.rb +69 -0
  70. data/lib/acme/smileage/discography/tracks/2011/021_panyasan_no_arbeit.rb +36 -0
  71. data/lib/acme/smileage/discography/tracks/2011/022_otome_pasta_ni_kandou.rb +38 -0
  72. data/lib/acme/smileage/discography/tracks/2011/023_koi_ni_booing_boo.rb +69 -0
  73. data/lib/acme/smileage/discography/tracks/2011/024_hatukoi_no_anatahe.rb +36 -0
  74. data/lib/acme/smileage/discography/tracks/2011/025_koi_wo_shichaimashita.rb +38 -0
  75. data/lib/acme/smileage/discography/tracks/2011/026_uchouten_love.rb +77 -0
  76. data/lib/acme/smileage/discography/tracks/2011/027_jitensha_chiririn.rb +36 -0
  77. data/lib/acme/smileage/discography/tracks/2011/028_chu_natsu_party.rb +38 -0
  78. data/lib/acme/smileage/discography/tracks/2011/029_shortcut_(remixver).rb +37 -0
  79. data/lib/acme/smileage/discography/tracks/2011/030_uchouten_love_rocketman_mix.rb +38 -0
  80. data/lib/acme/smileage/discography/tracks/2011/031_tachiagirl.rb +73 -0
  81. data/lib/acme/smileage/discography/tracks/2011/032_smile_ondon.rb +35 -0
  82. data/lib/acme/smileage/discography/tracks/2011/033_boogie_train11.rb +38 -0
  83. data/lib/acme/smileage/discography/tracks/2011/034_smileage_singles_gekimoe_remix.rb +35 -0
  84. data/lib/acme/smileage/discography/tracks/2011/035_please_minisuka_post_woman.rb +45 -0
  85. data/lib/acme/smileage/discography/tracks/2011/036_konnichiwa_konbanwa.rb +36 -0
  86. data/lib/acme/smileage/discography/tracks/2011/037_smileage_singles_gekiyaba_remix.rb +35 -0
  87. data/lib/acme/smileage/discography/tracks/2011/038_tewo_nigitte_arukitai.rb +38 -0
  88. data/lib/acme/smileage/discography/tracks/2012/039_choto_mate_kudasai.rb +45 -0
  89. data/lib/acme/smileage/discography/tracks/2012/040_chance_tourai.rb +36 -0
  90. data/lib/acme/smileage/discography/tracks/2012/041_smileage_singles_gekiatsu_remix.rb +35 -0
  91. data/lib/acme/smileage/discography/tracks/2012/042_namida_girl.rb +38 -0
  92. data/lib/acme/smileage/discography/tracks/2012/043_dotbikini.rb +45 -0
  93. data/lib/acme/smileage/discography/tracks/2012/044_smile_blues.rb +36 -0
  94. data/lib/acme/smileage/discography/tracks/2012/045_koibito_ha_kokoro_no_ouendan.rb +38 -0
  95. data/lib/acme/smileage/discography/tracks/2012/046_kiiroi_jitensha_to_sandwich.rb +36 -0
  96. data/lib/acme/smileage/discography/tracks/2012/047_sukiyo_junjou_hankouki.rb +45 -0
  97. data/lib/acme/smileage/discography/tracks/2012/048_kimi_ha_jitensha_watasi_ha_densya_de_kitaku.rb +38 -0
  98. data/lib/acme/smileage/discography/tracks/2012/049_samuine.rb +49 -0
  99. data/lib/acme/smileage/discography/tracks/2012/050_watashi_choito_kawaii_urabancho.rb +36 -0
  100. data/lib/acme/smileage/discography/tracks/2013/051_tabidachi_no_haru_ga_kita.rb +45 -0
  101. data/lib/acme/smileage/discography/tracks/2013/052_doushiyou.rb +36 -0
  102. data/lib/acme/smileage/discography/tracks/2013/053_shin_nihon_no_susume.rb +36 -0
  103. data/lib/acme/smileage/discography/tracks/2013/054_otona_no_tochuu.rb +36 -0
  104. data/lib/acme/smileage/discography/tracks/2013/055_tenshin_ramman.rb +36 -0
  105. data/lib/acme/smileage/discography/tracks/2013/056_watashi_no_kokoro.rb +36 -0
  106. data/lib/acme/smileage/discography/tracks/2013/057_yuugure_koi_no_jikan.rb +36 -0
  107. data/lib/acme/smileage/discography/tracks/2013/058_nee_sempai.rb +36 -0
  108. data/lib/acme/smileage/discography/tracks/2013/059_sayonara_sayonara_sayonara.rb +36 -0
  109. data/lib/acme/smileage/discography/tracks/2013/060_atarashii_watashini_nare.rb +45 -0
  110. data/lib/acme/smileage/discography/tracks/2013/061_yattaruchan.rb +45 -0
  111. data/lib/acme/smileage/discography/tracks/2013/062_eeka.rb +44 -0
  112. data/lib/acme/smileage/discography/tracks/2013/063_iiyatsu.rb +44 -0
  113. data/lib/acme/smileage/discography/tracks/2014/064_mystery_night.rb +44 -0
  114. data/lib/acme/smileage/discography/tracks/2014/065_eighteen_emotion.rb +44 -0
  115. data/lib/acme/smileage/discography/tracks/base.rb +39 -0
  116. data/lib/acme/smileage/discography/tracks.rb +65 -0
  117. data/lib/acme/smileage/discography.rb +101 -0
  118. data/lib/acme/smileage/members/base.rb +56 -0
  119. data/lib/acme/smileage/members/fukuda_kanon.rb +29 -0
  120. data/lib/acme/smileage/members/katsuta_rina.rb +29 -0
  121. data/lib/acme/smileage/members/kosuga_fuyuka.rb +29 -0
  122. data/lib/acme/smileage/members/maeda_yuuka.rb +29 -0
  123. data/lib/acme/smileage/members/nakanishi_kana.rb +29 -0
  124. data/lib/acme/smileage/members/ogawa_saki.rb +29 -0
  125. data/lib/acme/smileage/members/takeuchi_akari.rb +29 -0
  126. data/lib/acme/smileage/members/tamura_meimi.rb +29 -0
  127. data/lib/acme/smileage/members/wada_ayaka.rb +29 -0
  128. data/lib/acme/smileage/members.rb +40 -0
  129. data/lib/acme/smileage/utils/base_downloader.rb +38 -0
  130. data/lib/acme/smileage/utils/matcher.rb +64 -0
  131. data/lib/acme/smileage/version.rb +5 -0
  132. data/lib/acme/smileage/version.rb~ +5 -0
  133. data/lib/acme/smileage.rb +55 -0
  134. data/test/acme/test_album.rb +204 -0
  135. data/test/acme/test_member.rb +45 -0
  136. data/test/acme/test_smileage.rb +144 -0
  137. data/test/acme/test_track.rb +57 -0
  138. data/test/minitest_helper.rb +5 -0
  139. metadata +287 -0
@@ -0,0 +1,204 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require "date"
4
+
5
+ require "minitest_helper"
6
+
7
+ class Acme::TestAlbum < Minitest::Test
8
+ def test_single
9
+ s = ::Acme::Smileage.new
10
+
11
+ a = s.discography.find {|e| e.name =~ /夢見る/ }
12
+ assert_equal "夢見る 15歳", a.name
13
+ assert_equal "yumemiru 15sai", a.name_romaji
14
+ assert_equal Date.new(2010, 5, 26), a.release_date
15
+ assert_equal 2010, a.release_year
16
+ assert_equal [20438, 24936, 5, 4], a.oricon.to_a
17
+ assert_equal [8494, 8494, 17, 1], a.soundscan.to_a
18
+
19
+ artwork_links = [
20
+ {
21
+ :title => "夢見る 15歳 【通常盤】",
22
+ :link => "http://s-mileage.jp/discography/obj/img/000/009/100517-1512_01l.jpg",
23
+ },
24
+ {
25
+ :title => "夢見る 15歳 【初回生産限定盤A】",
26
+ :link => "http://s-mileage.jp/discography/obj/img/000/009/100517-1512_02l.jpg",
27
+ },
28
+ {
29
+ :title => "夢見る 15歳 【初回生産限定盤B】",
30
+ :link => "http://s-mileage.jp/discography/obj/img/000/009/100517-1512_03l.jpg",
31
+ },
32
+ ]
33
+ assert_equal artwork_links, a.artwork_links
34
+
35
+ tracks = []
36
+ tracks << Acme::Smileage::Discography::Tracks::Yumemiru15sai.instance
37
+ tracks << Acme::Smileage::Discography::Tracks::ThankYouCremeBruleeNoYuujou.instance
38
+ assert_equal tracks, a.tracks
39
+
40
+ assert_equal true, a.single?
41
+ assert_equal false, a.album?
42
+ assert_equal false, a.best_album?
43
+ assert_equal false, a.original_album?
44
+ assert_equal true, a.major?
45
+ assert_equal false, a.indies?
46
+ assert_equal false, a.download_only?
47
+ end
48
+
49
+ def test_indies
50
+ s = ::Acme::Smileage.new
51
+
52
+ a = s.discography.find {|e| e.name =~ /ぁまのじゃく/ }
53
+ assert_equal "ぁまのじゃく", a.name
54
+ assert_equal "amanojaku", a.name_romaji
55
+ assert_equal Date.new(2009, 6, 7), a.release_date
56
+ assert_equal 2009, a.release_year
57
+ assert_equal [0, 0, 0, 0], a.oricon.to_a
58
+ assert_equal [0, 0, 0, 0], a.soundscan.to_a
59
+ artwork_links = [
60
+ {
61
+ :title => "ぁまのじゃく",
62
+ :link => "http://s-mileage.jp/discography/obj/img/000/012/100922-1209_01l.jpg",
63
+ },
64
+ ]
65
+ assert_equal artwork_links, a.artwork_links
66
+
67
+ tracks = []
68
+ tracks << Acme::Smileage::Discography::Tracks::Amanojaku.instance
69
+ assert_equal tracks, a.tracks
70
+
71
+ assert_equal true, a.single?
72
+ assert_equal false, a.album?
73
+ assert_equal false, a.best_album?
74
+ assert_equal false, a.original_album?
75
+ assert_equal false, a.major?
76
+ assert_equal true, a.indies?
77
+ assert_equal false, a.download_only?
78
+ end
79
+
80
+ def test_download_only
81
+ s = ::Acme::Smileage.new
82
+
83
+ a = s.discography.find {|e| e.name =~ /PAX JAPONICA/ }
84
+ assert_equal "夢見る 15歳 (PAX JAPONICA GROOVE REMIX)", a.name
85
+ assert_equal "yumemiru 15sai (pax japonica groove remix)", a.name_romaji
86
+ assert_equal Date.new(2010, 6, 18), a.release_date
87
+ assert_equal 2010, a.release_year
88
+ artwork_links = [
89
+ {
90
+ :title => "夢見る 15歳 (PAX JAPONICA GROOVE REMIX)",
91
+ :link => "http://s-mileage.jp/discography/obj/img/000/032/100709-1334_01l.jpg",
92
+ },
93
+ ]
94
+ assert_equal artwork_links, a.artwork_links
95
+
96
+ tracks = []
97
+ tracks << Acme::Smileage::Discography::Tracks::Yumemiru15saiPaxJaponicaGrooveRemix.instance
98
+ assert_equal tracks, a.tracks
99
+
100
+ assert_equal false, a.single?
101
+ assert_equal false, a.album?
102
+ assert_equal false, a.best_album?
103
+ assert_equal false, a.original_album?
104
+ assert_equal true, a.major?
105
+ assert_equal false, a.indies?
106
+ assert_equal true, a.download_only?
107
+ end
108
+
109
+ def test_album
110
+ s = ::Acme::Smileage.new
111
+
112
+ a = s.discography.find {|e| e.name =~ /悪ガキ/ }
113
+ assert_equal "悪ガキッ①", a.name
114
+ assert_equal "waru gaki (1)", a.name_romaji
115
+ assert_equal Date.new(2010, 12, 8), a.release_date
116
+ assert_equal 2010, a.release_year
117
+ assert_equal [8905, 11848, 18, 5], a.oricon.to_a
118
+ assert_equal [0, 0, 0, 0], a.soundscan.to_a
119
+
120
+ artwork_links = [
121
+ {
122
+ :title => "悪ガキッ① 【通常盤】",
123
+ :link => "http://s-mileage.jp/discography/obj/img/000/047/101118-1624_01l.jpg",
124
+ },
125
+ {
126
+ :title => "悪ガキッ① 【初回生産限定盤】",
127
+ :link => "http://s-mileage.jp/discography/obj/img/000/047/101118-1624_02l.jpg",
128
+ },
129
+ ]
130
+ assert_equal artwork_links, a.artwork_links
131
+
132
+ tracks = []
133
+ tracks << Acme::Smileage::Discography::Tracks::OnajiJikyuuDeHatarakuTomodachiNoBijinMama.instance
134
+ tracks << Acme::Smileage::Discography::Tracks::Odorouyo.instance
135
+ tracks << Acme::Smileage::Discography::Tracks::OnnaBakariNoNichiyoubi.instance
136
+ tracks << Acme::Smileage::Discography::Tracks::Yumemiru15sai.instance
137
+ tracks << Acme::Smileage::Discography::Tracks::ShootingStar.instance
138
+ tracks << Acme::Smileage::Discography::Tracks::GambaranakutemoEenende.instance
139
+ tracks << Acme::Smileage::Discography::Tracks::Sukichan.instance
140
+ tracks << Acme::Smileage::Discography::Tracks::GakkyuuIinchou.instance
141
+ tracks << Acme::Smileage::Discography::Tracks::ShikkariShiteyoMou.instance
142
+ tracks << Acme::Smileage::Discography::Tracks::OtonaNiNarutteMuzukashii.instance
143
+ tracks << Acme::Smileage::Discography::Tracks::AsuhaDateNanoniImasuguKoeGaKikitai.instance
144
+ tracks << Acme::Smileage::Discography::Tracks::Amanojaku.instance
145
+ assert_equal tracks, a.tracks
146
+
147
+ assert_equal false, a.single?
148
+ assert_equal true, a.album?
149
+ assert_equal false, a.best_album?
150
+ assert_equal true, a.original_album?
151
+ assert_equal true, a.major?
152
+ assert_equal false, a.indies?
153
+ assert_equal false, a.download_only?
154
+ end
155
+
156
+ def test_best_album
157
+ s = ::Acme::Smileage.new
158
+
159
+ a = s.discography.find {|e| e.name =~ /ベスト/ }
160
+ assert_equal "スマイレージ ベストアルバム完全版①", a.name
161
+ assert_equal "smleage best album complete (1)", a.name_romaji
162
+ assert_equal [], a.nicknames
163
+ assert_equal Date.new(2012, 5, 30), a.release_date
164
+ assert_equal [6339, 8095, 13, 3], a.oricon.to_a
165
+ assert_equal [0, 0, 0, 0], a.soundscan.to_a
166
+ artwork_links = [
167
+ {
168
+ :title => "スマイレージ ベストアルバム完全版① 【通常盤】",
169
+ :link => "http://s-mileage.jp/discography/obj/img/000/114/120502-2111_01l.jpg",
170
+ },
171
+ {
172
+ :title => "スマイレージ ベストアルバム完全版① 【初回生産限定盤】",
173
+ :link => "http://s-mileage.jp/discography/obj/img/000/114/120502-2111_02l.jpg",
174
+ },
175
+ ]
176
+ assert_equal artwork_links, a.artwork_links
177
+
178
+ tracks = []
179
+ tracks << Acme::Smileage::Discography::Tracks::Dotbikini.instance
180
+ tracks << Acme::Smileage::Discography::Tracks::ChotoMateKudasai.instance
181
+ tracks << Acme::Smileage::Discography::Tracks::PleaseMinisukaPostWoman.instance
182
+ tracks << Acme::Smileage::Discography::Tracks::Tachiagirl.instance
183
+ tracks << Acme::Smileage::Discography::Tracks::UchoutenLove.instance
184
+ tracks << Acme::Smileage::Discography::Tracks::KoiNiBooingBoo.instance
185
+ tracks << Acme::Smileage::Discography::Tracks::Shortcut.instance
186
+ tracks << Acme::Smileage::Discography::Tracks::OnajiJikyuuDeHatarakuTomodachiNoBijinMama.instance
187
+ tracks << Acme::Smileage::Discography::Tracks::GambaranakutemoEenende.instance
188
+ tracks << Acme::Smileage::Discography::Tracks::Yumemiru15sai.instance
189
+ tracks << Acme::Smileage::Discography::Tracks::OtonaNiNarutteMuzukashii.instance
190
+ tracks << Acme::Smileage::Discography::Tracks::Sukichan.instance
191
+ tracks << Acme::Smileage::Discography::Tracks::AsuhaDateNanoniImasuguKoeGaKikitai.instance
192
+ tracks << Acme::Smileage::Discography::Tracks::Amanojaku.instance
193
+ tracks << Acme::Smileage::Discography::Tracks::KiiroiJitenshaToSandwich.instance
194
+ assert_equal tracks, a.tracks
195
+
196
+ assert_equal false, a.single?
197
+ assert_equal true, a.album?
198
+ assert_equal true, a.best_album?
199
+ assert_equal false, a.original_album?
200
+ assert_equal true, a.major?
201
+ assert_equal false, a.indies?
202
+ assert_equal false, a.download_only?
203
+ end
204
+ end
@@ -0,0 +1,45 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require "date"
4
+
5
+ require "minitest_helper"
6
+
7
+ class Acme::TestMember < Minitest::Test
8
+ def test_member_all
9
+ s = ::Acme::Smileage.new
10
+ rp = s.members.select {|e| e.name =~ /Rina/ }.first
11
+
12
+ assert_equal "勝田", rp.family_name_ja
13
+ assert_equal "里奈", rp.first_name_ja
14
+ assert_equal "Katsuta", rp.family_name_en
15
+ assert_equal "Rina", rp.first_name_en
16
+ assert_equal Date.new(1998, 4, 6), rp.birthday
17
+ assert_equal "A", rp.blood_type
18
+ assert_equal "東京", rp.hometown
19
+ assert_equal "リナp´ v`)", rp.emoticon
20
+ assert_equal ["りなぷ~"], rp.nicknames
21
+ assert_equal ["りなぷ~"], rp.nick
22
+ assert_equal "Yellow", rp.member_color
23
+ assert_equal "Yellow", rp.color
24
+ assert_equal "http://ameblo.jp/smileage-submember/", rp.blog_link
25
+ assert_equal ["@smileage_newmem", "@smileage_715"], rp.twitter_accounts
26
+ assert_equal 2, rp.generation
27
+ assert_equal Date.new(2011, 8, 14), rp.join_date
28
+ assert_equal nil, rp.graduate_date
29
+
30
+ assert_equal 15, rp.age(Date.new(2014, 4, 5))
31
+ assert_equal 16, rp.age(Date.new(2014, 4, 6))
32
+
33
+ assert_equal false, rp.active?(Date.new(2011, 8, 13))
34
+ assert_equal true, rp.active?(Date.new(2011, 8, 14))
35
+ assert_equal true, rp.active?(Date.new(2014, 4, 6))
36
+
37
+ assert_equal false, rp.graduated?(Date.new(2011, 8, 13))
38
+ assert_equal false, rp.graduated?(Date.new(2011, 8, 14))
39
+ assert_equal false, rp.graduated?(Date.new(2014, 4, 6))
40
+
41
+ assert_equal "Rina Katsuta", rp.name
42
+ assert_equal "Rina Katsuta", rp.name_en
43
+ assert_equal "勝田里奈", rp.name_ja
44
+ end
45
+ end
@@ -0,0 +1,144 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require "date"
4
+
5
+ require "minitest_helper"
6
+
7
+ class Acme::TestSmileage < Minitest::Test
8
+ def test_version_number
9
+ refute_nil ::Acme::Smileage::VERSION
10
+ end
11
+
12
+ def test_member_invalid_type
13
+ s = ::Acme::Smileage.new
14
+ assert_raises(ArgumentError) { s.members(:hoge) }
15
+ end
16
+
17
+ def test_member_all
18
+ s = ::Acme::Smileage.new
19
+ assert_equal ["Ayaka", "Yuuka", "Kanon", "Saki", "Kana", "Fuyuka", "Akari", "Rina", "Meimi"], s.members.map{|e| e.first_name_en }
20
+ end
21
+
22
+ def test_member_active
23
+ s = ::Acme::Smileage.new
24
+ assert_equal ["Ayaka", "Kanon", "Kana", "Akari", "Rina", "Meimi"], s.members {|e| e.active? }.map{|e| e.first_name_en }
25
+ end
26
+
27
+ def test_member_graduate
28
+ s = ::Acme::Smileage.new
29
+ assert_equal ["Yuuka", "Saki", "Fuyuka"], s.members {|e| e.graduated? }.map{|e| e.first_name_en }
30
+ end
31
+
32
+ def test_member_date
33
+ s = ::Acme::Smileage.new
34
+
35
+ assert_equal ["Ayaka", "Yuuka", "Kanon", "Saki"], s.members {|e| e.active?(Date.new(2011, 8, 13)) }.map{|e| e.first_name_en }
36
+ assert_equal ["Ayaka", "Yuuka", "Kanon", "Saki", "Kana", "Fuyuka", "Akari", "Rina", "Meimi"], s.members {|e| e.active?(Date.new(2011, 8, 14)) }.map{|e| e.first_name_en }
37
+
38
+ assert_equal ["Ayaka", "Yuuka", "Kanon", "Saki", "Kana", "Fuyuka", "Akari", "Rina", "Meimi"], s.members {|e| e.active?(Date.new(2011, 8, 27)) }.map{|e| e.first_name_en }
39
+ assert_equal ["Ayaka", "Yuuka", "Kanon", "Kana", "Fuyuka", "Akari", "Rina", "Meimi"], s.members {|e| e.active?(Date.new(2011, 8, 28)) }.map{|e| e.first_name_en }
40
+
41
+ assert_equal ["Ayaka", "Yuuka", "Kanon", "Kana", "Fuyuka", "Akari", "Rina", "Meimi"], s.members {|e| e.active?(Date.new(2011, 9, 9)) }.map{|e| e.first_name_en }
42
+ assert_equal ["Ayaka", "Yuuka", "Kanon", "Kana", "Akari", "Rina", "Meimi"], s.members {|e| e.active?(Date.new(2011, 9, 10)) }.map{|e| e.first_name_en }
43
+
44
+ assert_equal ["Ayaka", "Yuuka", "Kanon", "Kana", "Akari", "Rina", "Meimi"], s.members {|e| e.active?(Date.new(2011, 12, 31)) }.map{|e| e.first_name_en }
45
+ assert_equal ["Ayaka", "Kanon", "Kana", "Akari", "Rina", "Meimi"], s.members {|e| e.active?(Date.new(2012, 1, 1)) }.map{|e| e.first_name_en }
46
+ end
47
+
48
+ def test_member_select
49
+ s = ::Acme::Smileage.new
50
+
51
+ assert_equal ["Ayaka", "Yuuka", "Kanon", "Saki"], s.members.select {|e| e.generation == 1 }.map{|e| e.first_name_en }
52
+ assert_equal ["Kana", "Fuyuka", "Akari", "Rina", "Meimi"], s.members.select {|e| e.generation == 2 }.map{|e| e.first_name_en }
53
+ assert_equal ["Kana", "Akari", "Rina", "Meimi"], s.members.select {|e| e.generation == 2 && e.active? }.map{|e| e.first_name_en }
54
+
55
+ assert_equal ["Ayaka", "Meimi"], s.members.select {|e| e.hometown == "群馬" }.map{|e| e.first_name_en }
56
+ assert_equal ["Kanon", "Saki", "Akari"], s.members.select {|e| e.hometown == "埼玉" }.map{|e| e.first_name_en }
57
+
58
+ assert_equal ["Ayaka", "Kanon", "Saki", "Kana", "Rina"], s.members.select {|e| e.blood_type == "A" }.map{|e| e.first_name_en }
59
+ assert_equal ["Yuuka"], s.members.select {|e| e.blood_type == "B" }.map{|e| e.first_name_en }
60
+ end
61
+
62
+ def test_member_sort_by
63
+ s = ::Acme::Smileage.new
64
+ assert_equal ["Akari", "Ayaka", "Fuyuka", "Kana", "Kanon", "Meimi", "Rina", "Saki", "Yuuka"], s.members.sort_by {|e| e.name }.map{|e| e.first_name_en }
65
+ end
66
+
67
+ def test_discography
68
+ s = ::Acme::Smileage.new
69
+
70
+ assert_equal 28, s.discography.length
71
+
72
+ # discography に直接ブロック指定してフィルタ
73
+ assert_equal 4, s.discography {|e| e.indies? }.length
74
+ assert_equal 24, s.discography {|e| e.major? }.length
75
+
76
+ assert_equal 3, s.discography {|e| e.album? }.length
77
+ assert_equal 20, s.discography {|e| e.single? }.length
78
+
79
+ assert_equal 16, s.discography {|e| e.single? and e.major? }.length
80
+
81
+ # select でフィルタ
82
+ assert_equal 4, s.discography.select {|e| e.indies? }.length
83
+ assert_equal 24, s.discography.select {|e| e.major? }.length
84
+
85
+ assert_equal 3, s.discography.select {|e| e.album? }.length
86
+ assert_equal 20, s.discography.select {|e| e.single? }.length
87
+
88
+ assert_equal 16, s.discography.select {|e| e.single? and e.major? }.length
89
+ end
90
+
91
+ def test_tracks
92
+ s = ::Acme::Smileage.new
93
+ assert_equal 65, s.tracks.length
94
+ assert_equal 9, s.tracks.select {|e| e.cover? }.length
95
+ assert_equal 8, s.tracks.select {|e| e.remix? }.length
96
+ end
97
+
98
+ def test_find_discography
99
+ s = ::Acme::Smileage.new
100
+
101
+ a = s.discography.find {|e| e.name =~ /夢見る/ }
102
+ assert_equal a, s.find_discography("夢15")
103
+ assert_equal a, s.find_discography("夢 15")
104
+ assert_equal a, s.find_discography("夢15")
105
+ assert_equal a, s.find_discography("夢フィフ")
106
+
107
+ a = s.discography.find {|e| e.name =~ /スマイルセンセーション/ }
108
+ assert_equal a, s.find_discography("スマセン")
109
+ assert_equal a, s.find_discography("スマイルセンセーション")
110
+ assert_equal a, s.find_discography("スマイル センセーション")
111
+ end
112
+
113
+ def test_find_track
114
+ s = ::Acme::Smileage.new
115
+
116
+ a = s.tracks.find {|e| e.name =~ /夢見る/ }
117
+ assert_equal a, s.find_track("夢15")
118
+ assert_equal a, s.find_track("夢 15")
119
+ assert_equal a, s.find_track("夢15")
120
+ assert_equal a, s.find_track("夢フィフ")
121
+
122
+ a = s.tracks.find {|e| e.name =~ /ちょいと/ }
123
+ assert_equal a, s.find_track("ちょいかわ")
124
+ assert_equal a, s.find_track("チョイカワ")
125
+ assert_equal a, s.find_track("裏番長")
126
+ assert_equal a, s.find_track("ちょいかわ番長")
127
+ assert_equal a, s.find_track("チョイカワ番長")
128
+ assert_equal a, s.find_track("私、ちょいとかわいい裏番長")
129
+ assert_equal a, s.find_track("私、ちょいとカワイイ裏番長")
130
+ assert_equal a, s.find_track("私、チョイトカワイイ裏番長")
131
+ end
132
+
133
+ def test_oricon_total_sales
134
+ s = ::Acme::Smileage.new
135
+
136
+ assert_equal 399, s.oricon_total_sales {|e| e.single? and e.release_year == 2009 }
137
+ assert_equal 81248, s.oricon_total_sales {|e| e.single? and e.release_year == 2010 }
138
+ assert_equal 140449, s.oricon_total_sales {|e| e.single? and e.release_year == 2011 }
139
+ assert_equal 89867, s.oricon_total_sales {|e| e.single? and e.release_year == 2012 }
140
+ assert_equal 89365, s.oricon_total_sales {|e| e.single? and e.release_year == 2013 }
141
+
142
+ assert_equal 428362, s.oricon_total_sales {|e| e.release_date < Date.new(2014, 1, 1) }
143
+ end
144
+ end
@@ -0,0 +1,57 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require "date"
4
+
5
+ require "minitest_helper"
6
+
7
+ class Acme::TestTrack < Minitest::Test
8
+ def test_tracks
9
+ s = ::Acme::Smileage.new
10
+
11
+ a = s.tracks.find {|e| e.name =~ /クレームブリュレ/ }
12
+ assert_equal "サンキュ! クレームブリュレの友情", a.name
13
+ assert_equal "thank you! creme brulee no yuujou", a.name_romaji
14
+ assert_equal ["クレームブリュレ"], a.nicknames
15
+ assert_equal ["亜伊林"], a.lyricists
16
+ assert_equal ["つんく♂"], a.composers
17
+ assert_equal ["高橋諭一"], a.arrangers
18
+ assert_equal [], a.youtube_links
19
+ assert_equal [{:title => "夢見る 15歳", :link => "https://itunes.apple.com/jp/album/id372351545"}], a.itunes_links
20
+ assert_equal false, a.cover?
21
+ assert_equal false, a.remix?
22
+ assert_equal [2010, 42, 49.0, 31], a.hpma.to_a
23
+ assert_equal 230, a.play_time
24
+ end
25
+
26
+ def test_tracks_cover
27
+ s = ::Acme::Smileage.new
28
+
29
+ a = s.tracks.find {|e| e.name =~ /ちょこっと/ }
30
+ assert_equal "ちょこっとLOVE", a.name
31
+ assert_equal "chokotto love", a.name_romaji
32
+ assert_equal ["ちょこラブ", "ちょこLOVE"], a.nicknames
33
+ assert_equal ["鈴木俊介"], a.arrangers
34
+ assert_equal [], a.youtube_links
35
+ assert_equal [{:title => "同じ時給で働く友達の美人ママ", :link => "https://itunes.apple.com/jp/album/id390851470"}], a.itunes_links
36
+ assert_equal true, a.cover?
37
+ assert_equal false, a.remix?
38
+ assert_equal [2010, 121, 4.0, 3], a.hpma.to_a
39
+ assert_equal 243, a.play_time
40
+ end
41
+
42
+ def test_tracks_remix
43
+ s = ::Acme::Smileage.new
44
+
45
+ a = s.tracks.find {|e| e.name =~ /激萌え/ }
46
+ assert_equal "スマイレージ シングルス 激萌えリミックス", a.name
47
+ assert_equal "smileage singles gekimoe remix", a.name_romaji
48
+ assert_equal [], a.nicknames
49
+ assert_equal ["田中直"], a.arrangers
50
+ assert_equal [], a.youtube_links
51
+ assert_equal [{:title => "タチアガール", :link => "https://itunes.apple.com/jp/album/id464723016"}], a.itunes_links
52
+ assert_equal false, a.cover?
53
+ assert_equal true, a.remix?
54
+ assert_equal [2011, 121, 4.5, 3], a.hpma.to_a
55
+ assert_equal 336, a.play_time
56
+ end
57
+ end
@@ -0,0 +1,5 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'acme/smileage'
3
+
4
+ gem 'minitest'
5
+ require 'minitest/autorun'