From 713081c803a3b91b7067b868efc4a138460e0fd7 Mon Sep 17 00:00:00 2001 From: joao e mateus Date: Tue, 13 Aug 2019 22:06:35 -0300 Subject: [PATCH 1/3] wip: comecando os tests --- spec/factories/car_models.rb | 6 +++--- .../admin/admin_view_cars_in_home_spec.rb | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 spec/features/admin/admin_view_cars_in_home_spec.rb diff --git a/spec/factories/car_models.rb b/spec/factories/car_models.rb index f14480e..6d3393b 100644 --- a/spec/factories/car_models.rb +++ b/spec/factories/car_models.rb @@ -1,8 +1,8 @@ FactoryBot.define do factory :car_model do - name { "Uno" } - year { "2008" } + name { Faker::Vehicle.make } + year { Faker::Vehicle.year } manufacture - car_options { "3 portas" } + car_options { Faker::Vehicle.car_options.first } end end diff --git a/spec/features/admin/admin_view_cars_in_home_spec.rb b/spec/features/admin/admin_view_cars_in_home_spec.rb new file mode 100644 index 0000000..a474382 --- /dev/null +++ b/spec/features/admin/admin_view_cars_in_home_spec.rb @@ -0,0 +1,18 @@ +require 'rails_helper' + +feature 'List cars in home' do + + scenario 'successfully' do + + user = create(:user) + login_as(user) + + create_list(:car, 10, car_model: create(:car_model, name: 'Palio')) + create_list(:car, 5, car_model: create(:car_model, name: 'X1')) + + visit root_path + + expect(page).to have_content('X1', count: 5) + expect(page).to have_content('Palio', count: 5) + end +end \ No newline at end of file From bf4990c6d3b68c7e3df4be3a4f6ec1ddfba8c6a8 Mon Sep 17 00:00:00 2001 From: joao e mateus Date: Wed, 14 Aug 2019 20:06:57 -0300 Subject: [PATCH 2/3] adicionado cars in home --- app/controllers/cars_controller.rb | 5 +++++ app/controllers/home_controller.rb | 2 +- app/views/cars/_car.html.erb | 1 + app/views/cars/index.html.erb | 1 + app/views/home/index.html.erb | 8 +++++--- config/routes.rb | 2 +- .../admin/admin_view_cars_in_home_spec.rb | 19 +++++++++++++++++++ 7 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 app/views/cars/_car.html.erb create mode 100644 app/views/cars/index.html.erb diff --git a/app/controllers/cars_controller.rb b/app/controllers/cars_controller.rb index 1d0fbbe..077b18a 100644 --- a/app/controllers/cars_controller.rb +++ b/app/controllers/cars_controller.rb @@ -1,4 +1,9 @@ class CarsController < ApplicationController + + def index + @cars = Car.all + end + def new @car = Car.new @car_models = CarModel.all diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index a19ca25..185b738 100644 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -1,5 +1,5 @@ class HomeController < ApplicationController def index - @cars = Car.all + @cars = Car.last(10) end end diff --git a/app/views/cars/_car.html.erb b/app/views/cars/_car.html.erb new file mode 100644 index 0000000..6f6106c --- /dev/null +++ b/app/views/cars/_car.html.erb @@ -0,0 +1 @@ +
  • <%= link_to "#{car.car_model.name} - #{car.license_plate}", car %>
  • \ No newline at end of file diff --git a/app/views/cars/index.html.erb b/app/views/cars/index.html.erb new file mode 100644 index 0000000..d8ba298 --- /dev/null +++ b/app/views/cars/index.html.erb @@ -0,0 +1 @@ + <%= render @cars %> \ No newline at end of file diff --git a/app/views/home/index.html.erb b/app/views/home/index.html.erb index 4df7185..bbf24ab 100644 --- a/app/views/home/index.html.erb +++ b/app/views/home/index.html.erb @@ -1,3 +1,5 @@ -<% @cars.each do |car|%> - <%= link_to "#{car.car_model.name} - #{car.license_plate}", car %> -<% end %> +
      + <%= render @cars %> +
    + <%= link_to 'Ver todos', cars_path %> + diff --git a/config/routes.rb b/config/routes.rb index 869db8f..892e75b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -10,7 +10,7 @@ end end resources :subsidiary_car_models, only: %i[show new create] - resources :cars, only: %i[show new create] do + resources :cars, only: %i[index show new create] do resources :maintenances, only: %i[show new create edit update] resources :inspections, only: %i[ new create] end diff --git a/spec/features/admin/admin_view_cars_in_home_spec.rb b/spec/features/admin/admin_view_cars_in_home_spec.rb index a474382..9159ff1 100644 --- a/spec/features/admin/admin_view_cars_in_home_spec.rb +++ b/spec/features/admin/admin_view_cars_in_home_spec.rb @@ -14,5 +14,24 @@ expect(page).to have_content('X1', count: 5) expect(page).to have_content('Palio', count: 5) + expect(page).not_to have_content('Palio', count: 10) + + end + + scenario 'has an option to view all cars' do + + user = create(:user) + login_as(user) + + create_list(:car, 10, car_model: create(:car_model, name: 'Palio')) + create_list(:car, 5, car_model: create(:car_model, name: 'X1')) + + visit root_path + click_on "Ver todos" + + expect(current_path).to eq cars_path + expect(page).to have_content('X1', count: 5) + expect(page).to have_content('Palio', count: 10) + end end \ No newline at end of file From 12e33d8ffb95a3145a09f364ef226198829a6817 Mon Sep 17 00:00:00 2001 From: joao e mateus Date: Wed, 14 Aug 2019 22:06:16 -0300 Subject: [PATCH 3/3] migrar selecao dos carros disponiveis para o Model do carro --- app/controllers/home_controller.rb | 2 +- app/models/car.rb | 4 ++++ spec/factories/car_models.rb | 2 +- spec/factories/manufactures.rb | 2 +- .../admin/admin_view_cars_in_home_spec.rb | 6 +++--- spec/models/car_spec.rb | 16 ++++++++++++++++ 6 files changed, 26 insertions(+), 6 deletions(-) create mode 100644 spec/models/car_spec.rb diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index 5529564..d3dcbcc 100644 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -1,6 +1,6 @@ class HomeController < ApplicationController def index - @cars = Car.where(status: :available).order(:updated_at).last(10) + @cars = Car.last_available_cars @all_cars = Car.all - @cars end end diff --git a/app/models/car.rb b/app/models/car.rb index a586859..68abbdd 100644 --- a/app/models/car.rb +++ b/app/models/car.rb @@ -21,6 +21,10 @@ def current_maintenance maintenances.last if on_maintenance? end + def self.last_available_cars + where(status: :available).order(:updated_at).last(10) + end + def car_km_can_not_be_less_than_actual if car_km < car_km_was errors.add(:car_km, 'Quilometragem não pode ser menor que a atual') diff --git a/spec/factories/car_models.rb b/spec/factories/car_models.rb index 6d3393b..7b18fda 100644 --- a/spec/factories/car_models.rb +++ b/spec/factories/car_models.rb @@ -3,6 +3,6 @@ name { Faker::Vehicle.make } year { Faker::Vehicle.year } manufacture - car_options { Faker::Vehicle.car_options.first } + car_options { Faker::Color.color_name } end end diff --git a/spec/factories/manufactures.rb b/spec/factories/manufactures.rb index 19ed1ef..1023f2a 100644 --- a/spec/factories/manufactures.rb +++ b/spec/factories/manufactures.rb @@ -1,5 +1,5 @@ FactoryBot.define do factory :manufacture do - name { Faker::Vehicle.manufacture } + name { Faker::Company.name } end end diff --git a/spec/features/admin/admin_view_cars_in_home_spec.rb b/spec/features/admin/admin_view_cars_in_home_spec.rb index eeac0f6..1418e6e 100644 --- a/spec/features/admin/admin_view_cars_in_home_spec.rb +++ b/spec/features/admin/admin_view_cars_in_home_spec.rb @@ -1,6 +1,6 @@ require 'rails_helper' -feature 'List cars in home' do +feature 'List available cars in home' do scenario 'successfully' do @@ -8,8 +8,8 @@ user = create(:user) login_as(user) - create_list(:car, 10, car_model: create(:car_model, name: 'Palio')) - create_list(:car, 5, car_model: create(:car_model, name: 'X1')) + create_list(:car, 10, status: :available, car_model: create(:car_model, name: 'Palio')) + create_list(:car, 5, status: :available, car_model: create(:car_model, name: 'X1')) #act visit root_path diff --git a/spec/models/car_spec.rb b/spec/models/car_spec.rb new file mode 100644 index 0000000..ae7d514 --- /dev/null +++ b/spec/models/car_spec.rb @@ -0,0 +1,16 @@ +require 'rails_helper' + +RSpec.describe Car, type: :model do + + describe "#last_available_cars" do + + it "should list only available cars" do + + create_list(:car, 5, status: :available, car_model: create(:car_model, name: 'Palio')) + create_list(:car, 5, status: :on_maintenance, car_model: create(:car_model, name: 'Palio')) + + cars = Car.last_available_cars + expect(cars.select{|car| car[:status] == 'available' }.size).to eq 5 + end + end +end