From e13b82ad1ff79268ff708788b728a4cf025c1473 Mon Sep 17 00:00:00 2001 From: Philipp Fischbeck Date: Sat, 13 Dec 2014 17:00:00 +0100 Subject: [PATCH] Rename Problem to Translation --- ...blems.js.coffee => translations.js.coffee} | 0 ...roblems.css.scss => translations.css.scss} | 2 +- app/controllers/problems_controller.rb | 74 ------------------- app/controllers/translations_controller.rb | 74 +++++++++++++++++++ app/helpers/problems_helper.rb | 2 - app/helpers/translations_helper.rb | 2 + app/models/{problem.rb => translation.rb} | 2 +- app/views/layouts/application.html.erb | 2 +- .../problems/_problem_pagination.html.erb | 1 - app/views/problems/edit.html.erb | 6 -- app/views/problems/index.html.erb | 24 ------ app/views/problems/index.json.jbuilder | 4 - app/views/problems/new.html.erb | 5 -- app/views/problems/show.html.erb | 17 ----- app/views/problems/show.json.jbuilder | 1 - .../{problems => translations}/_form.html.erb | 8 +- .../_translation_pagination.html.erb | 1 + app/views/translations/edit.html.erb | 6 ++ app/views/translations/index.html.erb | 24 ++++++ app/views/translations/index.json.jbuilder | 4 + app/views/translations/new.html.erb | 5 ++ app/views/translations/show.html.erb | 17 +++++ app/views/translations/show.json.jbuilder | 1 + config/routes.rb | 4 +- ...2_rename_problems_table_to_translations.rb | 5 ++ db/schema.rb | 4 +- db/seeds.rb | 2 +- test/controllers/problems_controller_test.rb | 53 ------------- .../translations_controller_test.rb | 53 +++++++++++++ .../{problems.yml => translations.yml} | 4 +- test/helpers/problems_helper_test.rb | 4 - test/helpers/translations_helper_test.rb | 4 + test/models/problem_test.rb | 34 --------- test/models/translation_test.rb | 34 +++++++++ 34 files changed, 244 insertions(+), 239 deletions(-) rename app/assets/javascripts/{problems.js.coffee => translations.js.coffee} (100%) rename app/assets/stylesheets/{problems.css.scss => translations.css.scss} (63%) delete mode 100644 app/controllers/problems_controller.rb create mode 100644 app/controllers/translations_controller.rb delete mode 100644 app/helpers/problems_helper.rb create mode 100644 app/helpers/translations_helper.rb rename app/models/{problem.rb => translation.rb} (82%) delete mode 100644 app/views/problems/_problem_pagination.html.erb delete mode 100644 app/views/problems/edit.html.erb delete mode 100644 app/views/problems/index.html.erb delete mode 100644 app/views/problems/index.json.jbuilder delete mode 100644 app/views/problems/new.html.erb delete mode 100644 app/views/problems/show.html.erb delete mode 100644 app/views/problems/show.json.jbuilder rename app/views/{problems => translations}/_form.html.erb (60%) create mode 100644 app/views/translations/_translation_pagination.html.erb create mode 100644 app/views/translations/edit.html.erb create mode 100644 app/views/translations/index.html.erb create mode 100644 app/views/translations/index.json.jbuilder create mode 100644 app/views/translations/new.html.erb create mode 100644 app/views/translations/show.html.erb create mode 100644 app/views/translations/show.json.jbuilder create mode 100644 db/migrate/20141213151812_rename_problems_table_to_translations.rb delete mode 100644 test/controllers/problems_controller_test.rb create mode 100644 test/controllers/translations_controller_test.rb rename test/fixtures/{problems.yml => translations.yml} (61%) delete mode 100644 test/helpers/problems_helper_test.rb create mode 100644 test/helpers/translations_helper_test.rb delete mode 100644 test/models/problem_test.rb create mode 100644 test/models/translation_test.rb diff --git a/app/assets/javascripts/problems.js.coffee b/app/assets/javascripts/translations.js.coffee similarity index 100% rename from app/assets/javascripts/problems.js.coffee rename to app/assets/javascripts/translations.js.coffee diff --git a/app/assets/stylesheets/problems.css.scss b/app/assets/stylesheets/translations.css.scss similarity index 63% rename from app/assets/stylesheets/problems.css.scss rename to app/assets/stylesheets/translations.css.scss index 7f0de10..5ede2fe 100644 --- a/app/assets/stylesheets/problems.css.scss +++ b/app/assets/stylesheets/translations.css.scss @@ -1,3 +1,3 @@ -// Place all the styles related to the Problems controller here. +// Place all the styles related to the Translations controller here. // They will automatically be included in application.css.scss. // You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/problems_controller.rb b/app/controllers/problems_controller.rb deleted file mode 100644 index e516ac4..0000000 --- a/app/controllers/problems_controller.rb +++ /dev/null @@ -1,74 +0,0 @@ -class ProblemsController < ApplicationController - before_action :set_problem, only: [:show, :edit, :update, :destroy] - - # GET /problems - # GET /problems.json - def index - @problems = Problem.paginate(page: params[:page]) - end - - # GET /problems/1 - # GET /problems/1.json - def show - end - - # GET /problems/new - def new - @problem = Problem.new - end - - # GET /problems/1/edit - def edit - end - - # POST /problems - # POST /problems.json - def create - @problem = Problem.new(problem_params) - - respond_to do |format| - if @problem.save - format.html { redirect_to @problem, notice: 'Problem was successfully created.' } - format.json { render :show, status: :created, location: @problem } - else - format.html { render :new } - format.json { render json: @problem.errors, status: :unprocessable_entity } - end - end - end - - # PATCH/PUT /problems/1 - # PATCH/PUT /problems/1.json - def update - respond_to do |format| - if @problem.update(problem_params) - format.html { redirect_to @problem, notice: 'Problem was successfully updated.' } - format.json { render :show, status: :ok, location: @problem } - else - format.html { render :edit } - format.json { render json: @problem.errors, status: :unprocessable_entity } - end - end - end - - # DELETE /problems/1 - # DELETE /problems/1.json - def destroy - @problem.destroy - respond_to do |format| - format.html { redirect_to problems_url, notice: 'Problem was successfully destroyed.' } - format.json { head :no_content } - end - end - - private - # Use callbacks to share common setup or constraints between actions. - def set_problem - @problem = Problem.find(params[:id]) - end - - # Never trust parameters from the scary internet, only allow the white list through. - def problem_params - params.require(:problem).permit(:title, :content) - end -end diff --git a/app/controllers/translations_controller.rb b/app/controllers/translations_controller.rb new file mode 100644 index 0000000..cf1a62a --- /dev/null +++ b/app/controllers/translations_controller.rb @@ -0,0 +1,74 @@ +class TranslationsController < ApplicationController + before_action :set_translation, only: [:show, :edit, :update, :destroy] + + # GET /translations + # GET /translations.json + def index + @translations = Translation.paginate(page: params[:page]) + end + + # GET /translations/1 + # GET /translations/1.json + def show + end + + # GET /translations/new + def new + @translation = Translation.new + end + + # GET /translations/1/edit + def edit + end + + # POST /translations + # POST /translations.json + def create + @translation = Translation.new(translation_params) + + respond_to do |format| + if @translation.save + format.html { redirect_to @translation, notice: 'Translation was successfully created.' } + format.json { render :show, status: :created, location: @translation } + else + format.html { render :new } + format.json { render json: @translation.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /translations/1 + # PATCH/PUT /translations/1.json + def update + respond_to do |format| + if @translation.update(translation_params) + format.html { redirect_to @translation, notice: 'Translation was successfully updated.' } + format.json { render :show, status: :ok, location: @translation } + else + format.html { render :edit } + format.json { render json: @translation.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /translations/1 + # DELETE /translations/1.json + def destroy + @translation.destroy + respond_to do |format| + format.html { redirect_to translations_url, notice: 'Translation was successfully destroyed.' } + format.json { head :no_content } + end + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_translation + @translation = Translation.find(params[:id]) + end + + # Never trust parameters from the scary internet, only allow the white list through. + def translation_params + params.require(:translation).permit(:title, :content) + end +end diff --git a/app/helpers/problems_helper.rb b/app/helpers/problems_helper.rb deleted file mode 100644 index 6989835..0000000 --- a/app/helpers/problems_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module ProblemsHelper -end diff --git a/app/helpers/translations_helper.rb b/app/helpers/translations_helper.rb new file mode 100644 index 0000000..ed0bd96 --- /dev/null +++ b/app/helpers/translations_helper.rb @@ -0,0 +1,2 @@ +module TranslationsHelper +end diff --git a/app/models/problem.rb b/app/models/translation.rb similarity index 82% rename from app/models/problem.rb rename to app/models/translation.rb index 981dc01..628d87e 100644 --- a/app/models/problem.rb +++ b/app/models/translation.rb @@ -1,4 +1,4 @@ -class Problem < ActiveRecord::Base +class Translation < ActiveRecord::Base validates :title, :content, presence: true validates :title, uniqueness: true diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index a24b5e2..7e0db88 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -13,7 +13,7 @@ <% end %> <%= horizontal do %> <%= nav class: 'navbar-left' do %> - <%= link_to 'Probleme', problems_path %> + <%= link_to 'Translations', translations_path %> <% end %> <% end %> <% end %> diff --git a/app/views/problems/_problem_pagination.html.erb b/app/views/problems/_problem_pagination.html.erb deleted file mode 100644 index 4df9095..0000000 --- a/app/views/problems/_problem_pagination.html.erb +++ /dev/null @@ -1 +0,0 @@ -<%= will_paginate @problems, renderer: BootstrapPagination::Rails %> \ No newline at end of file diff --git a/app/views/problems/edit.html.erb b/app/views/problems/edit.html.erb deleted file mode 100644 index 92e7277..0000000 --- a/app/views/problems/edit.html.erb +++ /dev/null @@ -1,6 +0,0 @@ -

Editing problem

- -<%= render 'form' %> - -<%= link_to 'Show', @problem %> | -<%= link_to 'Back', problems_path %> diff --git a/app/views/problems/index.html.erb b/app/views/problems/index.html.erb deleted file mode 100644 index fd5875b..0000000 --- a/app/views/problems/index.html.erb +++ /dev/null @@ -1,24 +0,0 @@ -

Listing problems

- -<%= render 'problem_pagination' %> - - - - - - - - - - <% @problems.each do |problem| %> - - - - - <% end %> - -
IDTitle
<%= problem.id %><%= link_to problem.title, problem %>
-<%= render 'problem_pagination' %> -
- -<%= link_to 'New Problem', new_problem_path, class: 'btn btn-default' %> diff --git a/app/views/problems/index.json.jbuilder b/app/views/problems/index.json.jbuilder deleted file mode 100644 index 493111a..0000000 --- a/app/views/problems/index.json.jbuilder +++ /dev/null @@ -1,4 +0,0 @@ -json.array!(@problems) do |problem| - json.extract! problem, :id, :title, :content - json.url problem_url(problem, format: :json) -end diff --git a/app/views/problems/new.html.erb b/app/views/problems/new.html.erb deleted file mode 100644 index 1c1b2ee..0000000 --- a/app/views/problems/new.html.erb +++ /dev/null @@ -1,5 +0,0 @@ -

New problem

- -<%= render 'form' %> - -<%= link_to 'Back', problems_path %> diff --git a/app/views/problems/show.html.erb b/app/views/problems/show.html.erb deleted file mode 100644 index 38e4f41..0000000 --- a/app/views/problems/show.html.erb +++ /dev/null @@ -1,17 +0,0 @@ -<% if notice %> -

<%= notice %>

-<% end %> - - - -<%= panel do %> -
- <%= sanitize @problem.content %> -
-<% end %> -
- <%= link_to 'Dieses Problem auf projecteuler.net', @problem.original_url, target: '_blank' %> -
-<%= link_to 'Edit', edit_problem_path(@problem), class: 'btn btn-default' %> diff --git a/app/views/problems/show.json.jbuilder b/app/views/problems/show.json.jbuilder deleted file mode 100644 index f9ddbe9..0000000 --- a/app/views/problems/show.json.jbuilder +++ /dev/null @@ -1 +0,0 @@ -json.extract! @problem, :id, :title, :content, :created_at, :updated_at diff --git a/app/views/problems/_form.html.erb b/app/views/translations/_form.html.erb similarity index 60% rename from app/views/problems/_form.html.erb rename to app/views/translations/_form.html.erb index 969825d..9656465 100644 --- a/app/views/problems/_form.html.erb +++ b/app/views/translations/_form.html.erb @@ -1,10 +1,10 @@ -<%= form_for(@problem) do |f| %> - <% if @problem.errors.any? %> +<%= form_for(@translation) do |f| %> + <% if @translation.errors.any? %>
-

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

+

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

diff --git a/app/views/translations/_translation_pagination.html.erb b/app/views/translations/_translation_pagination.html.erb new file mode 100644 index 0000000..d6e5b41 --- /dev/null +++ b/app/views/translations/_translation_pagination.html.erb @@ -0,0 +1 @@ +<%= will_paginate @translations, renderer: BootstrapPagination::Rails %> \ No newline at end of file diff --git a/app/views/translations/edit.html.erb b/app/views/translations/edit.html.erb new file mode 100644 index 0000000..b8dc5aa --- /dev/null +++ b/app/views/translations/edit.html.erb @@ -0,0 +1,6 @@ +

Editing translation

+ +<%= render 'form' %> + +<%= link_to 'Show', @translation %> | +<%= link_to 'Back', translations_path %> diff --git a/app/views/translations/index.html.erb b/app/views/translations/index.html.erb new file mode 100644 index 0000000..02764f1 --- /dev/null +++ b/app/views/translations/index.html.erb @@ -0,0 +1,24 @@ +

Listing translations

+ +<%= render 'translation_pagination' %> + + + + + + + + + + <% @translations.each do |translation| %> + + + + + <% end %> + +
IDTitle
<%= translation.id %><%= link_to translation.title, translation %>
+<%= render 'translation_pagination' %> +
+ +<%= link_to 'New Translation', new_translation_path, class: 'btn btn-default' %> diff --git a/app/views/translations/index.json.jbuilder b/app/views/translations/index.json.jbuilder new file mode 100644 index 0000000..890e1ea --- /dev/null +++ b/app/views/translations/index.json.jbuilder @@ -0,0 +1,4 @@ +json.array!(@translations) do |translation| + json.extract! translation, :id, :title, :content + json.url translation_url(translation, format: :json) +end diff --git a/app/views/translations/new.html.erb b/app/views/translations/new.html.erb new file mode 100644 index 0000000..45f1fd9 --- /dev/null +++ b/app/views/translations/new.html.erb @@ -0,0 +1,5 @@ +

New translation

+ +<%= render 'form' %> + +<%= link_to 'Back', translations_path %> diff --git a/app/views/translations/show.html.erb b/app/views/translations/show.html.erb new file mode 100644 index 0000000..a58c437 --- /dev/null +++ b/app/views/translations/show.html.erb @@ -0,0 +1,17 @@ +<% if notice %> +

<%= notice %>

+<% end %> + + + +<%= panel do %> +
+ <%= sanitize @translation.content %> +
+<% end %> +
+ <%= link_to 'Dieses Problem auf projecteuler.net', @translation.original_url, target: '_blank' %> +
+<%= link_to 'Edit', edit_translation_path(@translation), class: 'btn btn-default' %> diff --git a/app/views/translations/show.json.jbuilder b/app/views/translations/show.json.jbuilder new file mode 100644 index 0000000..10b6296 --- /dev/null +++ b/app/views/translations/show.json.jbuilder @@ -0,0 +1 @@ +json.extract! @translation, :id, :title, :content, :created_at, :updated_at diff --git a/config/routes.rb b/config/routes.rb index 7b67086..c167245 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,11 +1,11 @@ Rails.application.routes.draw do - resources :problems + resources :translations # The priority is based upon order of creation: first created -> highest priority. # See how all your routes lay out with "rake routes". # You can have the root of your site routed with "root" - root 'problems#index' + root 'translations#index' # Example of regular route: # get 'products/:id' => 'catalog#view' diff --git a/db/migrate/20141213151812_rename_problems_table_to_translations.rb b/db/migrate/20141213151812_rename_problems_table_to_translations.rb new file mode 100644 index 0000000..801a1cc --- /dev/null +++ b/db/migrate/20141213151812_rename_problems_table_to_translations.rb @@ -0,0 +1,5 @@ +class RenameProblemsTableToTranslations < ActiveRecord::Migration + def change + rename_table :problems, :translations + end +end diff --git a/db/schema.rb b/db/schema.rb index c07b7d5..8d34b2c 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,9 +11,9 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20141130153941) do +ActiveRecord::Schema.define(version: 20141213151812) do - create_table "problems", force: true do |t| + create_table "translations", force: true do |t| t.string "title" t.text "content" t.datetime "created_at" diff --git a/db/seeds.rb b/db/seeds.rb index 6fe1353..d58d337 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -7,7 +7,7 @@ # Mayor.create(name: 'Emanuel', city: cities.first) for i in 1..103 do - Problem.create( + Translation.create( title: "Problem Nummer #{i}", content: "Das hier ist der Inhalt von Problem #{i}.
Hier ist die zweite Zeile." ) diff --git a/test/controllers/problems_controller_test.rb b/test/controllers/problems_controller_test.rb deleted file mode 100644 index 64d1f2a..0000000 --- a/test/controllers/problems_controller_test.rb +++ /dev/null @@ -1,53 +0,0 @@ -require 'test_helper' - -class ProblemsControllerTest < ActionController::TestCase - setup do - @problem = problems(:one) - @update = { - title: 'New title', - content: 'This is the new content' - } - end - - test "should get index" do - get :index - assert_response :success - assert_not_nil assigns(:problems) - end - - test "should get new" do - get :new - assert_response :success - end - - test "should create problem" do - assert_difference('Problem.count') do - post :create, problem: @update - end - - assert_redirected_to problem_path(assigns(:problem)) - end - - test "should show problem" do - get :show, id: @problem - assert_response :success - end - - test "should get edit" do - get :edit, id: @problem - assert_response :success - end - - test "should update problem" do - patch :update, id: @problem, problem: @update - assert_redirected_to problem_path(assigns(:problem)) - end - - test "should destroy problem" do - assert_difference('Problem.count', -1) do - delete :destroy, id: @problem - end - - assert_redirected_to problems_path - end -end diff --git a/test/controllers/translations_controller_test.rb b/test/controllers/translations_controller_test.rb new file mode 100644 index 0000000..61c7455 --- /dev/null +++ b/test/controllers/translations_controller_test.rb @@ -0,0 +1,53 @@ +require 'test_helper' + +class TranslationsControllerTest < ActionController::TestCase + setup do + @translation = translations(:one) + @update = { + title: 'New title', + content: 'This is the new content' + } + end + + test "should get index" do + get :index + assert_response :success + assert_not_nil assigns(:translations) + end + + test "should get new" do + get :new + assert_response :success + end + + test "should create translation" do + assert_difference('Translation.count') do + post :create, translation: @update + end + + assert_redirected_to translation_path(assigns(:translation)) + end + + test "should show translation" do + get :show, id: @translation + assert_response :success + end + + test "should get edit" do + get :edit, id: @translation + assert_response :success + end + + test "should update translation" do + patch :update, id: @translation, translation: @update + assert_redirected_to translation_path(assigns(:translation)) + end + + test "should destroy translation" do + assert_difference('Translation.count', -1) do + delete :destroy, id: @translation + end + + assert_redirected_to translations_path + end +end diff --git a/test/fixtures/problems.yml b/test/fixtures/translations.yml similarity index 61% rename from test/fixtures/problems.yml rename to test/fixtures/translations.yml index 0e8e4a7..68398c1 100644 --- a/test/fixtures/problems.yml +++ b/test/fixtures/translations.yml @@ -2,8 +2,8 @@ one: title: First title - content: The content of the problem + content: The content of the translation two: title: Second title - content: The content of the second problem + content: The content of the second translation diff --git a/test/helpers/problems_helper_test.rb b/test/helpers/problems_helper_test.rb deleted file mode 100644 index 1de2c21..0000000 --- a/test/helpers/problems_helper_test.rb +++ /dev/null @@ -1,4 +0,0 @@ -require 'test_helper' - -class ProblemsHelperTest < ActionView::TestCase -end diff --git a/test/helpers/translations_helper_test.rb b/test/helpers/translations_helper_test.rb new file mode 100644 index 0000000..346380b --- /dev/null +++ b/test/helpers/translations_helper_test.rb @@ -0,0 +1,4 @@ +require 'test_helper' + +class TranslationsHelperTest < ActionView::TestCase +end diff --git a/test/models/problem_test.rb b/test/models/problem_test.rb deleted file mode 100644 index 83e1d8c..0000000 --- a/test/models/problem_test.rb +++ /dev/null @@ -1,34 +0,0 @@ -require 'test_helper' - -class ProblemTest < ActiveSupport::TestCase - test "should not save problem without title" do - problem = Problem.new(content: 'This is some content') - assert_not problem.save - end - - test "should not save problem without content" do - problem = Problem.new(title: 'Problem title') - assert_not problem.save - end - - test "should not save problem with duplicate title" do - problem = Problem.new( - title: problems(:one).title, - content: 'This is some content' - ) - assert_not problem.save - end - - test "should save correct problem" do - problem = Problem.new( - title: 'A unique title', - content: 'Some content' - ) - assert problem.save - end - - test "should have correct original url" do - first = Problem.first - assert_equal "https://projecteuler.net/problem=#{first.id}", first.original_url - end -end diff --git a/test/models/translation_test.rb b/test/models/translation_test.rb new file mode 100644 index 0000000..57c79d9 --- /dev/null +++ b/test/models/translation_test.rb @@ -0,0 +1,34 @@ +require 'test_helper' + +class TranslationTest < ActiveSupport::TestCase + test "should not save translation without title" do + translation = Translation.new(content: 'This is some content') + assert_not translation.save + end + + test "should not save translation without content" do + translation = Translation.new(title: 'Translation title') + assert_not translation.save + end + + test "should not save translation with duplicate title" do + translation = Translation.new( + title: translations(:one).title, + content: 'This is some content' + ) + assert_not translation.save + end + + test "should save correct translation" do + translation = Translation.new( + title: 'A unique title', + content: 'Some content' + ) + assert translation.save + end + + test "should have correct original url" do + first = Translation.first + assert_equal "https://projecteuler.net/problem=#{first.id}", first.original_url + end +end