From 794e36951fc269cffb220893213266fb73ebf5a2 Mon Sep 17 00:00:00 2001 From: jihaneh Date: Tue, 20 Dec 2022 20:11:26 +0100 Subject: [PATCH] Add Allergen scaffold --- app/controllers/allergens_controller.rb | 69 +++++++++++++++++++ app/helpers/allergens_helper.rb | 2 + app/models/allergen.rb | 2 + app/views/allergens/_allergen.html.erb | 7 ++ app/views/allergens/_allergen.json.jbuilder | 2 + app/views/allergens/_form.html.erb | 22 ++++++ app/views/allergens/edit.html.erb | 10 +++ app/views/allergens/index.html.erb | 14 ++++ app/views/allergens/index.json.jbuilder | 1 + app/views/allergens/new.html.erb | 9 +++ app/views/allergens/show.html.erb | 10 +++ app/views/allergens/show.json.jbuilder | 1 + config/locales/en.yml | 3 + config/routes.rb | 1 + db/migrate/20221220190847_create_allergens.rb | 9 +++ test/controllers/allergens_controller_test.rb | 48 +++++++++++++ test/fixtures/allergens.yml | 7 ++ test/models/allergen_test.rb | 7 ++ test/system/allergens_test.rb | 41 +++++++++++ 19 files changed, 265 insertions(+) create mode 100644 app/controllers/allergens_controller.rb create mode 100644 app/helpers/allergens_helper.rb create mode 100644 app/models/allergen.rb create mode 100644 app/views/allergens/_allergen.html.erb create mode 100644 app/views/allergens/_allergen.json.jbuilder create mode 100644 app/views/allergens/_form.html.erb create mode 100644 app/views/allergens/edit.html.erb create mode 100644 app/views/allergens/index.html.erb create mode 100644 app/views/allergens/index.json.jbuilder create mode 100644 app/views/allergens/new.html.erb create mode 100644 app/views/allergens/show.html.erb create mode 100644 app/views/allergens/show.json.jbuilder create mode 100644 db/migrate/20221220190847_create_allergens.rb create mode 100644 test/controllers/allergens_controller_test.rb create mode 100644 test/fixtures/allergens.yml create mode 100644 test/models/allergen_test.rb create mode 100644 test/system/allergens_test.rb diff --git a/app/controllers/allergens_controller.rb b/app/controllers/allergens_controller.rb new file mode 100644 index 0000000..fbd8633 --- /dev/null +++ b/app/controllers/allergens_controller.rb @@ -0,0 +1,69 @@ +class AllergensController < ApplicationController + before_action :set_allergen, only: %i[show edit update destroy] + + # GET /allergens or /allergens.json + def index + @allergens = Allergen.all + end + + # GET /allergens/1 or /allergens/1.json + def show; end + + # GET /allergens/new + def new + @allergen = Allergen.new + end + + # GET /allergens/1/edit + def edit; end + + # POST /allergens or /allergens.json + def create + @allergen = Allergen.new(allergen_params) + + respond_to do |format| + if @allergen.save + format.html { redirect_to allergen_url(@allergen), notice: t(:allergen_created) } + format.json { render :show, status: :created, location: @allergen } + else + format.html { render :new, status: :unprocessable_entity } + format.json { render json: @allergen.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /allergens/1 or /allergens/1.json + def update + respond_to do |format| + if @allergen.update(allergen_params) + format.html { redirect_to allergen_url(@allergen), notice: t(:allergen_updated) } + format.json { render :show, status: :ok, location: @allergen } + else + format.html { render :edit, status: :unprocessable_entity } + format.json { render json: @allergen.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /allergens/1 or /allergens/1.json + def destroy + @allergen.destroy + + respond_to do |format| + format.html { redirect_to allergens_url, notice: t(:allergen_destroyed) } + format.json { head :no_content } + end + end + + private + + # Use callbacks to share common setup or constraints between actions. + def set_allergen + @allergen = Allergen.find(params[:id]) + end + + # Only allow a list of trusted parameters through. + def allergen_params + params.require(:allergen).permit(:name) + end +end diff --git a/app/helpers/allergens_helper.rb b/app/helpers/allergens_helper.rb new file mode 100644 index 0000000..78eb3d2 --- /dev/null +++ b/app/helpers/allergens_helper.rb @@ -0,0 +1,2 @@ +module AllergensHelper +end diff --git a/app/models/allergen.rb b/app/models/allergen.rb new file mode 100644 index 0000000..7914eea --- /dev/null +++ b/app/models/allergen.rb @@ -0,0 +1,2 @@ +class Allergen < ApplicationRecord +end diff --git a/app/views/allergens/_allergen.html.erb b/app/views/allergens/_allergen.html.erb new file mode 100644 index 0000000..2226d67 --- /dev/null +++ b/app/views/allergens/_allergen.html.erb @@ -0,0 +1,7 @@ +
+

+ Name: + <%= allergen.name %> +

+ +
diff --git a/app/views/allergens/_allergen.json.jbuilder b/app/views/allergens/_allergen.json.jbuilder new file mode 100644 index 0000000..b8ba360 --- /dev/null +++ b/app/views/allergens/_allergen.json.jbuilder @@ -0,0 +1,2 @@ +json.extract! allergen, :id, :name, :created_at, :updated_at +json.url allergen_url(allergen, format: :json) diff --git a/app/views/allergens/_form.html.erb b/app/views/allergens/_form.html.erb new file mode 100644 index 0000000..a98d880 --- /dev/null +++ b/app/views/allergens/_form.html.erb @@ -0,0 +1,22 @@ +<%= form_with(model: allergen) do |form| %> + <% if allergen.errors.any? %> +
+

<%= pluralize(allergen.errors.count, "error") %> prohibited this allergen from being saved:

+ + +
+ <% end %> + +
+ <%= form.label :name, style: "display: block" %> + <%= form.text_field :name %> +
+ +
+ <%= form.submit %> +
+<% end %> diff --git a/app/views/allergens/edit.html.erb b/app/views/allergens/edit.html.erb new file mode 100644 index 0000000..f6a0acf --- /dev/null +++ b/app/views/allergens/edit.html.erb @@ -0,0 +1,10 @@ +

Editing allergen

+ +<%= render "form", allergen: @allergen %> + +
+ +
+ <%= link_to "Show this allergen", @allergen %> | + <%= link_to "Back to allergens", allergens_path %> +
diff --git a/app/views/allergens/index.html.erb b/app/views/allergens/index.html.erb new file mode 100644 index 0000000..700623a --- /dev/null +++ b/app/views/allergens/index.html.erb @@ -0,0 +1,14 @@ +

<%= notice %>

+ +

Allergens

+ +
+ <% @allergens.each do |allergen| %> + <%= render allergen %> +

+ <%= link_to "Show this allergen", allergen %> +

+ <% end %> +
+ +<%= link_to "New allergen", new_allergen_path %> diff --git a/app/views/allergens/index.json.jbuilder b/app/views/allergens/index.json.jbuilder new file mode 100644 index 0000000..428eaea --- /dev/null +++ b/app/views/allergens/index.json.jbuilder @@ -0,0 +1 @@ +json.array! @allergens, partial: 'allergens/allergen', as: :allergen diff --git a/app/views/allergens/new.html.erb b/app/views/allergens/new.html.erb new file mode 100644 index 0000000..5e52786 --- /dev/null +++ b/app/views/allergens/new.html.erb @@ -0,0 +1,9 @@ +

New allergen

+ +<%= render "form", allergen: @allergen %> + +
+ +
+ <%= link_to "Back to allergens", allergens_path %> +
diff --git a/app/views/allergens/show.html.erb b/app/views/allergens/show.html.erb new file mode 100644 index 0000000..f36dd98 --- /dev/null +++ b/app/views/allergens/show.html.erb @@ -0,0 +1,10 @@ +

<%= notice %>

+ +<%= render @allergen %> + +
+ <%= link_to "Edit this allergen", edit_allergen_path(@allergen) %> | + <%= link_to "Back to allergens", allergens_path %> + + <%= button_to "Destroy this allergen", @allergen, method: :delete %> +
diff --git a/app/views/allergens/show.json.jbuilder b/app/views/allergens/show.json.jbuilder new file mode 100644 index 0000000..c8c2400 --- /dev/null +++ b/app/views/allergens/show.json.jbuilder @@ -0,0 +1 @@ +json.partial! 'allergens/allergen', allergen: @allergen diff --git a/config/locales/en.yml b/config/locales/en.yml index dd891d8..a673da5 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -55,3 +55,6 @@ en: ingredient_created: 'Ingredient was successfully created.' ingredient_updated: 'Ingredient was successfully updated.' ingredient_destroyed: 'Ingredient was successfully destroyed.' + allergen_created: 'Allergen was successfully created.' + allergen_updated: 'Allergen was successfully updated.' + allergen_destroyed: 'Allergen was successfully destroyed.' diff --git a/config/routes.rb b/config/routes.rb index c42345a..ba56139 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,4 +1,5 @@ Rails.application.routes.draw do + resources :allergens resources :category_ingredients resources :ingredients resources :avoid_foods diff --git a/db/migrate/20221220190847_create_allergens.rb b/db/migrate/20221220190847_create_allergens.rb new file mode 100644 index 0000000..17d372f --- /dev/null +++ b/db/migrate/20221220190847_create_allergens.rb @@ -0,0 +1,9 @@ +class CreateAllergens < ActiveRecord::Migration[7.0] + def change + create_table :allergens do |t| + t.string :name + + t.timestamps + end + end +end diff --git a/test/controllers/allergens_controller_test.rb b/test/controllers/allergens_controller_test.rb new file mode 100644 index 0000000..7453446 --- /dev/null +++ b/test/controllers/allergens_controller_test.rb @@ -0,0 +1,48 @@ +require 'test_helper' + +class AllergensControllerTest < ActionDispatch::IntegrationTest + setup do + @allergen = allergens(:one) + end + + test 'should get index' do + get allergens_url + assert_response :success + end + + test 'should get new' do + get new_allergen_url + assert_response :success + end + + test 'should create allergen' do + assert_difference('Allergen.count') do + post allergens_url, params: { allergen: { name: @allergen.name } } + end + + assert_redirected_to allergen_url(Allergen.last) + end + + test 'should show allergen' do + get allergen_url(@allergen) + assert_response :success + end + + test 'should get edit' do + get edit_allergen_url(@allergen) + assert_response :success + end + + test 'should update allergen' do + patch allergen_url(@allergen), params: { allergen: { name: @allergen.name } } + assert_redirected_to allergen_url(@allergen) + end + + test 'should destroy allergen' do + assert_difference('Allergen.count', -1) do + delete allergen_url(@allergen) + end + + assert_redirected_to allergens_url + end +end diff --git a/test/fixtures/allergens.yml b/test/fixtures/allergens.yml new file mode 100644 index 0000000..7d41224 --- /dev/null +++ b/test/fixtures/allergens.yml @@ -0,0 +1,7 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + name: MyString + +two: + name: MyString diff --git a/test/models/allergen_test.rb b/test/models/allergen_test.rb new file mode 100644 index 0000000..51e31ce --- /dev/null +++ b/test/models/allergen_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class AllergenTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/system/allergens_test.rb b/test/system/allergens_test.rb new file mode 100644 index 0000000..0749d52 --- /dev/null +++ b/test/system/allergens_test.rb @@ -0,0 +1,41 @@ +require 'application_system_test_case' + +class AllergensTest < ApplicationSystemTestCase + setup do + @allergen = allergens(:one) + end + + test 'visiting the index' do + visit allergens_url + assert_selector 'h1', text: 'Allergens' + end + + test 'should create allergen' do + visit allergens_url + click_on 'New allergen' + + fill_in 'Name', with: @allergen.name + click_on 'Create Allergen' + + assert_text 'Allergen was successfully created' + click_on 'Back' + end + + test 'should update Allergen' do + visit allergen_url(@allergen) + click_on 'Edit this allergen', match: :first + + fill_in 'Name', with: @allergen.name + click_on 'Update Allergen' + + assert_text 'Allergen was successfully updated' + click_on 'Back' + end + + test 'should destroy Allergen' do + visit allergen_url(@allergen) + click_on 'Destroy this allergen', match: :first + + assert_text 'Allergen was successfully destroyed' + end +end