acme-smileage 4.0.0

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.
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'