From 48ce26b85cf22aeecffd975f9cb7481717136579 Mon Sep 17 00:00:00 2001 From: Luiz Guilherme Muraro Date: Tue, 1 Oct 2024 11:27:08 -0300 Subject: [PATCH] feat: create mocked quest endpoint --- apps/govquests-api/package.json | 2 +- .../app/controllers/quests_controller.rb | 69 +++++++++++++++++++ .../rails_app/app/models/quest.rb | 8 +++ apps/govquests-api/rails_app/config/routes.rb | 1 + .../migrate/20241001131854_create_quests.rb | 13 ++++ apps/govquests-api/rails_app/db/schema.rb | 12 +++- .../test/controllers/quest_controller_test.rb | 7 ++ .../rails_app/test/fixtures/quests.yml | 15 ++++ .../rails_app/test/models/quest_test.rb | 7 ++ 9 files changed, 132 insertions(+), 2 deletions(-) create mode 100644 apps/govquests-api/rails_app/app/controllers/quests_controller.rb create mode 100644 apps/govquests-api/rails_app/app/models/quest.rb create mode 100644 apps/govquests-api/rails_app/db/migrate/20241001131854_create_quests.rb create mode 100644 apps/govquests-api/rails_app/test/controllers/quest_controller_test.rb create mode 100644 apps/govquests-api/rails_app/test/fixtures/quests.yml create mode 100644 apps/govquests-api/rails_app/test/models/quest_test.rb diff --git a/apps/govquests-api/package.json b/apps/govquests-api/package.json index 1878f37..58a6868 100644 --- a/apps/govquests-api/package.json +++ b/apps/govquests-api/package.json @@ -4,7 +4,7 @@ "description": "", "main": "index.js", "scripts": { - "dev": "bin/dev" + "dev": "cd rails_app && bin/dev" }, "keywords": [], "author": "", diff --git a/apps/govquests-api/rails_app/app/controllers/quests_controller.rb b/apps/govquests-api/rails_app/app/controllers/quests_controller.rb new file mode 100644 index 0000000..0f9e371 --- /dev/null +++ b/apps/govquests-api/rails_app/app/controllers/quests_controller.rb @@ -0,0 +1,69 @@ +# app/controllers/quests_controller.rb +class QuestsController < ApplicationController + def index + quests = [ + { + img_url: "https://file.coinexstatic.com/2023-11-16/BB3FDB00283C55B4C36B94CFAC0C3271.png", + title: "Governance 101", + reward_type: "OP", + intro: "First things first: understand what are the Optimism Values and what is expect + of you in this important role.", + steps: [ + { + content: "Code of Conduct", + duration: 15, + status: "start" + }, + { + content: "Optimistic Vision", + duration: 10, + status: "start" + + }, + { + content: "Working Constitution", + duration: 15, + status: "start" + }, + { + content: "Delegate Expectations", + duration: 12, + status: "start" + }, + ] + }, + { + img_url: "https://file.coinexstatic.com/2023-11-16/BB3FDB00283C55B4C36B94CFAC0C3271.png", + title: "Governance 101", + reward_type: "POINTS", + intro: "First things first: understand what are the Optimism Values and what is expect + of you in this important role.", + steps: [ + { + content: "Code of Conduct", + duration: 15, + status: "start" + }, + { + content: "Optimistic Vision", + duration: 15, + status: "start" + + }, + { + content: "Working Constitution", + duration: 20, + status: "start" + }, + { + content: "Delegate Expectations", + duration: 25, + status: "start" + }, + ] + }, + ] + + render json: quests + end +end \ No newline at end of file diff --git a/apps/govquests-api/rails_app/app/models/quest.rb b/apps/govquests-api/rails_app/app/models/quest.rb new file mode 100644 index 0000000..4f8a86c --- /dev/null +++ b/apps/govquests-api/rails_app/app/models/quest.rb @@ -0,0 +1,8 @@ +class Quest < ApplicationRecord + validates :img_url, presence: true + validates :title, presence: true + validates :reward_type, presence: true + validates :intro, presence: true + + serialize :steps, Array +end \ No newline at end of file diff --git a/apps/govquests-api/rails_app/config/routes.rb b/apps/govquests-api/rails_app/config/routes.rb index e58bbac..fd0d732 100644 --- a/apps/govquests-api/rails_app/config/routes.rb +++ b/apps/govquests-api/rails_app/config/routes.rb @@ -8,4 +8,5 @@ # Defines the root path route ("/") # root "posts#index" + get 'quests', to: 'quests#index' end diff --git a/apps/govquests-api/rails_app/db/migrate/20241001131854_create_quests.rb b/apps/govquests-api/rails_app/db/migrate/20241001131854_create_quests.rb new file mode 100644 index 0000000..21b52c7 --- /dev/null +++ b/apps/govquests-api/rails_app/db/migrate/20241001131854_create_quests.rb @@ -0,0 +1,13 @@ +class CreateQuests < ActiveRecord::Migration[8.0] + def change + create_table :quests do |t| + t.string :img_url + t.string :title + t.string :reward_type + t.text :intro + t.text :steps + + t.timestamps + end + end +end diff --git a/apps/govquests-api/rails_app/db/schema.rb b/apps/govquests-api/rails_app/db/schema.rb index 4993a9e..003eedd 100644 --- a/apps/govquests-api/rails_app/db/schema.rb +++ b/apps/govquests-api/rails_app/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[8.0].define(version: 2024_09_27_211319) do +ActiveRecord::Schema[8.0].define(version: 2024_10_01_131854) do create_table "accounts", force: :cascade do |t| t.string "account_id" t.string "string" @@ -44,5 +44,15 @@ t.index ["stream", "position"], name: "index_event_store_events_in_streams_on_stream_and_position", unique: true end + create_table "quests", force: :cascade do |t| + t.string "img_url" + t.string "title" + t.string "reward_type" + t.text "intro" + t.text "steps" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + add_foreign_key "event_store_events_in_streams", "event_store_events", column: "event_id", primary_key: "event_id" end diff --git a/apps/govquests-api/rails_app/test/controllers/quest_controller_test.rb b/apps/govquests-api/rails_app/test/controllers/quest_controller_test.rb new file mode 100644 index 0000000..05865ad --- /dev/null +++ b/apps/govquests-api/rails_app/test/controllers/quest_controller_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class QuestControllerTest < ActionDispatch::IntegrationTest + # test "the truth" do + # assert true + # end +end diff --git a/apps/govquests-api/rails_app/test/fixtures/quests.yml b/apps/govquests-api/rails_app/test/fixtures/quests.yml new file mode 100644 index 0000000..34f7771 --- /dev/null +++ b/apps/govquests-api/rails_app/test/fixtures/quests.yml @@ -0,0 +1,15 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + img_url: MyString + title: MyString + reward_type: MyString + intro: MyText + steps: MyText + +two: + img_url: MyString + title: MyString + reward_type: MyString + intro: MyText + steps: MyText diff --git a/apps/govquests-api/rails_app/test/models/quest_test.rb b/apps/govquests-api/rails_app/test/models/quest_test.rb new file mode 100644 index 0000000..ca960cb --- /dev/null +++ b/apps/govquests-api/rails_app/test/models/quest_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class QuestTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end