From 16f4e153f23ee9102857db40ed52d08b1fcbe95b Mon Sep 17 00:00:00 2001 From: Skud Date: Tue, 27 Aug 2013 21:49:54 +1000 Subject: [PATCH] Made admin/newsletter page with list of subscribers --- app/controllers/admin_controller.rb | 8 ++++++++ app/views/admin/index.html.haml | 1 + app/views/admin/newsletter.html.haml | 6 ++++++ config/routes.rb | 1 + spec/controllers/admin_controller_spec.rb | 15 +++++++++++++++ spec/views/admin/index_spec.rb | 4 ++++ spec/views/admin/newsletter_spec.rb | 16 ++++++++++++++++ 7 files changed, 51 insertions(+) create mode 100644 app/views/admin/newsletter.html.haml create mode 100644 spec/views/admin/newsletter_spec.rb diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb index 272e14eea..cfbb5c014 100644 --- a/app/controllers/admin_controller.rb +++ b/app/controllers/admin_controller.rb @@ -5,4 +5,12 @@ class AdminController < ApplicationController format.html # index.html.haml end end + + def newsletter + authorize! :manage, :all + @members = Member.confirmed.wants_newsletter.all + respond_to do |format| + format.html # index.html.haml + end + end end diff --git a/app/views/admin/index.html.haml b/app/views/admin/index.html.haml index 0ce432ccd..b9f814df8 100644 --- a/app/views/admin/index.html.haml +++ b/app/views/admin/index.html.haml @@ -7,6 +7,7 @@ %li= link_to "Products", products_path %li= link_to "Roles", roles_path %li= link_to "Forums", forums_path + %li= link_to "Newsletter subscribers", admin_newsletter_path %h2 Orders diff --git a/app/views/admin/newsletter.html.haml b/app/views/admin/newsletter.html.haml new file mode 100644 index 000000000..adf75ce6b --- /dev/null +++ b/app/views/admin/newsletter.html.haml @@ -0,0 +1,6 @@ +-content_for :title, 'Newsletter subscribers' + +%p +- @members.each do |m| + = m.email + %br/ diff --git a/config/routes.rb b/config/routes.rb index 341aacec8..62146251a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -117,6 +117,7 @@ Growstuff::Application.routes.draw do match '/admin/orders' => 'admin/orders#index' match '/admin/orders/:action' => 'admin/orders#:action' match '/admin' => 'admin#index' + match '/admin/newsletter' => 'admin#newsletter', :as => :admin_newsletter match '/admin/:action' => 'admin#:action' end diff --git a/spec/controllers/admin_controller_spec.rb b/spec/controllers/admin_controller_spec.rb index 587324b52..76f56b78a 100644 --- a/spec/controllers/admin_controller_spec.rb +++ b/spec/controllers/admin_controller_spec.rb @@ -2,4 +2,19 @@ require 'spec_helper' describe AdminController do + login_member(:admin_member) + + describe "GET admin/newsletter" do + it 'fetches the admin newsletter page' do + get :newsletter + response.should be_success + response.should render_template("admin/newsletter") + end + + it 'assigns @members' do + m = FactoryGirl.create(:newsletter_recipient_member) + get :newsletter + assigns(:members).should eq [m] + end + end end diff --git a/spec/views/admin/index_spec.rb b/spec/views/admin/index_spec.rb index d63f897ee..fe92a4193 100644 --- a/spec/views/admin/index_spec.rb +++ b/spec/views/admin/index_spec.rb @@ -14,4 +14,8 @@ describe 'admin/index.html.haml', :type => "view" do assert_select "a", :href => roles_path assert_select "a", :href => forums_path end + + it "has a link to newsletter subscribers" do + rendered.should contain "Newsletter subscribers" + end end diff --git a/spec/views/admin/newsletter_spec.rb b/spec/views/admin/newsletter_spec.rb new file mode 100644 index 000000000..a0d871cd4 --- /dev/null +++ b/spec/views/admin/newsletter_spec.rb @@ -0,0 +1,16 @@ +require 'spec_helper' + +describe 'admin/newsletter.html.haml', :type => "view" do + before(:each) do + @member = FactoryGirl.create(:admin_member) + sign_in @member + controller.stub(:current_user) { @member } + @subscriber = FactoryGirl.create(:newsletter_recipient_member) + assign(:members, [@subscriber]) + render + end + + it "lists newsletter subscribers by email" do + rendered.should contain @subscriber.email + end +end