Skip to content

Commit

Permalink
Scaffold Message model
Browse files Browse the repository at this point in the history
  • Loading branch information
ZaikoXander committed Oct 30, 2024
1 parent 37adcb7 commit c707b11
Show file tree
Hide file tree
Showing 8 changed files with 138 additions and 1 deletion.
51 changes: 51 additions & 0 deletions app/controllers/messages_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
class MessagesController < ApplicationController
before_action :set_message, only: %i[ show update destroy ]

# GET /messages
def index
@messages = Message.all

render json: @messages
end

# GET /messages/1
def show
render json: @message
end

# POST /messages
def create
@message = Message.new(message_params)

if @message.save
render json: @message, status: :created, location: @message
else
render json: @message.errors, status: :unprocessable_entity
end
end

# PATCH/PUT /messages/1
def update
if @message.update(message_params)
render json: @message
else
render json: @message.errors, status: :unprocessable_entity
end
end

# DELETE /messages/1
def destroy
@message.destroy!
end

private
# Use callbacks to share common setup or constraints between actions.
def set_message
@message = Message.find(params[:id])
end

# Only allow a list of trusted parameters through.
def message_params
params.require(:message).permit(:name, :email, :subject, :content)
end
end
6 changes: 6 additions & 0 deletions app/models/message.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
class Message < ApplicationRecord
validates :name, presence: true
validates :email, presence: true, format: { with: URI::MailTo::EMAIL_REGEXP }
validates :subject, presence: true
validates :content, presence: true
end
1 change: 1 addition & 0 deletions config/routes.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
Rails.application.routes.draw do
resources :messages
resources :reservations
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html

Expand Down
12 changes: 12 additions & 0 deletions db/migrate/20241030001837_create_messages.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
class CreateMessages < ActiveRecord::Migration[7.2]
def change
create_table :messages do |t|
t.string :name
t.string :email
t.string :subject
t.text :content

t.timestamps
end
end
end
11 changes: 10 additions & 1 deletion db/schema.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

38 changes: 38 additions & 0 deletions test/controllers/messages_controller_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
require "test_helper"

class MessagesControllerTest < ActionDispatch::IntegrationTest
setup do
@message = messages(:one)
end

test "should get index" do
get messages_url, as: :json
assert_response :success
end

test "should create message" do
assert_difference("Message.count") do
post messages_url, params: { message: { content: @message.content, email: @message.email, name: @message.name, subject: @message.subject } }, as: :json
end

assert_response :created
end

test "should show message" do
get message_url(@message), as: :json
assert_response :success
end

test "should update message" do
patch message_url(@message), params: { message: { content: @message.content, email: @message.email, name: @message.name, subject: @message.subject } }, as: :json
assert_response :success
end

test "should destroy message" do
assert_difference("Message.count", -1) do
delete message_url(@message), as: :json
end

assert_response :no_content
end
end
13 changes: 13 additions & 0 deletions test/fixtures/messages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html

one:
name: MyString
email: MyString
subject: MyString
content: MyText

two:
name: MyString
email: MyString
subject: MyString
content: MyText
7 changes: 7 additions & 0 deletions test/models/message_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
require "test_helper"

class MessageTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end

0 comments on commit c707b11

Please sign in to comment.