diff --git a/app/controllers/projects/projects_controller.rb b/app/controllers/projects/projects_controller.rb index 6272dc0..ab571a4 100644 --- a/app/controllers/projects/projects_controller.rb +++ b/app/controllers/projects/projects_controller.rb @@ -1,5 +1,13 @@ module Projects class ProjectsController < ApplicationController + def index + @projects = repo.all + end + + def show + @project = repo.by_id(params[:id]) + end + def new @project = Projects::Project.new end diff --git a/app/relations/project_relation.rb b/app/relations/project_relation.rb index fdb0d51..6e3e6ed 100644 --- a/app/relations/project_relation.rb +++ b/app/relations/project_relation.rb @@ -5,7 +5,7 @@ class ProjectRelation < ROM::Relation[:sql] # define your methods here ie: # - # def all - # select(:id, :name).order(:id) - # end + def all + select(:id, :name).order(:id) + end end diff --git a/app/repositories/project_repository.rb b/app/repositories/project_repository.rb index b339b5c..f11ca30 100644 --- a/app/repositories/project_repository.rb +++ b/app/repositories/project_repository.rb @@ -4,4 +4,12 @@ class ProjectRepository < ROM::Repository::Root commands :create, update: :by_pk, delete: :by_pk struct_namespace Projects + + def all + projects.all + end + + def by_id(id) + projects.by_pk(id).one! + end end diff --git a/app/views/projects/projects/index.html.erb b/app/views/projects/projects/index.html.erb index 1dab126..ff78488 100644 --- a/app/views/projects/projects/index.html.erb +++ b/app/views/projects/projects/index.html.erb @@ -1,3 +1,9 @@

Projects

<%= link_to "New Project", new_projects_project_path, class: "btn btn-primary" %> + + diff --git a/app/views/projects/projects/show.html.erb b/app/views/projects/projects/show.html.erb new file mode 100644 index 0000000..69c6ef8 --- /dev/null +++ b/app/views/projects/projects/show.html.erb @@ -0,0 +1 @@ +

<%= @project.name %>

diff --git a/projects.rb b/projects.rb new file mode 100644 index 0000000..cd0353d --- /dev/null +++ b/projects.rb @@ -0,0 +1,4 @@ +repo = ProjectRepository.new(ROM.env) +project = repo.all.first +puts project.class.to_s == "Projects::Project" +puts project.respond_to?(:to_model) diff --git a/spec/features/projects/viewing_spec.rb b/spec/features/projects/viewing_spec.rb new file mode 100644 index 0000000..427c98b --- /dev/null +++ b/spec/features/projects/viewing_spec.rb @@ -0,0 +1,15 @@ +require "rails_helper" + +RSpec.feature "Users can view projects" do + let(:project_repo) { ProjectRepository.new(ROM.env) } + let!(:project) { project_repo.create(name: "Sublime Text 3") } + + scenario "with the project details" do + visit "/" + click_link "Sublime Text 3" + expect(page.current_url).to eq projects_project_url(project) + within("h2") do + expect(page).to have_content("Sublime Text 3") + end + end +end