summaryrefslogtreecommitdiff
path: root/src/test/Cmpp298.Assignment3.Test/Presentation/InvoicesMainPresenterTest.cs
blob: 283445d3d21a7d1ed5f9f517a0da939725d86bc6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using System.Collections.Generic;
using Cmpp298.Assignment3.Dto;
using Cmpp298.Assignment3.Presentation;
using Cmpp298.Assignment3.Task;
using MbUnit.Framework;
using Rhino.Mocks;

namespace Cmpp298.Assignment3.Test.Presentation {
	[TestFixture]
	public class InvoicesMainPresenterTest {
		private MockRepository _mockery;
		private IInvoicesMainView _view;
		private IVendorTask _vendorsTask;
		private IDropDownListAdapter _vendorNamesDropDown;
		private IInvoiceTask _invoiceTask;

		[SetUp]
		public void SetUp( ) {
			_mockery = new MockRepository( );
			_view = _mockery.Stub< IInvoicesMainView >( );
			_vendorsTask = _mockery.Stub< IVendorTask >( );
			_invoiceTask = _mockery.Stub< IInvoiceTask >( );
			_vendorNamesDropDown = _mockery.Stub< IDropDownListAdapter >( );

			SetupResult.For( _view.VendorNames ).Return( _vendorNamesDropDown );
		}

		[Test]
		public void Should_Load_List_Of_Vendor_Names_On_Load( ) {
			IList< IDropDownListItem > vendors = new List< IDropDownListItem >( );
			vendors.Add( new DropDownListItem( "US Postal Service", "1" ) );
			vendors.Add( new DropDownListItem( "National Information Data Ctr", "2" ) );
			vendors.Add( new DropDownListItem( "Register of Copyrights", "3" ) );

			using ( _mockery.Record( ) ) {
				Expect.Call( _vendorsTask.GetAllVendorNames( ) ).Return( vendors ).Repeat.Once( );
				_vendorNamesDropDown.BindTo( vendors );
			}
			using ( _mockery.Playback( ) ) {
				CreateSut( ).Initialize( );
			}
		}

		[Test]
		public void Should_Load_List_Of_Invoices_For_Vendor_On_Load( ) {
			IList< DisplayInvoiceDto > invoices = new List< DisplayInvoiceDto >( );
			const string forVendorId = "1";
			invoices.Add(
				new DisplayInvoiceDto( "1", "IBM", "QP58872", "1/5/2007 12:00:00 AM", "116.54", "116.5400", "0.0000",
				                       "Net due 60 days",
				                       "3/4/2007 12:00:00 AM", "2/22/2007 12:00:00 AM" ) );

			using ( _mockery.Record( ) ) {
				SetupResult.For( _vendorNamesDropDown.SelectedItem ).Return( new DropDownListItem( "IBM", forVendorId ) );

				Expect.Call( _invoiceTask.GetAllInvoices( forVendorId ) ).Return( invoices );
				_view.BindTo( invoices );
			}
			using ( _mockery.Playback( ) ) {
				CreateSut( ).LoadInvoices( );
			}
		}

		private InvoicesMainPresenter CreateSut( ) {
			return new InvoicesMainPresenter( _view, _vendorsTask, _invoiceTask );
		}
	}
}