spec/ezmlm_spec.rb
author Michael Granger <mgranger@laika.com>
Wed, 06 Aug 2008 17:24:00 +0000
changeset 6 66beb495a861
parent 1 1d3cfd4837a8
child 12 3cc813140c80
permissions -rw-r--r--
Checkpoint commit.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
     1
#!/usr/bin/env ruby
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
     2
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
     3
BEGIN {
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
     4
	require 'pathname'
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
     5
	basedir = Pathname.new( __FILE__ ).dirname.parent
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
     6
	
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
     7
	libdir = basedir + "lib"
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
     8
	
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
     9
	$LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    10
}
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    11
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    12
begin
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    13
	require 'spec/runner'
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    14
	require 'spec/lib/helpers'
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    15
	require 'ezmlm'
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    16
rescue LoadError
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    17
	unless Object.const_defined?( :Gem )
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    18
		require 'rubygems'
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    19
		retry
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    20
	end
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    21
	raise
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    22
end
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    23
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    24
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    25
describe Ezmlm do
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    26
	include Ezmlm::SpecHelpers
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    27
6
66beb495a861 Checkpoint commit.
Michael Granger <mgranger@laika.com>
parents: 1
diff changeset
    28
	TEST_LISTSDIR = '/tmp/lists'
1
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    29
6
66beb495a861 Checkpoint commit.
Michael Granger <mgranger@laika.com>
parents: 1
diff changeset
    30
	it "can fetch a list of all mailing list subdirectories beneath a given directory" do
1
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    31
		file_entry = mock( "plain file" )
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    32
		file_entry.should_receive( :directory? ).and_return( false )
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    33
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    34
		nonexistant_mlentry = stub( "mailinglist path that doesn't exist", :exist? => false )
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    35
		nonml_dir_entry = stub( "directory with no mailinglist file",
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    36
		 	:directory? => true, :+ => nonexistant_mlentry )
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    37
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    38
		existant_mlentry = stub( "mailinglist path that does exist", :exist? => true )
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    39
		ml_dir_entry = stub( "directory with a mailinglist file", :directory? => true, :+ => existant_mlentry )
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    40
		
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    41
		Pathname.should_receive( :glob ).with( an_instance_of(Pathname) ).
6
66beb495a861 Checkpoint commit.
Michael Granger <mgranger@laika.com>
parents: 1
diff changeset
    42
			and_return([ file_entry, nonml_dir_entry, ml_dir_entry ])
1
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    43
6
66beb495a861 Checkpoint commit.
Michael Granger <mgranger@laika.com>
parents: 1
diff changeset
    44
		dirs = Ezmlm.find_directories( TEST_LISTSDIR )
66beb495a861 Checkpoint commit.
Michael Granger <mgranger@laika.com>
parents: 1
diff changeset
    45
		
66beb495a861 Checkpoint commit.
Michael Granger <mgranger@laika.com>
parents: 1
diff changeset
    46
		dirs.should have(1).member
66beb495a861 Checkpoint commit.
Michael Granger <mgranger@laika.com>
parents: 1
diff changeset
    47
		dirs.should include( ml_dir_entry )
66beb495a861 Checkpoint commit.
Michael Granger <mgranger@laika.com>
parents: 1
diff changeset
    48
	end
66beb495a861 Checkpoint commit.
Michael Granger <mgranger@laika.com>
parents: 1
diff changeset
    49
	
66beb495a861 Checkpoint commit.
Michael Granger <mgranger@laika.com>
parents: 1
diff changeset
    50
66beb495a861 Checkpoint commit.
Michael Granger <mgranger@laika.com>
parents: 1
diff changeset
    51
	it "can iterate over all mailing lists in a specified directory" do
66beb495a861 Checkpoint commit.
Michael Granger <mgranger@laika.com>
parents: 1
diff changeset
    52
		Ezmlm.should_receive( :find_directories ).with( TEST_LISTSDIR ).and_return([ :listdir1, :listdir2 ])
66beb495a861 Checkpoint commit.
Michael Granger <mgranger@laika.com>
parents: 1
diff changeset
    53
66beb495a861 Checkpoint commit.
Michael Granger <mgranger@laika.com>
parents: 1
diff changeset
    54
		Ezmlm::List.should_receive( :new ).with( :listdir1 ).and_return( :listobject1 )
66beb495a861 Checkpoint commit.
Michael Granger <mgranger@laika.com>
parents: 1
diff changeset
    55
		Ezmlm::List.should_receive( :new ).with( :listdir2 ).and_return( :listobject2 )
1
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    56
		
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    57
		lists = []
6
66beb495a861 Checkpoint commit.
Michael Granger <mgranger@laika.com>
parents: 1
diff changeset
    58
		Ezmlm.each_list( TEST_LISTSDIR ) do |list|
1
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    59
			lists << list
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    60
		end
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    61
		
6
66beb495a861 Checkpoint commit.
Michael Granger <mgranger@laika.com>
parents: 1
diff changeset
    62
		lists.should have(2).members
66beb495a861 Checkpoint commit.
Michael Granger <mgranger@laika.com>
parents: 1
diff changeset
    63
		lists.should include( :listobject1, :listobject2 )
1
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    64
	end
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    65
	
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    66
end
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    67
1d3cfd4837a8 Filled out the project, added Ezmlm module + spec.
Michael Granger <mgranger@laika.com>
parents:
diff changeset
    68