Rezervacije
This commit is contained in:
9
.idea/workspace.xml
generated
9
.idea/workspace.xml
generated
@@ -5,7 +5,11 @@
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="4396ea83-1b77-4c6e-9398-0afe5751bc17" name="Changes" comment="">
|
||||
<change afterPath="$PROJECT_DIR$/app/assets/javascripts/toastui-calendar.min.js" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/controllers/application_controller.rb" beforeDir="false" afterPath="$PROJECT_DIR$/app/controllers/application_controller.rb" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/models/company.rb" beforeDir="false" afterPath="$PROJECT_DIR$/app/models/company.rb" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/config/routes.rb" beforeDir="false" afterPath="$PROJECT_DIR$/config/routes.rb" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/db/schema.rb" beforeDir="false" afterPath="$PROJECT_DIR$/db/schema.rb" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
@@ -154,7 +158,8 @@
|
||||
<workItem from="1717826322261" duration="5740000" />
|
||||
<workItem from="1722023923709" duration="4524000" />
|
||||
<workItem from="1722663174775" duration="24000" />
|
||||
<workItem from="1722663205967" duration="2509000" />
|
||||
<workItem from="1722663205967" duration="8991000" />
|
||||
<workItem from="1722916917136" duration="1229000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
|
||||
3
Gemfile
3
Gemfile
@@ -45,6 +45,9 @@ gem "tzinfo-data", platforms: %i[ windows jruby ]
|
||||
gem "bootsnap", require: false
|
||||
|
||||
|
||||
gem 'stimulus-rails'
|
||||
gem "hotwire_combobox"
|
||||
|
||||
# Use Active Storage variants [https://guides.rubyonrails.org/active_storage_overview.html#transforming-images]
|
||||
# gem "image_processing", "~> 1.2"
|
||||
|
||||
|
||||
@@ -1,2 +1,9 @@
|
||||
class ApplicationController < ActionController::Base
|
||||
|
||||
private
|
||||
def set_company
|
||||
company_id = session.fetch(:company_id, Company.first&.id)
|
||||
session[:company_id] = company_id
|
||||
@company = Company.find(session[:company_id])
|
||||
end
|
||||
end
|
||||
|
||||
72
app/controllers/customers_controller.rb
Normal file
72
app/controllers/customers_controller.rb
Normal file
@@ -0,0 +1,72 @@
|
||||
class CustomersController < ApplicationController
|
||||
before_action :set_company
|
||||
before_action :set_customer, only: %i[ show edit update destroy ]
|
||||
|
||||
# GET /customers or /customers.json
|
||||
def index
|
||||
@customers = Customer.all
|
||||
end
|
||||
|
||||
# GET /customers/1 or /customers/1.json
|
||||
def show
|
||||
end
|
||||
|
||||
# GET /customers/new
|
||||
def new
|
||||
@customer = Customer.new
|
||||
end
|
||||
|
||||
# GET /customers/1/edit
|
||||
def edit
|
||||
end
|
||||
|
||||
# POST /customers or /customers.json
|
||||
def create
|
||||
@customer = Customer.new(customer_params)
|
||||
@customer.company = @company
|
||||
|
||||
respond_to do |format|
|
||||
if @customer.save
|
||||
format.html { redirect_to customer_url(@customer), notice: "Customer was successfully created." }
|
||||
format.json { render :show, status: :created, location: @customer }
|
||||
else
|
||||
format.html { render :new, status: :unprocessable_entity }
|
||||
format.json { render json: @customer.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# PATCH/PUT /customers/1 or /customers/1.json
|
||||
def update
|
||||
respond_to do |format|
|
||||
if @customer.update(customer_params)
|
||||
format.html { redirect_to customer_url(@customer), notice: "Customer was successfully updated." }
|
||||
format.json { render :show, status: :ok, location: @customer }
|
||||
else
|
||||
format.html { render :edit, status: :unprocessable_entity }
|
||||
format.json { render json: @customer.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# DELETE /customers/1 or /customers/1.json
|
||||
def destroy
|
||||
@customer.destroy!
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to customers_url, notice: "Customer was successfully destroyed." }
|
||||
format.json { head :no_content }
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
# Use callbacks to share common setup or constraints between actions.
|
||||
def set_customer
|
||||
@customer = Customer.find(params[:id])
|
||||
end
|
||||
|
||||
# Only allow a list of trusted parameters through.
|
||||
def customer_params
|
||||
params.require(:customer).permit(:name, :phone, :notes, :email, :birthyear)
|
||||
end
|
||||
end
|
||||
72
app/controllers/places_controller.rb
Normal file
72
app/controllers/places_controller.rb
Normal file
@@ -0,0 +1,72 @@
|
||||
class PlacesController < ApplicationController
|
||||
before_action :set_company
|
||||
before_action :set_place, only: %i[ show edit update destroy ]
|
||||
|
||||
# GET /places or /places.json
|
||||
def index
|
||||
@places = Place.all
|
||||
end
|
||||
|
||||
# GET /places/1 or /places/1.json
|
||||
def show
|
||||
end
|
||||
|
||||
# GET /places/new
|
||||
def new
|
||||
@place = Place.new
|
||||
end
|
||||
|
||||
# GET /places/1/edit
|
||||
def edit
|
||||
end
|
||||
|
||||
# POST /places or /places.json
|
||||
def create
|
||||
@place = Place.new(place_params)
|
||||
@place.company = @company
|
||||
|
||||
respond_to do |format|
|
||||
if @place.save
|
||||
format.html { redirect_to place_url(@place), notice: "Place was successfully created." }
|
||||
format.json { render :show, status: :created, location: @place }
|
||||
else
|
||||
format.html { render :new, status: :unprocessable_entity }
|
||||
format.json { render json: @place.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# PATCH/PUT /places/1 or /places/1.json
|
||||
def update
|
||||
respond_to do |format|
|
||||
if @place.update(place_params)
|
||||
format.html { redirect_to place_url(@place), notice: "Place was successfully updated." }
|
||||
format.json { render :show, status: :ok, location: @place }
|
||||
else
|
||||
format.html { render :edit, status: :unprocessable_entity }
|
||||
format.json { render json: @place.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# DELETE /places/1 or /places/1.json
|
||||
def destroy
|
||||
@place.destroy!
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to places_url, notice: "Place was successfully destroyed." }
|
||||
format.json { head :no_content }
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
# Use callbacks to share common setup or constraints between actions.
|
||||
def set_place
|
||||
@place = Place.find(params[:id])
|
||||
end
|
||||
|
||||
# Only allow a list of trusted parameters through.
|
||||
def place_params
|
||||
params.require(:place).permit(:name, :company_id)
|
||||
end
|
||||
end
|
||||
73
app/controllers/reservations_controller.rb
Normal file
73
app/controllers/reservations_controller.rb
Normal file
@@ -0,0 +1,73 @@
|
||||
class ReservationsController < ApplicationController
|
||||
before_action :set_company
|
||||
before_action :set_reservation, only: %i[ show edit update destroy ]
|
||||
|
||||
# GET /reservations or /reservations.json
|
||||
def index
|
||||
@reservations = Reservation.all
|
||||
end
|
||||
|
||||
# GET /reservations/1 or /reservations/1.json
|
||||
def show
|
||||
end
|
||||
|
||||
# GET /reservations/new
|
||||
def new
|
||||
@reservation = Reservation.new
|
||||
@reservation.place = @company.places.first
|
||||
end
|
||||
|
||||
# GET /reservations/1/edit
|
||||
def edit
|
||||
end
|
||||
|
||||
# POST /reservations or /reservations.json
|
||||
def create
|
||||
@reservation = Reservation.new(reservation_params)
|
||||
@reservation.company = @company
|
||||
|
||||
respond_to do |format|
|
||||
if @reservation.save
|
||||
format.html { redirect_to reservation_url(@reservation), notice: "Reservation was successfully created." }
|
||||
format.json { render :show, status: :created, location: @reservation }
|
||||
else
|
||||
format.html { render :new, status: :unprocessable_entity }
|
||||
format.json { render json: @reservation.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# PATCH/PUT /reservations/1 or /reservations/1.json
|
||||
def update
|
||||
respond_to do |format|
|
||||
if @reservation.update(reservation_params)
|
||||
format.html { redirect_to reservation_url(@reservation), notice: "Reservation was successfully updated." }
|
||||
format.json { render :show, status: :ok, location: @reservation }
|
||||
else
|
||||
format.html { render :edit, status: :unprocessable_entity }
|
||||
format.json { render json: @reservation.errors, status: :unprocessable_entity }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# DELETE /reservations/1 or /reservations/1.json
|
||||
def destroy
|
||||
@reservation.destroy!
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to reservations_url, notice: "Reservation was successfully destroyed." }
|
||||
format.json { head :no_content }
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
# Use callbacks to share common setup or constraints between actions.
|
||||
def set_reservation
|
||||
@reservation = Reservation.find(params[:id])
|
||||
end
|
||||
|
||||
# Only allow a list of trusted parameters through.
|
||||
def reservation_params
|
||||
params.require(:reservation).permit(:company_id, :customer_id, :place_id, :title, :description, :start_time, :end_time)
|
||||
end
|
||||
end
|
||||
2
app/helpers/customers_helper.rb
Normal file
2
app/helpers/customers_helper.rb
Normal file
@@ -0,0 +1,2 @@
|
||||
module CustomersHelper
|
||||
end
|
||||
2
app/helpers/places_helper.rb
Normal file
2
app/helpers/places_helper.rb
Normal file
@@ -0,0 +1,2 @@
|
||||
module PlacesHelper
|
||||
end
|
||||
2
app/helpers/reservations_helper.rb
Normal file
2
app/helpers/reservations_helper.rb
Normal file
@@ -0,0 +1,2 @@
|
||||
module ReservationsHelper
|
||||
end
|
||||
@@ -1,2 +1,5 @@
|
||||
class Company < ApplicationRecord
|
||||
has_many :customers, dependent: :destroy
|
||||
has_many :reservations, dependent: :destroy
|
||||
has_many :places, dependent: :destroy
|
||||
end
|
||||
|
||||
7
app/models/customer.rb
Normal file
7
app/models/customer.rb
Normal file
@@ -0,0 +1,7 @@
|
||||
class Customer < ApplicationRecord
|
||||
belongs_to :company
|
||||
|
||||
validates :name, presence: true, uniqueness: { scope: :company_id }
|
||||
validates :phone, presence: true
|
||||
validates :company_id, presence: true
|
||||
end
|
||||
3
app/models/place.rb
Normal file
3
app/models/place.rb
Normal file
@@ -0,0 +1,3 @@
|
||||
class Place < ApplicationRecord
|
||||
belongs_to :company
|
||||
end
|
||||
9
app/models/reservation.rb
Normal file
9
app/models/reservation.rb
Normal file
@@ -0,0 +1,9 @@
|
||||
class Reservation < ApplicationRecord
|
||||
belongs_to :company
|
||||
belongs_to :customer
|
||||
belongs_to :place
|
||||
|
||||
validates :company_id, presence: true
|
||||
validates :customer_id, presence: true
|
||||
validates :place_id, presence: true
|
||||
end
|
||||
27
app/views/customers/_customer.html.erb
Normal file
27
app/views/customers/_customer.html.erb
Normal file
@@ -0,0 +1,27 @@
|
||||
<div id="<%= dom_id customer %>">
|
||||
<p class="my-5">
|
||||
<strong class="block font-medium mb-1">Name:</strong>
|
||||
<%= customer.name %>
|
||||
</p>
|
||||
|
||||
<p class="my-5">
|
||||
<strong class="block font-medium mb-1">Phone:</strong>
|
||||
<%= customer.phone %>
|
||||
</p>
|
||||
|
||||
<p class="my-5">
|
||||
<strong class="block font-medium mb-1">Notes:</strong>
|
||||
<%= customer.notes %>
|
||||
</p>
|
||||
|
||||
<p class="my-5">
|
||||
<strong class="block font-medium mb-1">Email:</strong>
|
||||
<%= customer.email %>
|
||||
</p>
|
||||
|
||||
<p class="my-5">
|
||||
<strong class="block font-medium mb-1">Birthyear:</strong>
|
||||
<%= customer.birthyear %>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
2
app/views/customers/_customer.json.jbuilder
Normal file
2
app/views/customers/_customer.json.jbuilder
Normal file
@@ -0,0 +1,2 @@
|
||||
json.extract! customer, :id, :name, :phone, :notes, :email, :birthyear, :created_at, :updated_at
|
||||
json.url customer_url(customer, format: :json)
|
||||
42
app/views/customers/_form.html.erb
Normal file
42
app/views/customers/_form.html.erb
Normal file
@@ -0,0 +1,42 @@
|
||||
<%= form_with(model: customer, class: "contents") do |form| %>
|
||||
<% if customer.errors.any? %>
|
||||
<div id="error_explanation" class="bg-red-50 text-red-500 px-3 py-2 font-medium rounded-lg mt-3">
|
||||
<h2><%= pluralize(customer.errors.count, "error") %> prohibited this customer from being saved:</h2>
|
||||
|
||||
<ul>
|
||||
<% customer.errors.each do |error| %>
|
||||
<li><%= error.full_message %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<div class="my-5">
|
||||
<%= form.label :name %>
|
||||
<%= form.text_field :name, class: "block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full" %>
|
||||
</div>
|
||||
|
||||
<div class="my-5">
|
||||
<%= form.label :phone %>
|
||||
<%= form.text_field :phone, class: "block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full" %>
|
||||
</div>
|
||||
|
||||
<div class="my-5">
|
||||
<%= form.label :notes %>
|
||||
<%= form.text_area :notes, rows: 4, class: "block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full" %>
|
||||
</div>
|
||||
|
||||
<div class="my-5">
|
||||
<%= form.label :email %>
|
||||
<%= form.text_field :email, class: "block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full" %>
|
||||
</div>
|
||||
|
||||
<div class="my-5">
|
||||
<%= form.label :birthyear %>
|
||||
<%= form.number_field :birthyear, class: "block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full" %>
|
||||
</div>
|
||||
|
||||
<div class="inline">
|
||||
<%= form.submit class: "rounded-lg py-3 px-5 bg-blue-600 text-white inline-block font-medium cursor-pointer" %>
|
||||
</div>
|
||||
<% end %>
|
||||
8
app/views/customers/edit.html.erb
Normal file
8
app/views/customers/edit.html.erb
Normal file
@@ -0,0 +1,8 @@
|
||||
<div class="mx-auto md:w-2/3 w-full">
|
||||
<h1 class="font-bold text-4xl">Editing customer</h1>
|
||||
|
||||
<%= render "form", customer: @customer %>
|
||||
|
||||
<%= link_to "Show this customer", @customer, class: "ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
|
||||
<%= link_to "Back to customers", customers_path, class: "ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
|
||||
</div>
|
||||
21
app/views/customers/index.html.erb
Normal file
21
app/views/customers/index.html.erb
Normal file
@@ -0,0 +1,21 @@
|
||||
<div class="w-full">
|
||||
<% if notice.present? %>
|
||||
<p class="py-2 px-3 bg-green-50 mb-5 text-green-500 font-medium rounded-lg inline-block" id="notice"><%= notice %></p>
|
||||
<% end %>
|
||||
|
||||
<% content_for :title, "Customers" %>
|
||||
|
||||
<div class="flex justify-between items-center">
|
||||
<h1 class="font-bold text-4xl">Customers</h1>
|
||||
<%= link_to "New customer", new_customer_path, class: "rounded-lg py-3 px-5 bg-blue-600 text-white block font-medium" %>
|
||||
</div>
|
||||
|
||||
<div id="customers" class="min-w-full">
|
||||
<% @customers.each do |customer| %>
|
||||
<%= render customer %>
|
||||
<p>
|
||||
<%= link_to "Show this customer", customer, class: "ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
|
||||
</p>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
1
app/views/customers/index.json.jbuilder
Normal file
1
app/views/customers/index.json.jbuilder
Normal file
@@ -0,0 +1 @@
|
||||
json.array! @customers, partial: "customers/customer", as: :customer
|
||||
7
app/views/customers/new.html.erb
Normal file
7
app/views/customers/new.html.erb
Normal file
@@ -0,0 +1,7 @@
|
||||
<div class="mx-auto md:w-2/3 w-full">
|
||||
<h1 class="font-bold text-4xl">New customer</h1>
|
||||
|
||||
<%= render "form", customer: @customer %>
|
||||
|
||||
<%= link_to "Back to customers", customers_path, class: "ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
|
||||
</div>
|
||||
15
app/views/customers/show.html.erb
Normal file
15
app/views/customers/show.html.erb
Normal file
@@ -0,0 +1,15 @@
|
||||
<div class="mx-auto md:w-2/3 w-full flex">
|
||||
<div class="mx-auto">
|
||||
<% if notice.present? %>
|
||||
<p class="py-2 px-3 bg-green-50 mb-5 text-green-500 font-medium rounded-lg inline-block" id="notice"><%= notice %></p>
|
||||
<% end %>
|
||||
|
||||
<%= render @customer %>
|
||||
|
||||
<%= link_to "Edit this customer", edit_customer_path(@customer), class: "mt-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
|
||||
<%= link_to "Back to customers", customers_path, class: "ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
|
||||
<div class="inline-block ml-2">
|
||||
<%= button_to "Destroy this customer", @customer, method: :delete, class: "mt-2 rounded-lg py-3 px-5 bg-gray-100 font-medium" %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
1
app/views/customers/show.json.jbuilder
Normal file
1
app/views/customers/show.json.jbuilder
Normal file
@@ -0,0 +1 @@
|
||||
json.partial! "customers/customer", customer: @customer
|
||||
22
app/views/places/_form.html.erb
Normal file
22
app/views/places/_form.html.erb
Normal file
@@ -0,0 +1,22 @@
|
||||
<%= form_with(model: place, class: "contents") do |form| %>
|
||||
<% if place.errors.any? %>
|
||||
<div id="error_explanation" class="bg-red-50 text-red-500 px-3 py-2 font-medium rounded-lg mt-3">
|
||||
<h2><%= pluralize(place.errors.count, "error") %> prohibited this place from being saved:</h2>
|
||||
|
||||
<ul>
|
||||
<% place.errors.each do |error| %>
|
||||
<li><%= error.full_message %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<div class="my-5">
|
||||
<%= form.label :name %>
|
||||
<%= form.text_field :name, class: "block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full" %>
|
||||
</div>
|
||||
|
||||
<div class="inline">
|
||||
<%= form.submit class: "rounded-lg py-3 px-5 bg-blue-600 text-white inline-block font-medium cursor-pointer" %>
|
||||
</div>
|
||||
<% end %>
|
||||
12
app/views/places/_place.html.erb
Normal file
12
app/views/places/_place.html.erb
Normal file
@@ -0,0 +1,12 @@
|
||||
<div id="<%= dom_id place %>">
|
||||
<p class="my-5">
|
||||
<strong class="block font-medium mb-1">Name:</strong>
|
||||
<%= place.name %>
|
||||
</p>
|
||||
|
||||
<p class="my-5">
|
||||
<strong class="block font-medium mb-1">Company:</strong>
|
||||
<%= place.company_id %>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
2
app/views/places/_place.json.jbuilder
Normal file
2
app/views/places/_place.json.jbuilder
Normal file
@@ -0,0 +1,2 @@
|
||||
json.extract! place, :id, :name, :company_id, :created_at, :updated_at
|
||||
json.url place_url(place, format: :json)
|
||||
8
app/views/places/edit.html.erb
Normal file
8
app/views/places/edit.html.erb
Normal file
@@ -0,0 +1,8 @@
|
||||
<div class="mx-auto md:w-2/3 w-full">
|
||||
<h1 class="font-bold text-4xl">Editing place</h1>
|
||||
|
||||
<%= render "form", place: @place %>
|
||||
|
||||
<%= link_to "Show this place", @place, class: "ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
|
||||
<%= link_to "Back to places", places_path, class: "ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
|
||||
</div>
|
||||
21
app/views/places/index.html.erb
Normal file
21
app/views/places/index.html.erb
Normal file
@@ -0,0 +1,21 @@
|
||||
<div class="w-full">
|
||||
<% if notice.present? %>
|
||||
<p class="py-2 px-3 bg-green-50 mb-5 text-green-500 font-medium rounded-lg inline-block" id="notice"><%= notice %></p>
|
||||
<% end %>
|
||||
|
||||
<% content_for :title, "Places" %>
|
||||
|
||||
<div class="flex justify-between items-center">
|
||||
<h1 class="font-bold text-4xl">Places</h1>
|
||||
<%= link_to "New place", new_place_path, class: "rounded-lg py-3 px-5 bg-blue-600 text-white block font-medium" %>
|
||||
</div>
|
||||
|
||||
<div id="places" class="min-w-full">
|
||||
<% @places.each do |place| %>
|
||||
<%= render place %>
|
||||
<p>
|
||||
<%= link_to "Show this place", place, class: "ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
|
||||
</p>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
1
app/views/places/index.json.jbuilder
Normal file
1
app/views/places/index.json.jbuilder
Normal file
@@ -0,0 +1 @@
|
||||
json.array! @places, partial: "places/place", as: :place
|
||||
7
app/views/places/new.html.erb
Normal file
7
app/views/places/new.html.erb
Normal file
@@ -0,0 +1,7 @@
|
||||
<div class="mx-auto md:w-2/3 w-full">
|
||||
<h1 class="font-bold text-4xl">New place</h1>
|
||||
|
||||
<%= render "form", place: @place %>
|
||||
|
||||
<%= link_to "Back to places", places_path, class: "ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
|
||||
</div>
|
||||
15
app/views/places/show.html.erb
Normal file
15
app/views/places/show.html.erb
Normal file
@@ -0,0 +1,15 @@
|
||||
<div class="mx-auto md:w-2/3 w-full flex">
|
||||
<div class="mx-auto">
|
||||
<% if notice.present? %>
|
||||
<p class="py-2 px-3 bg-green-50 mb-5 text-green-500 font-medium rounded-lg inline-block" id="notice"><%= notice %></p>
|
||||
<% end %>
|
||||
|
||||
<%= render @place %>
|
||||
|
||||
<%= link_to "Edit this place", edit_place_path(@place), class: "mt-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
|
||||
<%= link_to "Back to places", places_path, class: "ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
|
||||
<div class="inline-block ml-2">
|
||||
<%= button_to "Destroy this place", @place, method: :delete, class: "mt-2 rounded-lg py-3 px-5 bg-gray-100 font-medium" %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
1
app/views/places/show.json.jbuilder
Normal file
1
app/views/places/show.json.jbuilder
Normal file
@@ -0,0 +1 @@
|
||||
json.partial! "places/place", place: @place
|
||||
47
app/views/reservations/_form.html.erb
Normal file
47
app/views/reservations/_form.html.erb
Normal file
@@ -0,0 +1,47 @@
|
||||
<%= form_with(model: reservation, class: "contents") do |form| %>
|
||||
<% if reservation.errors.any? %>
|
||||
<div id="error_explanation" class="bg-red-50 text-red-500 px-3 py-2 font-medium rounded-lg mt-3">
|
||||
<h2><%= pluralize(reservation.errors.count, "error") %> prohibited this reservation from being saved:</h2>
|
||||
|
||||
<ul>
|
||||
<% reservation.errors.each do |error| %>
|
||||
<li><%= error.full_message %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<div class="my-5">
|
||||
<%= form.label :customer_id %>
|
||||
<%= form.collection_select :customer_id, class: "block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full" %>
|
||||
</div>
|
||||
|
||||
<div class="my-5">
|
||||
<%= form.label :place_id %>
|
||||
<%= form.collection_select :place_id, @company.places, :id, :name, prompt: "Select a Place", class:"block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full" %>
|
||||
</div>
|
||||
|
||||
<div class="my-5">
|
||||
<%= form.label :title %>
|
||||
<%= form.text_field :title, class: "block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full" %>
|
||||
</div>
|
||||
|
||||
<div class="my-5">
|
||||
<%= form.label :description %>
|
||||
<%= form.text_area :description, rows: 4, class: "block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full" %>
|
||||
</div>
|
||||
|
||||
<div class="my-5">
|
||||
<%= form.label :start_time %>`
|
||||
<%= form.datetime_field :start_time, class: "block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full" %>
|
||||
</div>
|
||||
|
||||
<div class="my-5">
|
||||
<%= form.label :end_time %>
|
||||
<%= form.datetime_field :end_time, class: "block shadow rounded-md border border-gray-400 outline-none px-3 py-2 mt-2 w-full" %>
|
||||
</div>
|
||||
|
||||
<div class="inline">
|
||||
<%= form.submit class: "rounded-lg py-3 px-5 bg-blue-600 text-white inline-block font-medium cursor-pointer" %>
|
||||
</div>
|
||||
<% end %>
|
||||
37
app/views/reservations/_reservation.html.erb
Normal file
37
app/views/reservations/_reservation.html.erb
Normal file
@@ -0,0 +1,37 @@
|
||||
<div id="<%= dom_id reservation %>">
|
||||
<p class="my-5">
|
||||
<strong class="block font-medium mb-1">Company:</strong>
|
||||
<%= reservation.company_id %>
|
||||
</p>
|
||||
|
||||
<p class="my-5">
|
||||
<strong class="block font-medium mb-1">Customer:</strong>
|
||||
<%= reservation.customer_id %>
|
||||
</p>
|
||||
|
||||
<p class="my-5">
|
||||
<strong class="block font-medium mb-1">Place:</strong>
|
||||
<%= reservation.place_id %>
|
||||
</p>
|
||||
|
||||
<p class="my-5">
|
||||
<strong class="block font-medium mb-1">Title:</strong>
|
||||
<%= reservation.title %>
|
||||
</p>
|
||||
|
||||
<p class="my-5">
|
||||
<strong class="block font-medium mb-1">Description:</strong>
|
||||
<%= reservation.description %>
|
||||
</p>
|
||||
|
||||
<p class="my-5">
|
||||
<strong class="block font-medium mb-1">Start time:</strong>
|
||||
<%= reservation.start_time %>
|
||||
</p>
|
||||
|
||||
<p class="my-5">
|
||||
<strong class="block font-medium mb-1">End time:</strong>
|
||||
<%= reservation.end_time %>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
2
app/views/reservations/_reservation.json.jbuilder
Normal file
2
app/views/reservations/_reservation.json.jbuilder
Normal file
@@ -0,0 +1,2 @@
|
||||
json.extract! reservation, :id, :company_id, :customer_id, :place_id, :title, :description, :start_time, :end_time, :created_at, :updated_at
|
||||
json.url reservation_url(reservation, format: :json)
|
||||
8
app/views/reservations/edit.html.erb
Normal file
8
app/views/reservations/edit.html.erb
Normal file
@@ -0,0 +1,8 @@
|
||||
<div class="mx-auto md:w-2/3 w-full">
|
||||
<h1 class="font-bold text-4xl">Editing reservation</h1>
|
||||
|
||||
<%= render "form", reservation: @reservation %>
|
||||
|
||||
<%= link_to "Show this reservation", @reservation, class: "ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
|
||||
<%= link_to "Back to reservations", reservations_path, class: "ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
|
||||
</div>
|
||||
21
app/views/reservations/index.html.erb
Normal file
21
app/views/reservations/index.html.erb
Normal file
@@ -0,0 +1,21 @@
|
||||
<div class="w-full">
|
||||
<% if notice.present? %>
|
||||
<p class="py-2 px-3 bg-green-50 mb-5 text-green-500 font-medium rounded-lg inline-block" id="notice"><%= notice %></p>
|
||||
<% end %>
|
||||
|
||||
<% content_for :title, "Reservations" %>
|
||||
|
||||
<div class="flex justify-between items-center">
|
||||
<h1 class="font-bold text-4xl">Reservations</h1>
|
||||
<%= link_to "New reservation", new_reservation_path, class: "rounded-lg py-3 px-5 bg-blue-600 text-white block font-medium" %>
|
||||
</div>
|
||||
|
||||
<div id="reservations" class="min-w-full">
|
||||
<% @reservations.each do |reservation| %>
|
||||
<%= render reservation %>
|
||||
<p>
|
||||
<%= link_to "Show this reservation", reservation, class: "ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
|
||||
</p>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
1
app/views/reservations/index.json.jbuilder
Normal file
1
app/views/reservations/index.json.jbuilder
Normal file
@@ -0,0 +1 @@
|
||||
json.array! @reservations, partial: "reservations/reservation", as: :reservation
|
||||
7
app/views/reservations/new.html.erb
Normal file
7
app/views/reservations/new.html.erb
Normal file
@@ -0,0 +1,7 @@
|
||||
<div class="mx-auto md:w-2/3 w-full">
|
||||
<h1 class="font-bold text-4xl">New reservation</h1>
|
||||
|
||||
<%= render "form", reservation: @reservation %>
|
||||
|
||||
<%= link_to "Back to reservations", reservations_path, class: "ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
|
||||
</div>
|
||||
15
app/views/reservations/show.html.erb
Normal file
15
app/views/reservations/show.html.erb
Normal file
@@ -0,0 +1,15 @@
|
||||
<div class="mx-auto md:w-2/3 w-full flex">
|
||||
<div class="mx-auto">
|
||||
<% if notice.present? %>
|
||||
<p class="py-2 px-3 bg-green-50 mb-5 text-green-500 font-medium rounded-lg inline-block" id="notice"><%= notice %></p>
|
||||
<% end %>
|
||||
|
||||
<%= render @reservation %>
|
||||
|
||||
<%= link_to "Edit this reservation", edit_reservation_path(@reservation), class: "mt-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
|
||||
<%= link_to "Back to reservations", reservations_path, class: "ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %>
|
||||
<div class="inline-block ml-2">
|
||||
<%= button_to "Destroy this reservation", @reservation, method: :delete, class: "mt-2 rounded-lg py-3 px-5 bg-gray-100 font-medium" %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
1
app/views/reservations/show.json.jbuilder
Normal file
1
app/views/reservations/show.json.jbuilder
Normal file
@@ -0,0 +1 @@
|
||||
json.partial! "reservations/reservation", reservation: @reservation
|
||||
@@ -1,4 +1,7 @@
|
||||
Rails.application.routes.draw do
|
||||
resources :reservations
|
||||
resources :places
|
||||
resources :customers
|
||||
resources :companies
|
||||
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
|
||||
|
||||
|
||||
13
db/migrate/20240804052139_create_customers.rb
Normal file
13
db/migrate/20240804052139_create_customers.rb
Normal file
@@ -0,0 +1,13 @@
|
||||
class CreateCustomers < ActiveRecord::Migration[7.1]
|
||||
def change
|
||||
create_table :customers do |t|
|
||||
t.string :name
|
||||
t.string :phone
|
||||
t.text :notes
|
||||
t.string :email
|
||||
t.integer :birthyear
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
||||
5
db/migrate/20240804053208_add_company_id_to_customers.rb
Normal file
5
db/migrate/20240804053208_add_company_id_to_customers.rb
Normal file
@@ -0,0 +1,5 @@
|
||||
class AddCompanyIdToCustomers < ActiveRecord::Migration[7.1]
|
||||
def change
|
||||
add_column :customers, :company_id, :integer
|
||||
end
|
||||
end
|
||||
10
db/migrate/20240804060103_create_places.rb
Normal file
10
db/migrate/20240804060103_create_places.rb
Normal file
@@ -0,0 +1,10 @@
|
||||
class CreatePlaces < ActiveRecord::Migration[7.1]
|
||||
def change
|
||||
create_table :places do |t|
|
||||
t.string :name
|
||||
t.references :company, null: false, foreign_key: true
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
||||
15
db/migrate/20240804060112_create_reservations.rb
Normal file
15
db/migrate/20240804060112_create_reservations.rb
Normal file
@@ -0,0 +1,15 @@
|
||||
class CreateReservations < ActiveRecord::Migration[7.1]
|
||||
def change
|
||||
create_table :reservations do |t|
|
||||
t.references :company, null: false, foreign_key: true
|
||||
t.references :customer, null: false, foreign_key: true
|
||||
t.references :place, null: false, foreign_key: true
|
||||
t.string :title
|
||||
t.text :description
|
||||
t.datetime :start_time
|
||||
t.datetime :end_time
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
||||
40
db/schema.rb
generated
40
db/schema.rb
generated
@@ -10,7 +10,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema[7.1].define(version: 2024_05_18_200749) do
|
||||
ActiveRecord::Schema[7.1].define(version: 2024_08_04_060112) do
|
||||
create_table "companies", force: :cascade do |t|
|
||||
t.string "name"
|
||||
t.string "id_number"
|
||||
@@ -25,4 +25,42 @@ ActiveRecord::Schema[7.1].define(version: 2024_05_18_200749) do
|
||||
t.datetime "updated_at", null: false
|
||||
end
|
||||
|
||||
create_table "customers", force: :cascade do |t|
|
||||
t.string "name"
|
||||
t.string "phone"
|
||||
t.text "notes"
|
||||
t.string "email"
|
||||
t.integer "birthyear"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.integer "company_id"
|
||||
end
|
||||
|
||||
create_table "places", force: :cascade do |t|
|
||||
t.string "name"
|
||||
t.integer "company_id", null: false
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.index ["company_id"], name: "index_places_on_company_id"
|
||||
end
|
||||
|
||||
create_table "reservations", force: :cascade do |t|
|
||||
t.integer "company_id", null: false
|
||||
t.integer "customer_id", null: false
|
||||
t.integer "place_id", null: false
|
||||
t.string "title"
|
||||
t.text "description"
|
||||
t.datetime "start_time"
|
||||
t.datetime "end_time"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.index ["company_id"], name: "index_reservations_on_company_id"
|
||||
t.index ["customer_id"], name: "index_reservations_on_customer_id"
|
||||
t.index ["place_id"], name: "index_reservations_on_place_id"
|
||||
end
|
||||
|
||||
add_foreign_key "places", "companies"
|
||||
add_foreign_key "reservations", "companies"
|
||||
add_foreign_key "reservations", "customers"
|
||||
add_foreign_key "reservations", "places"
|
||||
end
|
||||
|
||||
48
test/controllers/customers_controller_test.rb
Normal file
48
test/controllers/customers_controller_test.rb
Normal file
@@ -0,0 +1,48 @@
|
||||
require "test_helper"
|
||||
|
||||
class CustomersControllerTest < ActionDispatch::IntegrationTest
|
||||
setup do
|
||||
@customer = customers(:one)
|
||||
end
|
||||
|
||||
test "should get index" do
|
||||
get customers_url
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should get new" do
|
||||
get new_customer_url
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should create customer" do
|
||||
assert_difference("Customer.count") do
|
||||
post customers_url, params: { customer: { birthyear: @customer.birthyear, email: @customer.email, name: @customer.name, notes: @customer.notes, phone: @customer.phone } }
|
||||
end
|
||||
|
||||
assert_redirected_to customer_url(Customer.last)
|
||||
end
|
||||
|
||||
test "should show customer" do
|
||||
get customer_url(@customer)
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should get edit" do
|
||||
get edit_customer_url(@customer)
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should update customer" do
|
||||
patch customer_url(@customer), params: { customer: { birthyear: @customer.birthyear, email: @customer.email, name: @customer.name, notes: @customer.notes, phone: @customer.phone } }
|
||||
assert_redirected_to customer_url(@customer)
|
||||
end
|
||||
|
||||
test "should destroy customer" do
|
||||
assert_difference("Customer.count", -1) do
|
||||
delete customer_url(@customer)
|
||||
end
|
||||
|
||||
assert_redirected_to customers_url
|
||||
end
|
||||
end
|
||||
48
test/controllers/places_controller_test.rb
Normal file
48
test/controllers/places_controller_test.rb
Normal file
@@ -0,0 +1,48 @@
|
||||
require "test_helper"
|
||||
|
||||
class PlacesControllerTest < ActionDispatch::IntegrationTest
|
||||
setup do
|
||||
@place = places(:one)
|
||||
end
|
||||
|
||||
test "should get index" do
|
||||
get places_url
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should get new" do
|
||||
get new_place_url
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should create place" do
|
||||
assert_difference("Place.count") do
|
||||
post places_url, params: { place: { company_id: @place.company_id, name: @place.name } }
|
||||
end
|
||||
|
||||
assert_redirected_to place_url(Place.last)
|
||||
end
|
||||
|
||||
test "should show place" do
|
||||
get place_url(@place)
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should get edit" do
|
||||
get edit_place_url(@place)
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should update place" do
|
||||
patch place_url(@place), params: { place: { company_id: @place.company_id, name: @place.name } }
|
||||
assert_redirected_to place_url(@place)
|
||||
end
|
||||
|
||||
test "should destroy place" do
|
||||
assert_difference("Place.count", -1) do
|
||||
delete place_url(@place)
|
||||
end
|
||||
|
||||
assert_redirected_to places_url
|
||||
end
|
||||
end
|
||||
48
test/controllers/reservations_controller_test.rb
Normal file
48
test/controllers/reservations_controller_test.rb
Normal file
@@ -0,0 +1,48 @@
|
||||
require "test_helper"
|
||||
|
||||
class ReservationsControllerTest < ActionDispatch::IntegrationTest
|
||||
setup do
|
||||
@reservation = reservations(:one)
|
||||
end
|
||||
|
||||
test "should get index" do
|
||||
get reservations_url
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should get new" do
|
||||
get new_reservation_url
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should create reservation" do
|
||||
assert_difference("Reservation.count") do
|
||||
post reservations_url, params: { reservation: { company_id: @reservation.company_id, customer_id: @reservation.customer_id, description: @reservation.description, end_time: @reservation.end_time, place_id: @reservation.place_id, start_time: @reservation.start_time, title: @reservation.title } }
|
||||
end
|
||||
|
||||
assert_redirected_to reservation_url(Reservation.last)
|
||||
end
|
||||
|
||||
test "should show reservation" do
|
||||
get reservation_url(@reservation)
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should get edit" do
|
||||
get edit_reservation_url(@reservation)
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
test "should update reservation" do
|
||||
patch reservation_url(@reservation), params: { reservation: { company_id: @reservation.company_id, customer_id: @reservation.customer_id, description: @reservation.description, end_time: @reservation.end_time, place_id: @reservation.place_id, start_time: @reservation.start_time, title: @reservation.title } }
|
||||
assert_redirected_to reservation_url(@reservation)
|
||||
end
|
||||
|
||||
test "should destroy reservation" do
|
||||
assert_difference("Reservation.count", -1) do
|
||||
delete reservation_url(@reservation)
|
||||
end
|
||||
|
||||
assert_redirected_to reservations_url
|
||||
end
|
||||
end
|
||||
15
test/fixtures/customers.yml
vendored
Normal file
15
test/fixtures/customers.yml
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
||||
|
||||
one:
|
||||
name: MyString
|
||||
phone: MyString
|
||||
notes: MyText
|
||||
email: MyString
|
||||
birthyear: 1
|
||||
|
||||
two:
|
||||
name: MyString
|
||||
phone: MyString
|
||||
notes: MyText
|
||||
email: MyString
|
||||
birthyear: 1
|
||||
9
test/fixtures/places.yml
vendored
Normal file
9
test/fixtures/places.yml
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
||||
|
||||
one:
|
||||
name: MyString
|
||||
company: one
|
||||
|
||||
two:
|
||||
name: MyString
|
||||
company: two
|
||||
19
test/fixtures/reservations.yml
vendored
Normal file
19
test/fixtures/reservations.yml
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
||||
|
||||
one:
|
||||
company: one
|
||||
customer: one
|
||||
place: one
|
||||
title: MyString
|
||||
description: MyText
|
||||
start_time: 2024-08-04 08:01:12
|
||||
end_time: 2024-08-04 08:01:12
|
||||
|
||||
two:
|
||||
company: two
|
||||
customer: two
|
||||
place: two
|
||||
title: MyString
|
||||
description: MyText
|
||||
start_time: 2024-08-04 08:01:12
|
||||
end_time: 2024-08-04 08:01:12
|
||||
7
test/models/customer_test.rb
Normal file
7
test/models/customer_test.rb
Normal file
@@ -0,0 +1,7 @@
|
||||
require "test_helper"
|
||||
|
||||
class CustomerTest < ActiveSupport::TestCase
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
end
|
||||
7
test/models/place_test.rb
Normal file
7
test/models/place_test.rb
Normal file
@@ -0,0 +1,7 @@
|
||||
require "test_helper"
|
||||
|
||||
class PlaceTest < ActiveSupport::TestCase
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
end
|
||||
7
test/models/reservation_test.rb
Normal file
7
test/models/reservation_test.rb
Normal file
@@ -0,0 +1,7 @@
|
||||
require "test_helper"
|
||||
|
||||
class ReservationTest < ActiveSupport::TestCase
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
end
|
||||
49
test/system/customers_test.rb
Normal file
49
test/system/customers_test.rb
Normal file
@@ -0,0 +1,49 @@
|
||||
require "application_system_test_case"
|
||||
|
||||
class CustomersTest < ApplicationSystemTestCase
|
||||
setup do
|
||||
@customer = customers(:one)
|
||||
end
|
||||
|
||||
test "visiting the index" do
|
||||
visit customers_url
|
||||
assert_selector "h1", text: "Customers"
|
||||
end
|
||||
|
||||
test "should create customer" do
|
||||
visit customers_url
|
||||
click_on "New customer"
|
||||
|
||||
fill_in "Birthyear", with: @customer.birthyear
|
||||
fill_in "Email", with: @customer.email
|
||||
fill_in "Name", with: @customer.name
|
||||
fill_in "Notes", with: @customer.notes
|
||||
fill_in "Phone", with: @customer.phone
|
||||
click_on "Create Customer"
|
||||
|
||||
assert_text "Customer was successfully created"
|
||||
click_on "Back"
|
||||
end
|
||||
|
||||
test "should update Customer" do
|
||||
visit customer_url(@customer)
|
||||
click_on "Edit this customer", match: :first
|
||||
|
||||
fill_in "Birthyear", with: @customer.birthyear
|
||||
fill_in "Email", with: @customer.email
|
||||
fill_in "Name", with: @customer.name
|
||||
fill_in "Notes", with: @customer.notes
|
||||
fill_in "Phone", with: @customer.phone
|
||||
click_on "Update Customer"
|
||||
|
||||
assert_text "Customer was successfully updated"
|
||||
click_on "Back"
|
||||
end
|
||||
|
||||
test "should destroy Customer" do
|
||||
visit customer_url(@customer)
|
||||
click_on "Destroy this customer", match: :first
|
||||
|
||||
assert_text "Customer was successfully destroyed"
|
||||
end
|
||||
end
|
||||
43
test/system/places_test.rb
Normal file
43
test/system/places_test.rb
Normal file
@@ -0,0 +1,43 @@
|
||||
require "application_system_test_case"
|
||||
|
||||
class PlacesTest < ApplicationSystemTestCase
|
||||
setup do
|
||||
@place = places(:one)
|
||||
end
|
||||
|
||||
test "visiting the index" do
|
||||
visit places_url
|
||||
assert_selector "h1", text: "Places"
|
||||
end
|
||||
|
||||
test "should create place" do
|
||||
visit places_url
|
||||
click_on "New place"
|
||||
|
||||
fill_in "Company", with: @place.company_id
|
||||
fill_in "Name", with: @place.name
|
||||
click_on "Create Place"
|
||||
|
||||
assert_text "Place was successfully created"
|
||||
click_on "Back"
|
||||
end
|
||||
|
||||
test "should update Place" do
|
||||
visit place_url(@place)
|
||||
click_on "Edit this place", match: :first
|
||||
|
||||
fill_in "Company", with: @place.company_id
|
||||
fill_in "Name", with: @place.name
|
||||
click_on "Update Place"
|
||||
|
||||
assert_text "Place was successfully updated"
|
||||
click_on "Back"
|
||||
end
|
||||
|
||||
test "should destroy Place" do
|
||||
visit place_url(@place)
|
||||
click_on "Destroy this place", match: :first
|
||||
|
||||
assert_text "Place was successfully destroyed"
|
||||
end
|
||||
end
|
||||
53
test/system/reservations_test.rb
Normal file
53
test/system/reservations_test.rb
Normal file
@@ -0,0 +1,53 @@
|
||||
require "application_system_test_case"
|
||||
|
||||
class ReservationsTest < ApplicationSystemTestCase
|
||||
setup do
|
||||
@reservation = reservations(:one)
|
||||
end
|
||||
|
||||
test "visiting the index" do
|
||||
visit reservations_url
|
||||
assert_selector "h1", text: "Reservations"
|
||||
end
|
||||
|
||||
test "should create reservation" do
|
||||
visit reservations_url
|
||||
click_on "New reservation"
|
||||
|
||||
fill_in "Company", with: @reservation.company_id
|
||||
fill_in "Customer", with: @reservation.customer_id
|
||||
fill_in "Description", with: @reservation.description
|
||||
fill_in "End time", with: @reservation.end_time
|
||||
fill_in "Place", with: @reservation.place_id
|
||||
fill_in "Start time", with: @reservation.start_time
|
||||
fill_in "Title", with: @reservation.title
|
||||
click_on "Create Reservation"
|
||||
|
||||
assert_text "Reservation was successfully created"
|
||||
click_on "Back"
|
||||
end
|
||||
|
||||
test "should update Reservation" do
|
||||
visit reservation_url(@reservation)
|
||||
click_on "Edit this reservation", match: :first
|
||||
|
||||
fill_in "Company", with: @reservation.company_id
|
||||
fill_in "Customer", with: @reservation.customer_id
|
||||
fill_in "Description", with: @reservation.description
|
||||
fill_in "End time", with: @reservation.end_time
|
||||
fill_in "Place", with: @reservation.place_id
|
||||
fill_in "Start time", with: @reservation.start_time
|
||||
fill_in "Title", with: @reservation.title
|
||||
click_on "Update Reservation"
|
||||
|
||||
assert_text "Reservation was successfully updated"
|
||||
click_on "Back"
|
||||
end
|
||||
|
||||
test "should destroy Reservation" do
|
||||
visit reservation_url(@reservation)
|
||||
click_on "Destroy this reservation", match: :first
|
||||
|
||||
assert_text "Reservation was successfully destroyed"
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user