thingspeak/spec/models/plugin_spec.rb
2014-10-16 10:43:21 -04:00

128 lines
3.6 KiB
Ruby

# == Schema Information
#
# Table name: plugins
#
# id :integer not null, primary key
# name :string(255)
# user_id :integer
# html :text
# css :text
# js :text
# created_at :datetime
# updated_at :datetime
# public_flag :boolean default(FALSE)
#
require 'spec_helper'
describe Plugin do
before :each do
@user = FactoryGirl.create(:user)
@channel = FactoryGirl.create(:channel, :user => @user)
@window = FactoryGirl.create(:window, :channel => @channel, :html => "<iframe ::OPTIONS::></iframe>")
end
it "should be valid" do
plugin = Plugin.new
plugin.should be_valid
end
it "should confirm has_[public\private]_windows" do
plugin = Plugin.new
window = Window.new
window.private_flag = true
window.channel_id = 1
plugin.windows << window
plugin.has_private_windows(1).should be_true
plugin.has_public_windows(1).should be_false
end
it "new, public plugin should get 2 plugin windows" do
plugin = Plugin.new
plugin.public_flag = true
plugin.public?.should be_true
#Private plugins have one window..
#Public plugins have a private window and a public window
plugin.make_windows @channel.id, "localhost"
plugin.windows.size.should eq(2)
end
it "new, private window should not be showing" do
plugin = Plugin.new
plugin.public_flag = false
plugin.public?.should be_false
#Private plugins have one window..
plugin.make_windows @channel.id, "localhost"
plugin.windows.size.should eq(1)
window = plugin.windows[0]
window.show_flag.should be_false
end
it "should destroy public windows when changing plugin from public to private" do
plugin = Plugin.new
plugin.public_flag = false
plugin.public?.should be_false
#Private plugins have one window..
plugin.make_windows @channel.id, "localhost"
plugin.windows.size.should eq(1)
plugin.public_flag = true
plugin.save
plugin.make_windows @channel.id, "localhost"
plugin.windows.size.should eq(2)
plugin.public_flag = false
plugin.save
plugin.make_windows @channel.id, "localhost"
plugin.windows.size.should eq(1)
end
it "should allow only private_windows to be retrieved" do
plugin = Plugin.new
plugin.public_flag = true
plugin.public?.should be_true
#Private window has private_dashboard_visibility only
plugin.make_windows @channel.id, "localhost"
plugin.windows.size.should eq(2)
plugin.private_dashboard_windows(@channel.id).size.should eq(1)
end
it "should allow only public_windows to be retrieved" do
plugin = Plugin.new
plugin.public_flag = true
plugin.public?.should be_true
#Private window has private_dashboard_visibility only
plugin.make_windows @channel.id, "localhost"
plugin.windows.size.should eq(2)
plugin.public_dashboard_windows(@channel.id).size.should eq(1)
end
it "should cascade delete to Window" do
plugin = Plugin.new
plugin.make_windows @channel.id, "localhost"
plugin_id = plugin.id
plugin.destroy
Window.where(window_type: 'plugin', content_id: plugin_id).count.should eq(0)
end
it "should have windows associated with separate channels" do
channel2 = FactoryGirl.create(:channel, :user => @user)
plugin = Plugin.new
plugin.make_windows @channel.id, "localhost"
plugin.make_windows channel2.id, "localhost"
plugin.windows.size.should eq(2)
plugin.private_dashboard_windows(@channel.id).size.should eq(1)
plugin.private_dashboard_windows(channel2.id).size.should eq(1)
end
end