Add words controller with index and show actions

This commit is contained in:
maddiebaka 2023-10-14 13:50:50 -04:00
parent ad08b283b0
commit 6202a6e778
11 changed files with 121 additions and 1 deletions

View File

@ -0,0 +1,10 @@
class WordsController < ApplicationController
def index
@words = Word.all
end
def show
@word = Word.find_by_id(params[:id])
end
end

View File

@ -0,0 +1,2 @@
module WordHelper
end

View File

@ -0,0 +1,12 @@
<table>
<tr>
<td><b>Part of Speech</b></td>
<td><b>Definition</b></td>
</tr>
<% word.definitions.each do |definition| %>
<tr>
<td><b><%= definition.pos %></b></td>
<td><%= definition.definition %></td>
</tr>
<% end %>
</table>

View File

@ -19,7 +19,8 @@
<h1>Words</h1> <h1>Words</h1>
<% @words.each do |word| %> <% @words.each do |word| %>
<h2><%= word.word %></h2> <h2><%= word.word %></h2>
<%= render "application/definitions", word: word %>
<!--
<table> <table>
<tr> <tr>
<td><b>Part of Speech</b></td> <td><b>Part of Speech</b></td>
@ -32,4 +33,5 @@
</tr> </tr>
<% end %> <% end %>
</table> </table>
-->
<% end %> <% end %>

View File

@ -0,0 +1,3 @@
<% @words.each do |word| %>
<p><%= link_to word.word, word %></p>
<% end %>

View File

@ -0,0 +1,3 @@
<h1><%= @word.word %></h1>
<%= render "application/definitions", word: @word %>

View File

@ -2,6 +2,7 @@ Rails.application.routes.draw do
devise_for :users devise_for :users
#get 'dictionary/index' #get 'dictionary/index'
resources :dictionary, only: [:index] resources :dictionary, only: [:index]
resources :words, only: [:index, :show]
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html # Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
# Reveal health status on /up that returns 200 if the app boots with no exceptions, otherwise 500. # Reveal health status on /up that returns 200 if the app boots with no exceptions, otherwise 500.

View File

@ -0,0 +1,22 @@
require 'rails_helper'
RSpec.describe WordsController, type: :controller do
describe "GET :index" do
it 'renders the index template' do
get :index
expect(response).to render_template(:index)
end
it 'sets @words instance variable' do
FactoryBot.create(:word)
get :index
expect(assigns(:words)).to be_a(ActiveRecord::Relation)
end
it 'fetches all words into @words' do
5.times { FactoryBot.create(:word) }
get :index
expect(assigns(:words).count).to eq(5)
end
end
end

View File

@ -0,0 +1,15 @@
require 'rails_helper'
# Specs in this file have access to a helper object that includes
# the WordHelper. For example:
#
# describe WordHelper 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 WordHelper, type: :helper do
#pending "add some examples to (or delete) #{__FILE__}"
end

View File

@ -0,0 +1,39 @@
require 'rails_helper'
RSpec.describe "Words", type: :request do
describe "GET /index" do
it "renders the index template" do
get "/words"
expect(response).to render_template(:index)
end
end
describe "GET /show/:val" do
before(:each) do
@word = FactoryBot.create(:word)
end
it "renders the show template" do
get "/words/#{@word.id}"
expect(response).to render_template(:show)
end
it "sets @word instance variable" do
get "/words/#{@word.id}"
expect(assigns(:word)).to be_a(Word)
end
it "displays the word name" do
get "/words/#{@word.id}"
expect(response.body).to include(@word.word)
end
it "displays the definitions" do
@definition = FactoryBot.create(:definition)
get "/words/#{@definition.word_id}"
expect(response.body).to include(@definition.definition)
end
end
end

View File

@ -0,0 +1,11 @@
require 'rails_helper'
RSpec.describe "Words", type: :request do
describe "GET /index" do
it "renders the index template" do
get "/words"
expect(response).to render_template(:index)
end
end
end