From b0ad2049c591a89a3a14567a5500654dbc2fb177 Mon Sep 17 00:00:00 2001 From: Nweni Date: Fri, 11 Aug 2017 13:34:30 +0630 Subject: [PATCH] dining_charges --- app/assets/javascripts/dining_charges.coffee | 3 + app/assets/stylesheets/dining_charges.scss | 3 + app/controllers/dining_charges_controller.rb | 74 +++++++++ app/helpers/dining_charges_helper.rb | 2 + app/models/dining_charge.rb | 2 + .../_dining_charge.json.jbuilder | 2 + app/views/dining_charges/_form.html.erb | 10 ++ app/views/dining_charges/edit.html.erb | 6 + app/views/dining_charges/index.html.erb | 25 ++++ app/views/dining_charges/index.json.jbuilder | 1 + app/views/dining_charges/new.html.erb | 5 + app/views/dining_charges/show.html.erb | 4 + app/views/dining_charges/show.json.jbuilder | 1 + config/routes.rb | 1 + db/migrate/20170622050926_create_customers.rb | 2 +- .../20170811052036_create_dining_charges.rb | 16 ++ .../dining_charges_controller_spec.rb | 141 ++++++++++++++++++ spec/helpers/dining_charges_helper_spec.rb | 15 ++ spec/models/dining_charge_spec.rb | 5 + spec/requests/dining_charges_spec.rb | 10 ++ spec/routing/dining_charges_routing_spec.rb | 39 +++++ .../dining_charges/edit.html.erb_spec.rb | 14 ++ .../dining_charges/index.html.erb_spec.rb | 14 ++ .../views/dining_charges/new.html.erb_spec.rb | 14 ++ .../dining_charges/show.html.erb_spec.rb | 11 ++ test/system/dining_charges_test.rb | 9 ++ 26 files changed, 428 insertions(+), 1 deletion(-) create mode 100644 app/assets/javascripts/dining_charges.coffee create mode 100644 app/assets/stylesheets/dining_charges.scss create mode 100644 app/controllers/dining_charges_controller.rb create mode 100644 app/helpers/dining_charges_helper.rb create mode 100644 app/models/dining_charge.rb create mode 100644 app/views/dining_charges/_dining_charge.json.jbuilder create mode 100644 app/views/dining_charges/_form.html.erb create mode 100644 app/views/dining_charges/edit.html.erb create mode 100644 app/views/dining_charges/index.html.erb create mode 100644 app/views/dining_charges/index.json.jbuilder create mode 100644 app/views/dining_charges/new.html.erb create mode 100644 app/views/dining_charges/show.html.erb create mode 100644 app/views/dining_charges/show.json.jbuilder create mode 100644 db/migrate/20170811052036_create_dining_charges.rb create mode 100644 spec/controllers/dining_charges_controller_spec.rb create mode 100644 spec/helpers/dining_charges_helper_spec.rb create mode 100644 spec/models/dining_charge_spec.rb create mode 100644 spec/requests/dining_charges_spec.rb create mode 100644 spec/routing/dining_charges_routing_spec.rb create mode 100644 spec/views/dining_charges/edit.html.erb_spec.rb create mode 100644 spec/views/dining_charges/index.html.erb_spec.rb create mode 100644 spec/views/dining_charges/new.html.erb_spec.rb create mode 100644 spec/views/dining_charges/show.html.erb_spec.rb create mode 100644 test/system/dining_charges_test.rb diff --git a/app/assets/javascripts/dining_charges.coffee b/app/assets/javascripts/dining_charges.coffee new file mode 100644 index 00000000..24f83d18 --- /dev/null +++ b/app/assets/javascripts/dining_charges.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/stylesheets/dining_charges.scss b/app/assets/stylesheets/dining_charges.scss new file mode 100644 index 00000000..b0d4ba51 --- /dev/null +++ b/app/assets/stylesheets/dining_charges.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the dining_charges controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/dining_charges_controller.rb b/app/controllers/dining_charges_controller.rb new file mode 100644 index 00000000..7b95af58 --- /dev/null +++ b/app/controllers/dining_charges_controller.rb @@ -0,0 +1,74 @@ +class DiningChargesController < ApplicationController + before_action :set_dining_charge, only: [:show, :edit, :update, :destroy] + + # GET /dining_charges + # GET /dining_charges.json + def index + @dining_charges = DiningCharge.all + end + + # GET /dining_charges/1 + # GET /dining_charges/1.json + def show + end + + # GET /dining_charges/new + def new + @dining_charge = DiningCharge.new + end + + # GET /dining_charges/1/edit + def edit + end + + # POST /dining_charges + # POST /dining_charges.json + def create + @dining_charge = DiningCharge.new(dining_charge_params) + + respond_to do |format| + if @dining_charge.save + format.html { redirect_to @dining_charge, notice: 'Dining charge was successfully created.' } + format.json { render :show, status: :created, location: @dining_charge } + else + format.html { render :new } + format.json { render json: @dining_charge.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /dining_charges/1 + # PATCH/PUT /dining_charges/1.json + def update + respond_to do |format| + if @dining_charge.update(dining_charge_params) + format.html { redirect_to @dining_charge, notice: 'Dining charge was successfully updated.' } + format.json { render :show, status: :ok, location: @dining_charge } + else + format.html { render :edit } + format.json { render json: @dining_charge.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /dining_charges/1 + # DELETE /dining_charges/1.json + def destroy + @dining_charge.destroy + respond_to do |format| + format.html { redirect_to dining_charges_url, notice: 'Dining charge was successfully destroyed.' } + format.json { head :no_content } + end + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_dining_charge + @dining_charge = DiningCharge.find(params[:id]) + end + + # Never trust parameters from the scary internet, only allow the white list through. + def dining_charge_params + params.fetch(:dining_charge, {}) + end +end diff --git a/app/helpers/dining_charges_helper.rb b/app/helpers/dining_charges_helper.rb new file mode 100644 index 00000000..972a028c --- /dev/null +++ b/app/helpers/dining_charges_helper.rb @@ -0,0 +1,2 @@ +module DiningChargesHelper +end diff --git a/app/models/dining_charge.rb b/app/models/dining_charge.rb new file mode 100644 index 00000000..9a6c5524 --- /dev/null +++ b/app/models/dining_charge.rb @@ -0,0 +1,2 @@ +class DiningCharge < ApplicationRecord +end diff --git a/app/views/dining_charges/_dining_charge.json.jbuilder b/app/views/dining_charges/_dining_charge.json.jbuilder new file mode 100644 index 00000000..045eb7ae --- /dev/null +++ b/app/views/dining_charges/_dining_charge.json.jbuilder @@ -0,0 +1,2 @@ +json.extract! dining_charge, :id, :created_at, :updated_at +json.url dining_charge_url(dining_charge, format: :json) diff --git a/app/views/dining_charges/_form.html.erb b/app/views/dining_charges/_form.html.erb new file mode 100644 index 00000000..0d4232f9 --- /dev/null +++ b/app/views/dining_charges/_form.html.erb @@ -0,0 +1,10 @@ +<%= simple_form_for(@dining_charge) do |f| %> + <%= f.error_notification %> + +
+
+ +
+ <%= f.button :submit %> +
+<% end %> diff --git a/app/views/dining_charges/edit.html.erb b/app/views/dining_charges/edit.html.erb new file mode 100644 index 00000000..042b88d2 --- /dev/null +++ b/app/views/dining_charges/edit.html.erb @@ -0,0 +1,6 @@ +

Editing Dining Charge

+ +<%= render 'form', dining_charge: @dining_charge %> + +<%= link_to 'Show', @dining_charge %> | +<%= link_to 'Back', dining_charges_path %> diff --git a/app/views/dining_charges/index.html.erb b/app/views/dining_charges/index.html.erb new file mode 100644 index 00000000..0b3424ac --- /dev/null +++ b/app/views/dining_charges/index.html.erb @@ -0,0 +1,25 @@ +

<%= notice %>

+ +

Dining Charges

+ + + + + + + + + + <% @dining_charges.each do |dining_charge| %> + + + + + + <% end %> + +
<%= link_to 'Show', dining_charge %><%= link_to 'Edit', edit_dining_charge_path(dining_charge) %><%= link_to 'Destroy', dining_charge, method: :delete, data: { confirm: 'Are you sure?' } %>
+ +
+ +<%= link_to 'New Dining Charge', new_dining_charge_path %> diff --git a/app/views/dining_charges/index.json.jbuilder b/app/views/dining_charges/index.json.jbuilder new file mode 100644 index 00000000..0bb9b37d --- /dev/null +++ b/app/views/dining_charges/index.json.jbuilder @@ -0,0 +1 @@ +json.array! @dining_charges, partial: 'dining_charges/dining_charge', as: :dining_charge diff --git a/app/views/dining_charges/new.html.erb b/app/views/dining_charges/new.html.erb new file mode 100644 index 00000000..9f56e5d3 --- /dev/null +++ b/app/views/dining_charges/new.html.erb @@ -0,0 +1,5 @@ +

New Dining Charge

+ +<%= render 'form', dining_charge: @dining_charge %> + +<%= link_to 'Back', dining_charges_path %> diff --git a/app/views/dining_charges/show.html.erb b/app/views/dining_charges/show.html.erb new file mode 100644 index 00000000..b37298ae --- /dev/null +++ b/app/views/dining_charges/show.html.erb @@ -0,0 +1,4 @@ +

<%= notice %>

+ +<%= link_to 'Edit', edit_dining_charge_path(@dining_charge) %> | +<%= link_to 'Back', dining_charges_path %> diff --git a/app/views/dining_charges/show.json.jbuilder b/app/views/dining_charges/show.json.jbuilder new file mode 100644 index 00000000..a91128e1 --- /dev/null +++ b/app/views/dining_charges/show.json.jbuilder @@ -0,0 +1 @@ +json.partial! "dining_charges/dining_charge", dining_charge: @dining_charge diff --git a/config/routes.rb b/config/routes.rb index 0753b64b..12e3f542 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -2,6 +2,7 @@ require 'sidekiq/web' Rails.application.routes.draw do + resources :dining_charges root 'home#index' mount Sidekiq::Web => '/kiq' diff --git a/db/migrate/20170622050926_create_customers.rb b/db/migrate/20170622050926_create_customers.rb index 28f38e15..cb370bc1 100644 --- a/db/migrate/20170622050926_create_customers.rb +++ b/db/migrate/20170622050926_create_customers.rb @@ -16,7 +16,7 @@ class CreateCustomers < ActiveRecord::Migration[5.1] t.string :membership_id t.string :membership_type t.string :membership_authentication_code - t.string :customer_type, default => "Dinein" + t.string :customer_type, :default => "Dinein" t.json :tax_profiles end end diff --git a/db/migrate/20170811052036_create_dining_charges.rb b/db/migrate/20170811052036_create_dining_charges.rb new file mode 100644 index 00000000..3a77ad18 --- /dev/null +++ b/db/migrate/20170811052036_create_dining_charges.rb @@ -0,0 +1,16 @@ +class CreateDiningCharges < ActiveRecord::Migration[5.1] + def change + create_table :dining_charges do |t| + t.references :dining_facility + t.string :item_code, :null => false + t.integer :unit_price, :default => 0 + t.boolean :taxable, :default => true + t.string :charge_type, :default => "hr" + t.time :minimum_free_time + t.time :charge_block + t.string :time_rounding, :default => "down" + t.time :time_rounding_block + t.timestamps + end + end +end diff --git a/spec/controllers/dining_charges_controller_spec.rb b/spec/controllers/dining_charges_controller_spec.rb new file mode 100644 index 00000000..2d92fe46 --- /dev/null +++ b/spec/controllers/dining_charges_controller_spec.rb @@ -0,0 +1,141 @@ +require 'rails_helper' + +# This spec was generated by rspec-rails when you ran the scaffold generator. +# It demonstrates how one might use RSpec to specify the controller code that +# was generated by Rails when you ran the scaffold generator. +# +# It assumes that the implementation code is generated by the rails scaffold +# generator. If you are using any extension libraries to generate different +# controller code, this generated spec may or may not pass. +# +# It only uses APIs available in rails and/or rspec-rails. There are a number +# of tools you can use to make these specs even more expressive, but we're +# sticking to rails and rspec-rails APIs to keep things simple and stable. +# +# Compared to earlier versions of this generator, there is very limited use of +# stubs and message expectations in this spec. Stubs are only used when there +# is no simpler way to get a handle on the object needed for the example. +# Message expectations are only used when there is no simpler way to specify +# that an instance is receiving a specific message. +# +# Also compared to earlier versions of this generator, there are no longer any +# expectations of assigns and templates rendered. These features have been +# removed from Rails core in Rails 5, but can be added back in via the +# `rails-controller-testing` gem. + +RSpec.describe DiningChargesController, type: :controller do + + # This should return the minimal set of attributes required to create a valid + # DiningCharge. As you add validations to DiningCharge, be sure to + # adjust the attributes here as well. + let(:valid_attributes) { + skip("Add a hash of attributes valid for your model") + } + + let(:invalid_attributes) { + skip("Add a hash of attributes invalid for your model") + } + + # This should return the minimal set of values that should be in the session + # in order to pass any filters (e.g. authentication) defined in + # DiningChargesController. Be sure to keep this updated too. + let(:valid_session) { {} } + + describe "GET #index" do + it "returns a success response" do + dining_charge = DiningCharge.create! valid_attributes + get :index, params: {}, session: valid_session + expect(response).to be_success + end + end + + describe "GET #show" do + it "returns a success response" do + dining_charge = DiningCharge.create! valid_attributes + get :show, params: {id: dining_charge.to_param}, session: valid_session + expect(response).to be_success + end + end + + describe "GET #new" do + it "returns a success response" do + get :new, params: {}, session: valid_session + expect(response).to be_success + end + end + + describe "GET #edit" do + it "returns a success response" do + dining_charge = DiningCharge.create! valid_attributes + get :edit, params: {id: dining_charge.to_param}, session: valid_session + expect(response).to be_success + end + end + + describe "POST #create" do + context "with valid params" do + it "creates a new DiningCharge" do + expect { + post :create, params: {dining_charge: valid_attributes}, session: valid_session + }.to change(DiningCharge, :count).by(1) + end + + it "redirects to the created dining_charge" do + post :create, params: {dining_charge: valid_attributes}, session: valid_session + expect(response).to redirect_to(DiningCharge.last) + end + end + + context "with invalid params" do + it "returns a success response (i.e. to display the 'new' template)" do + post :create, params: {dining_charge: invalid_attributes}, session: valid_session + expect(response).to be_success + end + end + end + + describe "PUT #update" do + context "with valid params" do + let(:new_attributes) { + skip("Add a hash of attributes valid for your model") + } + + it "updates the requested dining_charge" do + dining_charge = DiningCharge.create! valid_attributes + put :update, params: {id: dining_charge.to_param, dining_charge: new_attributes}, session: valid_session + dining_charge.reload + skip("Add assertions for updated state") + end + + it "redirects to the dining_charge" do + dining_charge = DiningCharge.create! valid_attributes + put :update, params: {id: dining_charge.to_param, dining_charge: valid_attributes}, session: valid_session + expect(response).to redirect_to(dining_charge) + end + end + + context "with invalid params" do + it "returns a success response (i.e. to display the 'edit' template)" do + dining_charge = DiningCharge.create! valid_attributes + put :update, params: {id: dining_charge.to_param, dining_charge: invalid_attributes}, session: valid_session + expect(response).to be_success + end + end + end + + describe "DELETE #destroy" do + it "destroys the requested dining_charge" do + dining_charge = DiningCharge.create! valid_attributes + expect { + delete :destroy, params: {id: dining_charge.to_param}, session: valid_session + }.to change(DiningCharge, :count).by(-1) + end + + it "redirects to the dining_charges list" do + dining_charge = DiningCharge.create! valid_attributes + delete :destroy, params: {id: dining_charge.to_param}, session: valid_session + expect(response).to redirect_to(dining_charges_url) + end + end + +end diff --git a/spec/helpers/dining_charges_helper_spec.rb b/spec/helpers/dining_charges_helper_spec.rb new file mode 100644 index 00000000..9592fc0b --- /dev/null +++ b/spec/helpers/dining_charges_helper_spec.rb @@ -0,0 +1,15 @@ +require 'rails_helper' + +# Specs in this file have access to a helper object that includes +# the DiningChargesHelper. For example: +# +# describe DiningChargesHelper do +# describe "string concat" do +# it "concats two strings with spaces" do +# expect(helper.concat_strings("this","that")).to eq("this that") +# end +# end +# end +RSpec.describe DiningChargesHelper, type: :helper do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/models/dining_charge_spec.rb b/spec/models/dining_charge_spec.rb new file mode 100644 index 00000000..bc7b0d21 --- /dev/null +++ b/spec/models/dining_charge_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe DiningCharge, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/requests/dining_charges_spec.rb b/spec/requests/dining_charges_spec.rb new file mode 100644 index 00000000..79ac650c --- /dev/null +++ b/spec/requests/dining_charges_spec.rb @@ -0,0 +1,10 @@ +require 'rails_helper' + +RSpec.describe "DiningCharges", type: :request do + describe "GET /dining_charges" do + it "works! (now write some real specs)" do + get dining_charges_path + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/routing/dining_charges_routing_spec.rb b/spec/routing/dining_charges_routing_spec.rb new file mode 100644 index 00000000..0cf8211b --- /dev/null +++ b/spec/routing/dining_charges_routing_spec.rb @@ -0,0 +1,39 @@ +require "rails_helper" + +RSpec.describe DiningChargesController, type: :routing do + describe "routing" do + + it "routes to #index" do + expect(:get => "/dining_charges").to route_to("dining_charges#index") + end + + it "routes to #new" do + expect(:get => "/dining_charges/new").to route_to("dining_charges#new") + end + + it "routes to #show" do + expect(:get => "/dining_charges/1").to route_to("dining_charges#show", :id => "1") + end + + it "routes to #edit" do + expect(:get => "/dining_charges/1/edit").to route_to("dining_charges#edit", :id => "1") + end + + it "routes to #create" do + expect(:post => "/dining_charges").to route_to("dining_charges#create") + end + + it "routes to #update via PUT" do + expect(:put => "/dining_charges/1").to route_to("dining_charges#update", :id => "1") + end + + it "routes to #update via PATCH" do + expect(:patch => "/dining_charges/1").to route_to("dining_charges#update", :id => "1") + end + + it "routes to #destroy" do + expect(:delete => "/dining_charges/1").to route_to("dining_charges#destroy", :id => "1") + end + + end +end diff --git a/spec/views/dining_charges/edit.html.erb_spec.rb b/spec/views/dining_charges/edit.html.erb_spec.rb new file mode 100644 index 00000000..d91e5fea --- /dev/null +++ b/spec/views/dining_charges/edit.html.erb_spec.rb @@ -0,0 +1,14 @@ +require 'rails_helper' + +RSpec.describe "dining_charges/edit", type: :view do + before(:each) do + @dining_charge = assign(:dining_charge, DiningCharge.create!()) + end + + it "renders the edit dining_charge form" do + render + + assert_select "form[action=?][method=?]", dining_charge_path(@dining_charge), "post" do + end + end +end diff --git a/spec/views/dining_charges/index.html.erb_spec.rb b/spec/views/dining_charges/index.html.erb_spec.rb new file mode 100644 index 00000000..1712a84f --- /dev/null +++ b/spec/views/dining_charges/index.html.erb_spec.rb @@ -0,0 +1,14 @@ +require 'rails_helper' + +RSpec.describe "dining_charges/index", type: :view do + before(:each) do + assign(:dining_charges, [ + DiningCharge.create!(), + DiningCharge.create!() + ]) + end + + it "renders a list of dining_charges" do + render + end +end diff --git a/spec/views/dining_charges/new.html.erb_spec.rb b/spec/views/dining_charges/new.html.erb_spec.rb new file mode 100644 index 00000000..91bb8ac2 --- /dev/null +++ b/spec/views/dining_charges/new.html.erb_spec.rb @@ -0,0 +1,14 @@ +require 'rails_helper' + +RSpec.describe "dining_charges/new", type: :view do + before(:each) do + assign(:dining_charge, DiningCharge.new()) + end + + it "renders new dining_charge form" do + render + + assert_select "form[action=?][method=?]", dining_charges_path, "post" do + end + end +end diff --git a/spec/views/dining_charges/show.html.erb_spec.rb b/spec/views/dining_charges/show.html.erb_spec.rb new file mode 100644 index 00000000..e3674b43 --- /dev/null +++ b/spec/views/dining_charges/show.html.erb_spec.rb @@ -0,0 +1,11 @@ +require 'rails_helper' + +RSpec.describe "dining_charges/show", type: :view do + before(:each) do + @dining_charge = assign(:dining_charge, DiningCharge.create!()) + end + + it "renders attributes in

" do + render + end +end diff --git a/test/system/dining_charges_test.rb b/test/system/dining_charges_test.rb new file mode 100644 index 00000000..3ed188c5 --- /dev/null +++ b/test/system/dining_charges_test.rb @@ -0,0 +1,9 @@ +require "application_system_test_case" + +class DiningChargesTest < ApplicationSystemTestCase + # test "visiting the index" do + # visit dining_charges_url + # + # assert_selector "h1", text: "DiningCharge" + # end +end