From 3e8833ca37d9989222c04165ef1ae3debf778a6c Mon Sep 17 00:00:00 2001 From: wonderer007 Date: Mon, 21 Apr 2025 11:55:30 +0500 Subject: [PATCH] Add Airline Generator --- README.md | 1 + doc/travel/airline.md | 6 ++ lib/faker/travel/airline.rb | 39 +++++++ lib/locales/en/airline.yml | 128 +++++++++++++++++++++++ test/faker/travel/test_faker_airlines.rb | 29 +++++ 5 files changed, 203 insertions(+) create mode 100644 doc/travel/airline.md create mode 100644 lib/faker/travel/airline.rb create mode 100644 lib/locales/en/airline.yml create mode 100644 test/faker/travel/test_faker_airlines.rb diff --git a/README.md b/README.md index c0cb756e40..5bb17a1792 100644 --- a/README.md +++ b/README.md @@ -330,6 +330,7 @@ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'main Travel - [Faker:Travel::Airport](doc/travel/airport.md) + - [Faker::Travel::Airline](doc/travel/airline.md) - [Faker:Travel::TrainStation](doc/travel/train_station.md) diff --git a/doc/travel/airline.md b/doc/travel/airline.md new file mode 100644 index 0000000000..a3af248303 --- /dev/null +++ b/doc/travel/airline.md @@ -0,0 +1,6 @@ +# Faker::Travel::Airline + +```ruby +Faker::Travel::Airline.name(country_code: 'US') #=> "American Airlines" +Faker::Travel::Airline.iata(country_code: 'US') #=> "AA" +``` \ No newline at end of file diff --git a/lib/faker/travel/airline.rb b/lib/faker/travel/airline.rb new file mode 100644 index 0000000000..4986ce99ca --- /dev/null +++ b/lib/faker/travel/airline.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +module Faker + class Travel + class Airline < Base + class << self + ## + # Produces random Airline by name and takes argument for country code + # + # @param country_code [String] two letter country code, i.e. US, CA, GB, DE, AE, QA, JP, AU, SG, etc. + # + # @return [String] + # + # @example + # Faker::Travel::Airline.name(country_code: 'US') => "American Airlines" + # + # @faker.version next + def name(country_code:) + fetch("airline.#{country_code}.name") + end + + ## + # Produces random Airline by IATA code and takes argument for country code + # + # @param country_code [String] two letter country code, i.e. US, CA, GB, DE, AE, QA, JP, AU, SG, etc. + # + # @return [String] + # + # @example + # Faker::Travel::Airline.iata(country_code: 'US') => "AA" + # + # @faker.version next + def iata(country_code:) + fetch("airline.#{country_code}.iata") + end + end + end + end +end diff --git a/lib/locales/en/airline.yml b/lib/locales/en/airline.yml new file mode 100644 index 0000000000..5dc48c8bbd --- /dev/null +++ b/lib/locales/en/airline.yml @@ -0,0 +1,128 @@ +en: + faker: + airline: + US: + name: + - American Airlines + - United Airlines + - Delta Air Lines + - Southwest Airlines + - Alaska Airlines + - JetBlue Airways + - Spirit Airlines + - Frontier Airlines + - Hawaiian Airlines + - Allegiant Air + iata: + - AA + - UA + - DL + - WN + - AS + - B6 + - NK + - F9 + - HA + - G4 + CA: + name: + - Air Canada + - WestJet + - Air Transat + - Porter Airlines + - Flair Airlines + - Air North + - Canadian North + iata: + - AC + - WS + - TS + - PD + - F8 + - 4N + - 5T + GB: + name: + - British Airways + - Virgin Atlantic + - easyJet + - Jet2 + - TUI Airways + - Loganair + - Eastern Airways + iata: + - BA + - VS + - U2 + - LS + - BY + - LM + - T3 + DE: + name: + - Lufthansa + - Eurowings + - Condor + - TUI fly Deutschland + - Hahn Air + iata: + - LH + - EW + - DE + - X3 + - HR + AE: + name: + - Emirates + - Etihad Airways + - Air Arabia + - flydubai + iata: + - EK + - EY + - G9 + - FZ + QA: + name: + - Qatar Airways + iata: + - QR + JP: + name: + - Japan Airlines + - All Nippon Airways + - Peach Aviation + - Skymark Airlines + - Japan Air Commuter + - StarFlyer + - Fuji Dream Airlines + iata: + - JL + - NH + - MM + - BC + - JC + - 7G + - JH + AU: + name: + - Qantas + - Virgin Australia + - Jetstar Airways + - Rex Airlines + - Alliance Airlines + iata: + - QF + - VA + - JQ + - ZL + - QQ + SG: + name: + - Singapore Airlines + - Scoot + - Jetstar Asia Airways + iata: + - SQ + - TR + - 3K \ No newline at end of file diff --git a/test/faker/travel/test_faker_airlines.rb b/test/faker/travel/test_faker_airlines.rb new file mode 100644 index 0000000000..3ca449061e --- /dev/null +++ b/test/faker/travel/test_faker_airlines.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +require_relative '../../test_helper' + +class TestFakerAirline < Test::Unit::TestCase + def setup + @tester = Faker::Travel::Airline + end + + def test_name + assert_match(/\w+/, @tester.name(country_code: 'US')) + end + + def test_iata + assert_match(/\w+/, @tester.iata(country_code: 'US')) + end + + def test_name_with_invalid_arguments + assert_raises ArgumentError do + @tester.name(cats: 'meow', dogs: 'woof') + end + end + + def test_iata_with_invalid_arguments + assert_raises ArgumentError do + @tester.iata(cats: 'meow', dogs: 'woof') + end + end +end