ffaker 2.12.0 → 2.17.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Changelog.md +28 -0
- data/README.md +8 -1
- data/REFERENCE.md +1365 -1234
- data/Rakefile +0 -6
- data/ffaker.gemspec +14 -5
- data/lib/ffaker.rb +12 -6
- data/lib/ffaker/address_fr.rb +5 -1
- data/lib/ffaker/address_nl.rb +1 -3
- data/lib/ffaker/address_us.rb +22 -2
- data/lib/ffaker/{animals.rb → animal.rb} +0 -0
- data/lib/ffaker/{animals_cn.rb → animal_cn.rb} +0 -0
- data/lib/ffaker/animal_es.rb +12 -0
- data/lib/ffaker/{animals_us.rb → animal_us.rb} +0 -0
- data/lib/ffaker/bank.rb +15 -3
- data/lib/ffaker/code.rb +17 -0
- data/lib/ffaker/color_pl.rb +14 -0
- data/lib/ffaker/company_ja.rb +24 -0
- data/lib/ffaker/data/address_fr/region +27 -0
- data/lib/ffaker/data/address_ja/city +0 -23
- data/lib/ffaker/data/address_us/state_abbr +0 -1
- data/lib/ffaker/data/animal_es/common_names +135 -0
- data/lib/ffaker/data/bank/card_types +12 -0
- data/lib/ffaker/data/book/nouns +2 -2
- data/lib/ffaker/data/color_pl/names_list +122 -0
- data/lib/ffaker/data/filesystem/extension +31 -31
- data/lib/ffaker/data/movie/nouns +2 -2
- data/lib/ffaker/data/name/first_names_female +0 -230
- data/lib/ffaker/data/name/first_names_male +0 -37
- data/lib/ffaker/data/sport_pl/summer +53 -0
- data/lib/ffaker/data/sport_pl/winter +14 -0
- data/lib/ffaker/data/vehicle/color_prefixes +25 -0
- data/lib/ffaker/education.rb +4 -8
- data/lib/ffaker/education_cn.rb +3 -6
- data/lib/ffaker/filesystem.rb +7 -7
- data/lib/ffaker/identification_in.rb +15 -0
- data/lib/ffaker/identification_kr.rb +2 -2
- data/lib/ffaker/identification_mx.rb +1 -1
- data/lib/ffaker/identification_pl.rb +77 -0
- data/lib/ffaker/identification_tw.rb +23 -0
- data/lib/ffaker/internet.rb +4 -6
- data/lib/ffaker/internet_se.rb +1 -1
- data/lib/ffaker/name_mx.rb +2 -2
- data/lib/ffaker/phone_number_br.rb +2 -2
- data/lib/ffaker/product.rb +1 -1
- data/lib/ffaker/sport_pl.rb +25 -0
- data/lib/ffaker/ssn.rb +1 -3
- data/lib/ffaker/string.rb +5 -5
- data/lib/ffaker/unit.rb +9 -10
- data/lib/ffaker/unit_english.rb +18 -19
- data/lib/ffaker/unit_metric.rb +15 -16
- data/lib/ffaker/utils/random_utils.rb +2 -0
- data/lib/ffaker/utils/unique_utils.rb +0 -2
- data/lib/ffaker/vehicle.rb +1 -6
- data/lib/version.rb +5 -0
- data/scripts/benchmark.rb +10 -11
- data/test/helper.rb +35 -0
- data/test/test_address_au.rb +2 -2
- data/test/test_address_br.rb +1 -1
- data/test/test_address_fi.rb +2 -2
- data/test/test_address_fr.rb +1 -1
- data/test/test_address_id.rb +1 -1
- data/test/test_address_ja.rb +1 -1
- data/test/test_address_nl.rb +1 -1
- data/test/test_address_se.rb +2 -2
- data/test/test_address_us.rb +9 -0
- data/test/test_animal_es.rb +17 -0
- data/test/test_array_utils.rb +0 -1
- data/test/test_aws.rb +1 -1
- data/test/test_bank.rb +41 -5
- data/test/test_book.rb +4 -4
- data/test/test_code.rb +22 -1
- data/test/test_color_pl.rb +13 -0
- data/test/test_company_ja.rb +28 -0
- data/test/{test_faker.rb → test_ffaker.rb} +5 -1
- data/test/test_filesystem.rb +11 -3
- data/test/test_geolocation.rb +2 -2
- data/test/test_healthcare_ru.rb +1 -1
- data/test/test_html_ipsum.rb +1 -1
- data/test/test_identification_co.rb +2 -2
- data/test/test_identification_es_cl.rb +1 -1
- data/test/test_identification_in.rb +20 -0
- data/test/test_identification_pl.rb +28 -0
- data/test/test_identification_tw.rb +17 -0
- data/test/test_image.rb +3 -3
- data/test/test_internet.rb +9 -9
- data/test/test_internet_se.rb +1 -1
- data/test/test_job_cn.rb +1 -1
- data/test/test_job_ja.rb +1 -1
- data/test/test_job_kr.rb +1 -1
- data/test/test_job_vn.rb +1 -1
- data/test/test_lorem_cn.rb +6 -6
- data/test/test_lorem_ja.rb +3 -3
- data/test/test_lorem_pl.rb +1 -1
- data/test/test_lorem_ru.rb +1 -1
- data/test/test_lorem_ua.rb +1 -1
- data/test/test_music.rb +4 -4
- data/test/test_name_da.rb +3 -3
- data/test/test_phone_number_se.rb +2 -2
- data/test/test_sport_pl.rb +30 -0
- data/test/test_ssn_se.rb +6 -8
- data/test/test_string.rb +3 -3
- data/test/test_time.rb +13 -6
- data/test/test_tweet.rb +9 -9
- data/test/test_vehicle.rb +2 -2
- metadata +201 -162
- data/lib/ffaker/data/address_jp/city +0 -127
- data/lib/ffaker/data/address_jp/designated_city +0 -20
- data/lib/ffaker/data/address_jp/street +0 -37
- data/lib/ffaker/data/address_jp/tokyo_ward +0 -23
- data/lib/ffaker/data/address_jp/village +0 -183
- data/lib/ffaker/data/address_jp/ward +0 -188
data/lib/ffaker/vehicle.rb
CHANGED
@@ -6,12 +6,7 @@ module FFaker
|
|
6
6
|
extend self
|
7
7
|
|
8
8
|
DRIVETRAINS = %w[4WD 4X4 AWD FWD RWD].freeze
|
9
|
-
YEARS =
|
10
|
-
COLOR_PREFIXES = k(%w[
|
11
|
-
beautiful bright calm dangerous dark dull fast magnetic magnificent
|
12
|
-
majestic melodic metallic mundane mute mysterious new pleasant pretty
|
13
|
-
resonant royal slate soft tranquil vibrant weak
|
14
|
-
])
|
9
|
+
YEARS = Array('1900'..(::Time.now.year + 1).to_s).freeze
|
15
10
|
TRANSMISSIONS_ABBR = %w[AT MT AM CVT].freeze
|
16
11
|
CYLINDERS = %w[2 5 6 8].freeze
|
17
12
|
|
data/lib/version.rb
ADDED
data/scripts/benchmark.rb
CHANGED
@@ -1,22 +1,21 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'rubygems'
|
4
3
|
require 'benchmark'
|
5
4
|
|
6
|
-
|
5
|
+
NAMES_COUNT = 10_000
|
7
6
|
|
8
7
|
def run(name)
|
9
|
-
require name
|
10
8
|
Benchmark.bm do |rep|
|
11
|
-
rep.report("generating #{
|
12
|
-
|
13
|
-
|
14
|
-
end
|
9
|
+
rep.report("generating #{NAMES_COUNT} names (#{name})") do
|
10
|
+
mod = name == 'ffaker' ? FFaker : Faker
|
11
|
+
NAMES_COUNT.times { mod::Name.name }
|
15
12
|
end
|
16
13
|
end
|
17
|
-
$stdout.flush
|
18
|
-
exit(0)
|
19
14
|
end
|
20
15
|
|
21
|
-
|
22
|
-
|
16
|
+
%w[faker ffaker].each do |gem_name|
|
17
|
+
require gem_name
|
18
|
+
|
19
|
+
fork { run(gem_name) }
|
20
|
+
Process.wait
|
21
|
+
end
|
data/test/helper.rb
CHANGED
@@ -28,6 +28,41 @@ module DeterministicHelper
|
|
28
28
|
assert(returns.uniq.length == 1, options[:message])
|
29
29
|
end
|
30
30
|
|
31
|
+
%w[< > <= >=].each do |operator|
|
32
|
+
operator_name =
|
33
|
+
case operator[0]
|
34
|
+
when '<' then 'less_than'
|
35
|
+
when '>' then 'greater_than'
|
36
|
+
else raise 'Unexpected operator'
|
37
|
+
end
|
38
|
+
operator_name += '_or_equal_to' if operator[1] == '='
|
39
|
+
|
40
|
+
define_method "assert_#{operator_name}" do |got, expected|
|
41
|
+
assert(
|
42
|
+
got.public_send(operator, expected),
|
43
|
+
"Expected #{operator} \"#{expected}\", but got #{got}"
|
44
|
+
)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def assert_between(got, from, to, exclude_end: false)
|
49
|
+
assert_greater_than_or_equal_to got, from
|
50
|
+
public_send "assert_less_than#{'_or_equal_to' unless exclude_end}", got, to
|
51
|
+
end
|
52
|
+
|
53
|
+
def assert_random(original_block, *args)
|
54
|
+
100.times do
|
55
|
+
yield(*args)
|
56
|
+
assert_deterministic(&original_block)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
%w[less_than_or_equal_to between].each do |method_name|
|
61
|
+
define_method "assert_random_#{method_name}" do |*args, &block|
|
62
|
+
assert_random(block) { send "assert_#{method_name}", block.call, *args }
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
31
66
|
# Methods to be called outside of individual examples.
|
32
67
|
module ClassMethods
|
33
68
|
# Shorthand method to quickly test the determinability of multiple methods.
|
data/test/test_address_au.rb
CHANGED
@@ -33,7 +33,7 @@ class TestAddressAU < Test::Unit::TestCase
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def test_full_address
|
36
|
-
assert_match(/[
|
36
|
+
assert_match(/[, a-z]/, FFaker::AddressAU.full_address)
|
37
37
|
end
|
38
38
|
|
39
39
|
def test_au_suburb_with_states
|
@@ -60,7 +60,7 @@ class TestAddressAU < Test::Unit::TestCase
|
|
60
60
|
|
61
61
|
def test_full_address_with_states
|
62
62
|
FFaker::AddressAU::STATE_ABBR.each do |st_abbr|
|
63
|
-
assert_match(/[
|
63
|
+
assert_match(/[, a-z]/, FFaker::AddressAU.full_address(st_abbr))
|
64
64
|
assert_deterministic { FFaker::AddressAU.full_address(st_abbr) }
|
65
65
|
end
|
66
66
|
end
|
data/test/test_address_br.rb
CHANGED
@@ -32,6 +32,6 @@ class TestAddressBR < Test::Unit::TestCase
|
|
32
32
|
|
33
33
|
def test_street
|
34
34
|
prefixes = FFaker::AddressBR::STREET_PREFIX
|
35
|
-
assert_match(/(#{prefixes.join('|')})(
|
35
|
+
assert_match(/(#{prefixes.join('|')})( \p{Alpha}+){1,2}/, FFaker::AddressBR.street)
|
36
36
|
end
|
37
37
|
end
|
data/test/test_address_fi.rb
CHANGED
@@ -5,7 +5,7 @@ require 'helper'
|
|
5
5
|
class TestAddressFI < Test::Unit::TestCase
|
6
6
|
include DeterministicHelper
|
7
7
|
|
8
|
-
ALPHA = /\A
|
8
|
+
ALPHA = /\A\p{Alpha}+/.freeze
|
9
9
|
DIGIT = /\d{1}/.freeze
|
10
10
|
|
11
11
|
assert_methods_are_deterministic(
|
@@ -30,7 +30,7 @@ class TestAddressFI < Test::Unit::TestCase
|
|
30
30
|
assert_match(ALPHA, address)
|
31
31
|
assert_match(DIGIT, address)
|
32
32
|
assert_match(/SUOMI/, address)
|
33
|
-
assert_match(/[
|
33
|
+
assert_match(/[, a-z]/, address)
|
34
34
|
end
|
35
35
|
|
36
36
|
def test_fi_zip_code_frozen
|
data/test/test_address_fr.rb
CHANGED
data/test/test_address_id.rb
CHANGED
@@ -33,7 +33,7 @@ class TestAddressID < Test::Unit::TestCase
|
|
33
33
|
def test_street
|
34
34
|
prefixes = FFaker::AddressID::STREET_PREFIX
|
35
35
|
common_street_names = FFaker::AddressID::COMMON_STREET_NAMES
|
36
|
-
regex = /\A(#{prefixes.join('|')})\.(\s(#{common_street_names.join('|')}))
|
36
|
+
regex = /\A(#{prefixes.join('|')})\.(\s(#{common_street_names.join('|')})),\sNo\.\s\d+\z/
|
37
37
|
assert_match(regex, FFaker::AddressID.street)
|
38
38
|
end
|
39
39
|
end
|
data/test/test_address_ja.rb
CHANGED
data/test/test_address_nl.rb
CHANGED
data/test/test_address_se.rb
CHANGED
@@ -5,7 +5,7 @@ require 'helper'
|
|
5
5
|
class TestAddressSE < Test::Unit::TestCase
|
6
6
|
include DeterministicHelper
|
7
7
|
|
8
|
-
ALPHA = /\A
|
8
|
+
ALPHA = /\A\p{Alpha}+/.freeze
|
9
9
|
DIGIT = /\d{1}/.freeze
|
10
10
|
|
11
11
|
assert_methods_are_deterministic(
|
@@ -30,7 +30,7 @@ class TestAddressSE < Test::Unit::TestCase
|
|
30
30
|
assert_match(ALPHA, address)
|
31
31
|
assert_match(DIGIT, address)
|
32
32
|
assert_match(/SVERIGE/, address)
|
33
|
-
assert_match(/[
|
33
|
+
assert_match(/[, a-z]/, address)
|
34
34
|
end
|
35
35
|
|
36
36
|
def test_se_zip_code_frozen
|
data/test/test_address_us.rb
CHANGED
@@ -18,6 +18,15 @@ class TestAddressUSUS < Test::Unit::TestCase
|
|
18
18
|
|
19
19
|
def test_us_state_abbr
|
20
20
|
assert_match(/[A-Z]/, FFaker::AddressUS.state_abbr)
|
21
|
+
%w[California california CALIFORNIA].each do |state|
|
22
|
+
assert_match('CA', FFaker::AddressUS.state_abbr(state))
|
23
|
+
end
|
24
|
+
['South Carolina', 'south carolina'].each do |state|
|
25
|
+
assert_match('SC', FFaker::AddressUS.state_abbr(state))
|
26
|
+
end
|
27
|
+
assert_raise ArgumentError, "Unexpected state: 'unknown'" do
|
28
|
+
FFaker::AddressUS.state_abbr('unknown')
|
29
|
+
end
|
21
30
|
end
|
22
31
|
|
23
32
|
def test_us_state_and_territories_abbr
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class TestAnimalsES < Test::Unit::TestCase
|
6
|
+
include DeterministicHelper
|
7
|
+
|
8
|
+
assert_methods_are_deterministic(FFaker::AnimalES, :common_name)
|
9
|
+
|
10
|
+
def setup
|
11
|
+
@tester = FFaker::AnimalES
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_name
|
15
|
+
assert_include @tester::COMMON_NAMES, @tester.common_name
|
16
|
+
end
|
17
|
+
end
|
data/test/test_array_utils.rb
CHANGED
data/test/test_aws.rb
CHANGED
data/test/test_bank.rb
CHANGED
@@ -5,14 +5,50 @@ require 'helper'
|
|
5
5
|
class TestBank < Test::Unit::TestCase
|
6
6
|
include DeterministicHelper
|
7
7
|
|
8
|
-
assert_methods_are_deterministic(
|
8
|
+
assert_methods_are_deterministic(
|
9
|
+
FFaker::Bank,
|
10
|
+
:iban, :card_number, :card_expiry_date, :card_type
|
11
|
+
)
|
12
|
+
|
13
|
+
def setup
|
14
|
+
@tester = FFaker::Bank
|
15
|
+
end
|
9
16
|
|
10
17
|
def test_iban
|
11
|
-
assert_match(/[A-Z]{2}\d+([A-Z]+)?\d+/,
|
12
|
-
assert_match(/[A-Z]{2}\d+([A-Z]+)?\d+/,
|
13
|
-
assert_match(/[A-Z]{2}\d+([A-Z]+)?\d+/,
|
18
|
+
assert_match(/[A-Z]{2}\d+([A-Z]+)?\d+/, @tester.iban)
|
19
|
+
assert_match(/[A-Z]{2}\d+([A-Z]+)?\d+/, @tester.iban(country_code: 'by'))
|
20
|
+
assert_match(/[A-Z]{2}\d+([A-Z]+)?\d+/, @tester.iban(country_code: 'BY'))
|
14
21
|
assert_raise ArgumentError, "Unexpected country code: 'unknown'" do
|
15
|
-
|
22
|
+
@tester.iban(country_code: 'unknown')
|
16
23
|
end
|
17
24
|
end
|
25
|
+
|
26
|
+
def test_card_number
|
27
|
+
assert_match(/\A(\d{4} ){3}\d{4}\z/, @tester.card_number)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_card_expiry_date
|
31
|
+
assert_instance_of String, @tester.card_expiry_date
|
32
|
+
|
33
|
+
date_today = ::DateTime.now
|
34
|
+
|
35
|
+
assert_random_between(
|
36
|
+
date_today.strftime('%y'), date_today.next_year(5).strftime('%y')
|
37
|
+
) do
|
38
|
+
@tester.card_expiry_date.split('/').pop
|
39
|
+
end
|
40
|
+
|
41
|
+
year_range = 4
|
42
|
+
year_latest = 8
|
43
|
+
assert_random_between(
|
44
|
+
date_today.prev_year(year_latest + year_range).strftime('%y'),
|
45
|
+
date_today.prev_year(year_latest).strftime('%y')
|
46
|
+
) do
|
47
|
+
@tester.card_expiry_date(year_range: year_range, year_latest: year_latest).split('/').pop
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_card_type
|
52
|
+
assert_include @tester::CARD_TYPES, @tester.card_type
|
53
|
+
end
|
18
54
|
end
|
data/test/test_book.rb
CHANGED
@@ -19,7 +19,7 @@ class TestBook < Test::Unit::TestCase
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def test_genre
|
22
|
-
assert_match(%r{[\w\s'
|
22
|
+
assert_match(%r{[\w\s'/]+}, @tester.genre)
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_author
|
@@ -27,7 +27,7 @@ class TestBook < Test::Unit::TestCase
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def test_isbn
|
30
|
-
assert_match(
|
30
|
+
assert_match(/\d+/, @tester.isbn)
|
31
31
|
end
|
32
32
|
|
33
33
|
def test_description
|
@@ -35,12 +35,12 @@ class TestBook < Test::Unit::TestCase
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def test_cover
|
38
|
-
assert_match(%r{\Ahttps
|
38
|
+
assert_match(%r{\Ahttps://robohash\.org/.+\.png\?size=300x300\z},
|
39
39
|
@tester.cover)
|
40
40
|
end
|
41
41
|
|
42
42
|
def test_orly_cover
|
43
|
-
assert_match(%r{\Ahttps
|
43
|
+
assert_match(%r{\Ahttps://orly-appstore\.herokuapp\.com/generate},
|
44
44
|
@tester.orly_cover)
|
45
45
|
end
|
46
46
|
end
|
data/test/test_code.rb
CHANGED
@@ -5,7 +5,28 @@ require 'helper'
|
|
5
5
|
class TestCode < Test::Unit::TestCase
|
6
6
|
include DeterministicHelper
|
7
7
|
|
8
|
-
assert_methods_are_deterministic(FFaker::Code, :ean)
|
8
|
+
assert_methods_are_deterministic(FFaker::Code, :ean, :npi)
|
9
|
+
|
10
|
+
def test_npi_legacy_regexp
|
11
|
+
assert FFaker::Code.npi(legacy: true).match(/\A(1|2)[0-9]{9}\z/)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_npi
|
15
|
+
FFaker::Random.seed = 523_456_789
|
16
|
+
assert FFaker::Code.npi == '7411850515'
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_deterministic_npi
|
20
|
+
FFaker::Random.seed = 42
|
21
|
+
v = FFaker::Code.npi
|
22
|
+
FFaker::Random.reset!
|
23
|
+
assert v == FFaker::Code.npi
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_valid_npi
|
27
|
+
FFaker::Random.seed = 123_456_789
|
28
|
+
assert FFaker::Code.npi == '2410167607'
|
29
|
+
end
|
9
30
|
|
10
31
|
def test_ean
|
11
32
|
assert FFaker::Code.ean.match(/^\d{13}$/)
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class TestColorPL < Test::Unit::TestCase
|
6
|
+
include DeterministicHelper
|
7
|
+
|
8
|
+
assert_methods_are_deterministic(FFaker::ColorPL, :name)
|
9
|
+
|
10
|
+
def test_name
|
11
|
+
assert_match(/\A[a-ząćęłńóśźżé]+\z/, FFaker::ColorPL.name)
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class TestCompanyJA < Test::Unit::TestCase
|
6
|
+
include DeterministicHelper
|
7
|
+
|
8
|
+
assert_methods_are_deterministic(
|
9
|
+
FFaker::CompanyJA,
|
10
|
+
:name, :position
|
11
|
+
)
|
12
|
+
|
13
|
+
def setup
|
14
|
+
@tester = FFaker::CompanyJA
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_name
|
18
|
+
assert_match(japanese_regex(''), @tester.name)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_position
|
22
|
+
assert_match(japanese_regex(''), @tester.position)
|
23
|
+
end
|
24
|
+
|
25
|
+
def japanese_regex(word)
|
26
|
+
/\A(?:\p{Hiragana}|\p{Katakana}|[ー-]|[一-龠々])+#{word}\z/
|
27
|
+
end
|
28
|
+
end
|
@@ -2,9 +2,13 @@
|
|
2
2
|
|
3
3
|
require 'helper'
|
4
4
|
|
5
|
-
class
|
5
|
+
class TestFFaker < Test::Unit::TestCase
|
6
6
|
include DeterministicHelper
|
7
7
|
|
8
|
+
def test_version
|
9
|
+
assert FFaker::VERSION.is_a?(String)
|
10
|
+
end
|
11
|
+
|
8
12
|
def test_numerify
|
9
13
|
assert FFaker.numerify('###').match(/\d{3}/)
|
10
14
|
assert_deterministic { FFaker.numerify('###') }
|
data/test/test_filesystem.rb
CHANGED
@@ -15,14 +15,22 @@ class TestFakerFilesystem < Test::Unit::TestCase
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def test_extension
|
18
|
-
|
18
|
+
assert_match /\A(?:flac|mp3|wav|bmp|gif|jpeg|jpg|png|tiff|css|csv|html|js|
|
19
|
+
json|txt|mp4|avi|mov|webm|doc|docx|xls|xlsx|ppt|pptx|odt|
|
20
|
+
ods|odp|pages|numbers|key|pdf)\z/x,
|
21
|
+
@tester.extension
|
19
22
|
end
|
20
23
|
|
21
24
|
def test_mime_type_format
|
22
|
-
|
25
|
+
assert_match %r{\A\w+/.+\z}, @tester.mime_type
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_directory
|
29
|
+
assert_match %r{\A(?:[a-z_-]+[\\/])+[a-z_-]+\z}, @tester.directory
|
23
30
|
end
|
24
31
|
|
25
32
|
def test_file_name
|
26
|
-
|
33
|
+
assert_match %r{\A(?:[a-z_-]+[\\/])+[a-z_-]+\.\w{2,4}\z},
|
34
|
+
@tester.file_name
|
27
35
|
end
|
28
36
|
end
|