diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index aaf9fb6d43..f1e01fce34 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -50,7 +50,7 @@ Include [YARD] style docs for all methods that includes: - The return type (`@return`) - At least one example of the output (`@example`) - The version that the method was added (`@faker.version`) - - Set as `next` for new methods + - Set as `next` for new methods or methods with new features ```ruby ## diff --git a/doc/default/file.md b/doc/default/file.md index fd8e05705c..83ef9a8b17 100644 --- a/doc/default/file.md +++ b/doc/default/file.md @@ -5,7 +5,9 @@ Available since version 1.6.4. ```ruby Faker::File.extension #=> "mp3" +# Keyword arguments: media_type Faker::File.mime_type #=> "application/pdf" +Faker::File.mime_type(media_type: 'image') #=> "image/png" # Keyword arguments: dir, name, extension, directory_separator Faker::File.file_name(dir: 'path/to') #=> "path/to/something_random.jpg" diff --git a/lib/faker/default/file.rb b/lib/faker/default/file.rb index abec3fcf4a..c5e2c977f7 100644 --- a/lib/faker/default/file.rb +++ b/lib/faker/default/file.rb @@ -57,9 +57,9 @@ def extension # @example # Faker::File.mime_type #=> "application/pdf" # - # @faker.version 1.6.4 - def mime_type - fetch('file.mime_type') + # @faker.version next + def mime_type(media_type: nil) + media_type ? fetch("file.mime_type.#{media_type}") : sample(sample(translate('faker.file.mime_type').values)) end # rubocop:disable Metrics/ParameterLists diff --git a/lib/locales/en/file.yml b/lib/locales/en/file.yml index 5d2226316c..99af02fd1b 100644 --- a/lib/locales/en/file.yml +++ b/lib/locales/en/file.yml @@ -2,4 +2,12 @@ en: faker: file: extension: ["flac", "mp3", "wav", "bmp", "gif", "jpeg", "jpg", "png", "tiff", "css", "csv", "html", "js", "json", "txt", "mp4", "avi", "mov", "webm", "doc", "docx", "xls", "xlsx", "ppt", "pptx", "odt", "ods", "odp", "pages", "numbers", "key", "pdf"] - mime_type: ["application/atom+xml", "application/ecmascript", "application/EDI-X12", "application/EDIFACT", "application/json", "application/javascript", "application/ogg", "application/pdf", "application/postscript", "application/rdf+xml", "application/rss+xml", "application/soap+xml", "application/font-woff", "application/xhtml+xml", "application/xml-dtd", "application/xop+xml", "application/zip", "application/gzip", "audio/basic", "audio/L24", "audio/mp4", "audio/mpeg", "audio/ogg", "audio/vorbis", "audio/vnd.rn-realaudio", "audio/vnd.wave", "audio/webm", "image/gif", "image/jpeg", "image/pjpeg", "image/png", "image/svg+xml", "image/tiff", "image/vnd.microsoft.icon", "message/http", "message/imdn+xml", "message/partial", "message/rfc822", "model/example", "model/iges", "model/mesh", "model/vrml", "model/x3d+binary", "model/x3d+vrml", "model/x3d+xml", "multipart/mixed", "multipart/alternative", "multipart/related", "multipart/form-data", "multipart/signed", "multipart/encrypted", "text/cmd", "text/css", "text/csv", "text/html", "text/javascript", "text/plain", "text/vcard", "text/xml", "video/mpeg", "video/mp4", "video/ogg", "video/quicktime", "video/webm", "video/x-matroska", "video/x-ms-wmv", "video/x-flv"] + mime_type: + application: ["application/atom+xml", "application/ecmascript", "application/EDI-X12", "application/EDIFACT", "application/json", "application/javascript", "application/ogg", "application/pdf", "application/postscript", "application/rdf+xml", "application/rss+xml", "application/soap+xml", "application/font-woff", "application/xhtml+xml", "application/xml-dtd", "application/xop+xml", "application/zip", "application/gzip"] + audio: ["audio/basic", "audio/L24", "audio/mp4", "audio/mpeg", "audio/ogg", "audio/vorbis", "audio/vnd.rn-realaudio", "audio/vnd.wave", "audio/webm"] + image: ["image/gif", "image/jpeg", "image/pjpeg", "image/png", "image/svg+xml", "image/tiff", "image/vnd.microsoft.icon"] + message: ["message/http", "message/imdn+xml", "message/partial", "message/rfc822"] + model: ["model/example", "model/iges", "model/mesh", "model/vrml", "model/x3d+binary", "model/x3d+vrml", "model/x3d+xml"] + multipart: ["multipart/mixed", "multipart/alternative", "multipart/related", "multipart/form-data", "multipart/signed", "multipart/encrypted"] + text: ["text/cmd", "text/css", "text/csv", "text/html", "text/javascript", "text/plain", "text/vcard", "text/xml"] + video: ["video/mpeg", "video/mp4", "video/ogg", "video/quicktime", "video/webm", "video/x-matroska", "video/x-ms-wmv", "video/x-flv"] diff --git a/test/faker/default/test_faker_file.rb b/test/faker/default/test_faker_file.rb index 9f4627250e..630ea7ddee 100644 --- a/test/faker/default/test_faker_file.rb +++ b/test/faker/default/test_faker_file.rb @@ -15,6 +15,11 @@ def test_mime_type_format assert @tester.mime_type.match(%r{(.*)/(.*)+}) end + def test_mime_type_format_with_media_type + media_type = Faker::Base.translate('faker.file.mime_type').keys.sample + assert @tester.mime_type(media_type: media_type).match(%r{#{media_type}/(.*)+}) + end + def test_file_name assert @tester .file_name