mirror of
https://github.com/iritmaximus/brewery.git
synced 2026-10-12 19:13:49 +03:00
fixed tests after migration
This commit is contained in:
@@ -20,7 +20,7 @@ class BeersController < ApplicationController
|
||||
# GET /beers/1/edit
|
||||
def edit
|
||||
@breweries = Brewery.all
|
||||
@styles = ["Weizen", "Lager", "Pale ale", "IPA", "Porter", "Lowalcohol"]
|
||||
@styles = Style.all
|
||||
end
|
||||
|
||||
# POST /beers or /beers.json
|
||||
@@ -70,11 +70,11 @@ class BeersController < ApplicationController
|
||||
|
||||
# Only allow a list of trusted parameters through.
|
||||
def beer_params
|
||||
params.require(:beer).permit(:name, :style, :brewery_id)
|
||||
params.require(:beer).permit(:name, :style_id, :brewery_id)
|
||||
end
|
||||
|
||||
def set_breweries_and_styles_for_template
|
||||
@breweries = Brewery.all
|
||||
@styles = ["Weizen", "Lager", "Pale ale", "IPA", "Porter", "Lowalcohol"]
|
||||
@styles = Style.all
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2,6 +2,7 @@ class Beer < ApplicationRecord
|
||||
include RatingAverage
|
||||
|
||||
belongs_to :brewery
|
||||
belongs_to :style
|
||||
has_many :ratings, dependent: :destroy
|
||||
has_many :users, through: :ratings
|
||||
|
||||
|
||||
+2
-1
@@ -36,9 +36,10 @@ class User < ApplicationRecord
|
||||
|
||||
items = {}
|
||||
ratings.each do |rating|
|
||||
style = Style.find_by_id rating.beer.style_id
|
||||
attributes = {
|
||||
# create hash with key being style name and value first 0 and then the score
|
||||
"styles" => rating.beer.style,
|
||||
"styles" => style.name,
|
||||
# iterate through ratings and add scores depending on
|
||||
# which brewery the beer that was rated was made in
|
||||
"breweries" => rating.beer.brewery.name
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
<p>
|
||||
<strong>Style:</strong>
|
||||
<%= beer.style %>
|
||||
<%= beer.style.name %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<%= form.label :style, style: "display: block" %>
|
||||
<%= form.select :style, options_for_select(@styles) %>
|
||||
<%= form.label :style_id, style: "display: block" %>
|
||||
<%= form.select :style_id, options_from_collection_for_select(@styles, :id, :name) %>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
+5
-1
@@ -10,9 +10,13 @@ FactoryBot.define do
|
||||
year { 2023 }
|
||||
end
|
||||
|
||||
factory :style do
|
||||
name { "Yes" }
|
||||
end
|
||||
|
||||
factory :beer do
|
||||
name { "Something good" }
|
||||
style { "Yes" }
|
||||
style
|
||||
brewery
|
||||
end
|
||||
|
||||
|
||||
@@ -3,7 +3,8 @@ require "rails_helper"
|
||||
describe "Beers page" do
|
||||
let(:user) { FactoryBot.create :user }
|
||||
let(:brewery){ FactoryBot.create :brewery }
|
||||
let(:beer){ FactoryBot.create :beer }
|
||||
let(:style) { FactoryBot.create :style }
|
||||
let(:beer){ FactoryBot.create :beer, brewery: brewery, style_id: style.id }
|
||||
|
||||
it "should be empty before tests" do
|
||||
visit beers_path
|
||||
@@ -16,6 +17,7 @@ describe "Beers page" do
|
||||
|
||||
it "should display all beers in the database" do
|
||||
brewery.save()
|
||||
style.save()
|
||||
beer.save()
|
||||
|
||||
visit beers_path
|
||||
@@ -26,6 +28,7 @@ describe "Beers page" do
|
||||
|
||||
it "should be able to add a new beer" do
|
||||
user.save()
|
||||
style.save()
|
||||
brewery.save()
|
||||
|
||||
visit new_session_path
|
||||
|
||||
@@ -2,19 +2,20 @@ require 'rails_helper'
|
||||
|
||||
RSpec.describe Beer, type: :model do
|
||||
describe "creation" do
|
||||
let(:user){ User.create username: "Möötti", password: "Unsecure1"}
|
||||
let(:brewery){ Brewery.create name: "Creative", year: 2023 }
|
||||
let(:user) { User.create username: "Möötti", password: "Unsecure1"}
|
||||
let(:brewery) { Brewery.create name: "Creative", year: 2023 }
|
||||
let(:style) { FactoryBot.create :style }
|
||||
|
||||
it "is successful with correct parameters" do
|
||||
beer = Beer.create name: "Hyvä juoma", style: "Yes", brewery_id: brewery.id
|
||||
beer = Beer.create name: "Hyvä juoma", style_id: style.id, brewery_id: brewery.id
|
||||
expect(beer).to be_valid
|
||||
expect(beer.name).to eq "Hyvä juoma"
|
||||
expect(beer.style).to eq "Yes"
|
||||
expect(beer.style_id).to eq style.id
|
||||
expect(beer.brewery_id).to eq brewery.id
|
||||
end
|
||||
|
||||
it "fails if no name is given" do
|
||||
beer = Beer.create style: "No", brewery_id: brewery.id
|
||||
beer = Beer.create style_id: style.id, brewery_id: brewery.id
|
||||
expect(beer).to_not be_valid
|
||||
end
|
||||
|
||||
|
||||
+13
-10
@@ -29,8 +29,9 @@ RSpec.describe User, type: :model do
|
||||
end
|
||||
|
||||
describe "favourite_style" do
|
||||
let(:user){ FactoryBot.create(:user) }
|
||||
let(:brewery){ FactoryBot.create(:brewery) }
|
||||
let(:user) { FactoryBot.create(:user) }
|
||||
let(:brewery) { FactoryBot.create(:brewery) }
|
||||
let(:style) { FactoryBot.create(:style) }
|
||||
|
||||
it "is defined method" do
|
||||
expect(user).to respond_to(:favorite_style)
|
||||
@@ -41,16 +42,17 @@ RSpec.describe User, type: :model do
|
||||
end
|
||||
|
||||
it "returns the most liked style" do
|
||||
create_beer_with_many_ratings({user: user, brewery: brewery}, 10, 10, 20)
|
||||
beer_with_favorite_style = FactoryBot.create(:beer, style: "No")
|
||||
create_beer_with_many_ratings({user: user, brewery: brewery, style: style.id}, 10, 10, 20)
|
||||
beer_with_favorite_style = FactoryBot.create :beer, style_id: style.id
|
||||
FactoryBot.create(:rating, beer: beer_with_favorite_style, score: 50, user: user)
|
||||
|
||||
expect(user.favorite_style).to eq "No"
|
||||
expect(user.favorite_style).to eq "Yes"
|
||||
end
|
||||
|
||||
it "also returns the most liked style" do
|
||||
create_beer_with_many_ratings({user: user, brewery: brewery}, 20, 30, 20)
|
||||
beer_with_favorite_style = FactoryBot.create(:beer, style: "No")
|
||||
other_style = Style.create name: "No"
|
||||
create_beer_with_many_ratings({user: user, brewery: brewery, style: style.id}, 20, 30, 20)
|
||||
beer_with_favorite_style = FactoryBot.create(:beer, style_id: other_style.id)
|
||||
FactoryBot.create(:rating, beer: beer_with_favorite_style, score: 50, user: user)
|
||||
|
||||
expect(user.favorite_style).to eq "Yes"
|
||||
@@ -61,8 +63,9 @@ RSpec.describe User, type: :model do
|
||||
let(:user){ FactoryBot.create(:user) }
|
||||
let(:brewery1){ FactoryBot.create(:brewery) }
|
||||
let(:brewery2){ FactoryBot.create(:brewery, name: "Boring") }
|
||||
before do create_beer_with_many_ratings({user: user, brewery: brewery1}, 20, 30, 20, 40) end
|
||||
before do create_beer_with_many_ratings({user: user, brewery: brewery2}, 20, 30, 20, 50) end
|
||||
let(:style) { FactoryBot.create(:style) }
|
||||
before do create_beer_with_many_ratings({user: user, brewery: brewery1, style: style.id}, 20, 30, 20, 40) end
|
||||
before do create_beer_with_many_ratings({user: user, brewery: brewery2, style: style.id}, 20, 30, 20, 50) end
|
||||
|
||||
it "is a defined method" do
|
||||
expect(user).to respond_to(:favorite_brewery)
|
||||
@@ -78,7 +81,7 @@ RSpec.describe User, type: :model do
|
||||
end
|
||||
|
||||
def create_beer_with_rating(object, score)
|
||||
beer = FactoryBot.create(:beer, brewery: object[:brewery])
|
||||
beer = FactoryBot.create(:beer, brewery: object[:brewery], style_id: object[:style])
|
||||
rating = FactoryBot.create(:rating, beer: beer, score: score, user: object[:user])
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user