diff options
-rw-r--r-- | Gemfile.lock | 3 | ||||
-rw-r--r-- | app/models/wittle/puzzle.rb | 12 | ||||
-rw-r--r-- | app/models/wittle/score.rb | 8 | ||||
-rw-r--r-- | db/migrate/20231028205751_create_wittle_puzzles.rb | 11 | ||||
-rw-r--r-- | db/migrate/20231028210722_create_wittle_scores.rb | 12 | ||||
-rw-r--r-- | lib/wittle/engine.rb | 1 | ||||
-rw-r--r-- | test/dummy/db/schema.rb | 33 | ||||
-rw-r--r-- | test/fixtures/wittle/puzzles.yml | 11 | ||||
-rw-r--r-- | test/fixtures/wittle/scores.yml | 13 | ||||
-rw-r--r-- | test/models/wittle/puzzle_test.rb | 9 | ||||
-rw-r--r-- | test/models/wittle/score_test.rb | 9 | ||||
-rw-r--r-- | wittle.gemspec | 1 |
12 files changed, 123 insertions, 0 deletions
diff --git a/Gemfile.lock b/Gemfile.lock index 2fd1efc..86422fe 100644 --- a/Gemfile.lock +++ b/Gemfile.lock | |||
@@ -2,6 +2,7 @@ PATH | |||
2 | remote: . | 2 | remote: . |
3 | specs: | 3 | specs: |
4 | wittle (0.1.0) | 4 | wittle (0.1.0) |
5 | enumerize | ||
5 | haml | 6 | haml |
6 | rails (>= 7.1.1) | 7 | rails (>= 7.1.1) |
7 | rice | 8 | rice |
@@ -91,6 +92,8 @@ GEM | |||
91 | date (3.3.3) | 92 | date (3.3.3) |
92 | drb (2.1.1) | 93 | drb (2.1.1) |
93 | ruby2_keywords | 94 | ruby2_keywords |
95 | enumerize (2.7.0) | ||
96 | activesupport (>= 3.2) | ||
94 | erubi (1.12.0) | 97 | erubi (1.12.0) |
95 | globalid (1.2.1) | 98 | globalid (1.2.1) |
96 | activesupport (>= 6.1) | 99 | activesupport (>= 6.1) |
diff --git a/app/models/wittle/puzzle.rb b/app/models/wittle/puzzle.rb new file mode 100644 index 0000000..e118d8a --- /dev/null +++ b/app/models/wittle/puzzle.rb | |||
@@ -0,0 +1,12 @@ | |||
1 | module Wittle | ||
2 | class Puzzle < ApplicationRecord | ||
3 | extend Enumerize | ||
4 | |||
5 | has_many :scores | ||
6 | |||
7 | validates :data, presence: true | ||
8 | |||
9 | validates :category, presence: true | ||
10 | enumerize :category, in: [:normal, :hard, :expert], scope: :shallow | ||
11 | end | ||
12 | end | ||
diff --git a/app/models/wittle/score.rb b/app/models/wittle/score.rb new file mode 100644 index 0000000..be00fda --- /dev/null +++ b/app/models/wittle/score.rb | |||
@@ -0,0 +1,8 @@ | |||
1 | module Wittle | ||
2 | class Score < ApplicationRecord | ||
3 | belongs_to :puzzle | ||
4 | |||
5 | validates :name, presence: true | ||
6 | validates :ip, presence: true | ||
7 | end | ||
8 | end | ||
diff --git a/db/migrate/20231028205751_create_wittle_puzzles.rb b/db/migrate/20231028205751_create_wittle_puzzles.rb new file mode 100644 index 0000000..ebe0bf7 --- /dev/null +++ b/db/migrate/20231028205751_create_wittle_puzzles.rb | |||
@@ -0,0 +1,11 @@ | |||
1 | class CreateWittlePuzzles < ActiveRecord::Migration[7.1] | ||
2 | def change | ||
3 | create_table :wittle_puzzles do |t| | ||
4 | t.text :data | ||
5 | t.text :solved_data | ||
6 | t.string :category | ||
7 | |||
8 | t.timestamps | ||
9 | end | ||
10 | end | ||
11 | end | ||
diff --git a/db/migrate/20231028210722_create_wittle_scores.rb b/db/migrate/20231028210722_create_wittle_scores.rb new file mode 100644 index 0000000..9ae6413 --- /dev/null +++ b/db/migrate/20231028210722_create_wittle_scores.rb | |||
@@ -0,0 +1,12 @@ | |||
1 | class CreateWittleScores < ActiveRecord::Migration[7.1] | ||
2 | def change | ||
3 | create_table :wittle_scores do |t| | ||
4 | t.references :puzzle, null: false, foreign_key: true | ||
5 | t.string :name | ||
6 | t.string :ip | ||
7 | t.integer :seconds_taken | ||
8 | |||
9 | t.timestamps | ||
10 | end | ||
11 | end | ||
12 | end | ||
diff --git a/lib/wittle/engine.rb b/lib/wittle/engine.rb index f0ec682..6b4feca 100644 --- a/lib/wittle/engine.rb +++ b/lib/wittle/engine.rb | |||
@@ -1,3 +1,4 @@ | |||
1 | require "enumerize" | ||
1 | require "haml" | 2 | require "haml" |
2 | require "wittle_generator/wittle_generator" | 3 | require "wittle_generator/wittle_generator" |
3 | 4 | ||
diff --git a/test/dummy/db/schema.rb b/test/dummy/db/schema.rb new file mode 100644 index 0000000..928cc3c --- /dev/null +++ b/test/dummy/db/schema.rb | |||
@@ -0,0 +1,33 @@ | |||
1 | # This file is auto-generated from the current state of the database. Instead | ||
2 | # of editing this file, please use the migrations feature of Active Record to | ||
3 | # incrementally modify your database, and then regenerate this schema definition. | ||
4 | # | ||
5 | # This file is the source Rails uses to define your schema when running `bin/rails | ||
6 | # db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to | ||
7 | # be faster and is potentially less error prone than running all of your | ||
8 | # migrations from scratch. Old migrations may fail to apply correctly if those | ||
9 | # migrations use external dependencies or application code. | ||
10 | # | ||
11 | # It's strongly recommended that you check this file into your version control system. | ||
12 | |||
13 | ActiveRecord::Schema[7.1].define(version: 2023_10_28_210722) do | ||
14 | create_table "wittle_puzzles", force: :cascade do |t| | ||
15 | t.text "data" | ||
16 | t.text "solved_data" | ||
17 | t.string "category" | ||
18 | t.datetime "created_at", null: false | ||
19 | t.datetime "updated_at", null: false | ||
20 | end | ||
21 | |||
22 | create_table "wittle_scores", force: :cascade do |t| | ||
23 | t.integer "puzzle_id", null: false | ||
24 | t.string "name" | ||
25 | t.string "ip" | ||
26 | t.integer "seconds_taken" | ||
27 | t.datetime "created_at", null: false | ||
28 | t.datetime "updated_at", null: false | ||
29 | t.index ["puzzle_id"], name: "index_wittle_scores_on_puzzle_id" | ||
30 | end | ||
31 | |||
32 | add_foreign_key "wittle_scores", "puzzles" | ||
33 | end | ||
diff --git a/test/fixtures/wittle/puzzles.yml b/test/fixtures/wittle/puzzles.yml new file mode 100644 index 0000000..75f9eab --- /dev/null +++ b/test/fixtures/wittle/puzzles.yml | |||
@@ -0,0 +1,11 @@ | |||
1 | # Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html | ||
2 | |||
3 | one: | ||
4 | data: MyText | ||
5 | solved_data: MyText | ||
6 | category: MyString | ||
7 | |||
8 | two: | ||
9 | data: MyText | ||
10 | solved_data: MyText | ||
11 | category: MyString | ||
diff --git a/test/fixtures/wittle/scores.yml b/test/fixtures/wittle/scores.yml new file mode 100644 index 0000000..1f21c4c --- /dev/null +++ b/test/fixtures/wittle/scores.yml | |||
@@ -0,0 +1,13 @@ | |||
1 | # Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html | ||
2 | |||
3 | one: | ||
4 | puzzle: one | ||
5 | name: MyString | ||
6 | ip: MyString | ||
7 | seconds_taken: 1 | ||
8 | |||
9 | two: | ||
10 | puzzle: two | ||
11 | name: MyString | ||
12 | ip: MyString | ||
13 | seconds_taken: 1 | ||
diff --git a/test/models/wittle/puzzle_test.rb b/test/models/wittle/puzzle_test.rb new file mode 100644 index 0000000..f826aa3 --- /dev/null +++ b/test/models/wittle/puzzle_test.rb | |||
@@ -0,0 +1,9 @@ | |||
1 | require "test_helper" | ||
2 | |||
3 | module Wittle | ||
4 | class PuzzleTest < ActiveSupport::TestCase | ||
5 | # test "the truth" do | ||
6 | # assert true | ||
7 | # end | ||
8 | end | ||
9 | end | ||
diff --git a/test/models/wittle/score_test.rb b/test/models/wittle/score_test.rb new file mode 100644 index 0000000..0d5e4a3 --- /dev/null +++ b/test/models/wittle/score_test.rb | |||
@@ -0,0 +1,9 @@ | |||
1 | require "test_helper" | ||
2 | |||
3 | module Wittle | ||
4 | class ScoreTest < ActiveSupport::TestCase | ||
5 | # test "the truth" do | ||
6 | # assert true | ||
7 | # end | ||
8 | end | ||
9 | end | ||
diff --git a/wittle.gemspec b/wittle.gemspec index e182456..0c467e3 100644 --- a/wittle.gemspec +++ b/wittle.gemspec | |||
@@ -18,4 +18,5 @@ Gem::Specification.new do |s| | |||
18 | s.add_dependency "rails", ">= 7.1.1" | 18 | s.add_dependency "rails", ">= 7.1.1" |
19 | s.add_dependency "rice" | 19 | s.add_dependency "rice" |
20 | s.add_dependency "haml" | 20 | s.add_dependency "haml" |
21 | s.add_dependency "enumerize" | ||
21 | end | 22 | end |