ticketmaster-mingle 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,40 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "Ticketmaster::Provider::Mingle::Comment" do
4
+ before(:all) do
5
+ headers = {'Authorization' => 'Basic MDAwMDAwOg==', 'Accept' => 'application/xml'}
6
+ headers_post = {'Authorization' => 'Basic MDAwMDAwOg==', 'Content-Type' => 'application/xml'}
7
+ ActiveResource::HttpMock.respond_to do |mock|
8
+ mock.get '/api/v2/projects/test_project.xml', headers, fixture_for('projects/test_project'), 200
9
+ mock.get '/api/v2/projects/test_project/cards.xml', headers, fixture_for('cards'), 200
10
+ mock.get '/api/v2/projects/test_project/cards/42.xml', headers, fixture_for('cards/42'), 200
11
+ mock.get '/api/v2/projects/test_project/cards/42/comments.xml', headers, fixture_for('comments'), 200
12
+ mock.post '/api/v2/projects/test_project/cards/42/comments.xml?comment[content]=New%20comment%20created.', headers_post, fixture_for('comments/create'), 200
13
+ end
14
+ @identifier = 'test_project'
15
+ @number = 42
16
+ end
17
+
18
+ before(:each) do
19
+ @ticketmaster = TicketMaster.new(:mingle, {:name => 'anymoto', :login => '000000', :server => 'localhost:8080'})
20
+ @project = @ticketmaster.project(@identifier)
21
+ @ticket = @project.ticket(@number)
22
+ @ticket.identifier = @project.identifier
23
+ @klass = TicketMaster::Provider::Mingle::Comment
24
+ end
25
+
26
+ it "should be able to load all comments" do
27
+ @comments = @ticket.comments
28
+ @comments.should be_an_instance_of(Array)
29
+ @comments.first.should be_an_instance_of(@klass)
30
+ end
31
+
32
+ it "should return the class" do
33
+ @ticket.comment.should == @klass
34
+ end
35
+
36
+ it "should be able to create a comment" do
37
+ @comment = @ticket.comment!(:content => 'New comment created.')
38
+ @comment.should be_an_instance_of(@klass)
39
+ end
40
+ end
@@ -0,0 +1,41 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <card>
3
+ <name>As an API user, I would like to lookup a card in Mingle, given that I know the card number.</name>
4
+ <description>
5
+ </description>
6
+ <card_type>
7
+ <name>Story</name>
8
+ </card_type>
9
+ <number type="integer">42</number>
10
+ <project url="http://myserver.com/api/v2/projects/test_project.xml">
11
+ <name>test project</name>
12
+ <identifier>test_project</identifier>
13
+ </project>
14
+ <version type="integer">1</version>
15
+ <project_card_rank type="integer">1</project_card_rank>
16
+ <created_on type="datetime">2009-10-14T09:14:54Z</created_on>
17
+ <modified_on type="datetime">2009-10-14T09:14:54Z</modified_on>
18
+ <modified_by url="http://myserver.com/api/v2/users/1.xml">
19
+ <name>anne</name>
20
+ <login>anne</login>
21
+ </modified_by>
22
+ <created_by url="http://myserver.com/api/v2/users/2.xml">
23
+ <name>jane</name>
24
+ <login>jane</login>
25
+ </created_by>
26
+ <properties type="array">
27
+ <property type_description="Managed text list" hidden="false">
28
+ <name>Status</name>
29
+ <value>Closed</value>
30
+ </property>
31
+ <property type_description="Managed number list" hidden="false">
32
+ <name>Estimate</name>
33
+ <value>4</value>
34
+ </property>
35
+ <property type_description="Managed text list" hidden="false">
36
+ <name>Priority</name>
37
+ <value nil="true"/>
38
+ </property>
39
+ </properties>
40
+ </card>
41
+
@@ -0,0 +1,42 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <card>
3
+ <name>Automatically update event status when event date has passed</name>
4
+ <description>
5
+ </description>
6
+ <card_type>
7
+ <name>Story</name>
8
+ </card_type>
9
+ <id type="integer">410</id>
10
+ <number type="integer">43</number>
11
+ <project url="http://localhost:8080/api/v2/projects/test_project.xml">
12
+ <name>test project</name>
13
+ <identifier>test_project</identifier>
14
+ </project>
15
+ <version type="integer">1</version>
16
+ <project_card_rank type="integer">1</project_card_rank>
17
+ <created_on type="datetime">2009-10-14T09:14:54Z</created_on>
18
+ <modified_on type="datetime">2009-10-14T09:14:54Z</modified_on>
19
+ <modified_by url="http://localhost:8080/api/v2/users/1.xml">
20
+ <name>anne</name>
21
+ <login>anne</login>
22
+ </modified_by>
23
+ <created_by url="http://localhost:8080/api/v2/users/2.xml">
24
+ <name>jane</name>
25
+ <login>jane</login>
26
+ </created_by>
27
+ <properties type="array">
28
+ <property type_description="Managed text list" hidden="false">
29
+ <name>Status</name>
30
+ <value>Closed</value>
31
+ </property>
32
+ <property type_description="Managed number list" hidden="false">
33
+ <name>Estimate</name>
34
+ <value>4</value>
35
+ </property>
36
+ <property type_description="Managed text list" hidden="false">
37
+ <name>Priority</name>
38
+ <value nil="true"/>
39
+ </property>
40
+ </properties>
41
+ </card>
42
+
@@ -0,0 +1,42 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <card>
3
+ <name>Show event details in event list</name>
4
+ <description>
5
+ </description>
6
+ <card_type>
7
+ <name>Story</name>
8
+ </card_type>
9
+ <id type="integer">411</id>
10
+ <number type="integer">44</number>
11
+ <project url="http://localhost:8080/api/v2/projects/test_project.xml">
12
+ <name>test project</name>
13
+ <identifier>test_project</identifier>
14
+ </project>
15
+ <version type="integer">1</version>
16
+ <project_card_rank type="integer">1</project_card_rank>
17
+ <created_on type="datetime">2009-10-14T09:14:54Z</created_on>
18
+ <modified_on type="datetime">2009-10-14T09:14:54Z</modified_on>
19
+ <modified_by url="http://localhost:8080/api/v2/users/1.xml">
20
+ <name>anne</name>
21
+ <login>anne</login>
22
+ </modified_by>
23
+ <created_by url="http://localhost:8080/api/v2/users/2.xml">
24
+ <name>jane</name>
25
+ <login>jane</login>
26
+ </created_by>
27
+ <properties type="array">
28
+ <property type_description="Managed text list" hidden="false">
29
+ <name>Status</name>
30
+ <value>Closed</value>
31
+ </property>
32
+ <property type_description="Managed number list" hidden="false">
33
+ <name>Estimate</name>
34
+ <value>4</value>
35
+ </property>
36
+ <property type_description="Managed text list" hidden="false">
37
+ <name>Priority</name>
38
+ <value nil="true"/>
39
+ </property>
40
+ </properties>
41
+ </card>
42
+
@@ -0,0 +1,83 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <cards type="array">
3
+ <card>
4
+ <name>Ticket 1</name>
5
+ <description>
6
+ </description>
7
+ <card_type>
8
+ <name>Story</name>
9
+ </card_type>
10
+ <id type="integer">409</id>
11
+ <number type="integer">42</number>
12
+ <project url="http://myserver.com/api/v2/projects/test_project.xml">
13
+ <name>test project</name>
14
+ <identifier>test_project</identifier>
15
+ </project>
16
+ <version type="integer">1</version>
17
+ <project_card_rank type="integer">1</project_card_rank>
18
+ <created_on type="datetime">2009-10-14T09:14:54Z</created_on>
19
+ <modified_on type="datetime">2009-10-14T09:14:54Z</modified_on>
20
+ <modified_by url="http://myserver.com/api/v2/users/1.xml">
21
+ <name>anne</name>
22
+ <login>anne</login>
23
+ </modified_by>
24
+ <created_by url="http://myserver.com/api/v2/users/2.xml">
25
+ <name>jane</name>
26
+ <login>jane</login>
27
+ </created_by>
28
+ <properties type="array">
29
+ <property type_description="Managed text list" hidden="false">
30
+ <name>Status</name>
31
+ <value>Closed</value>
32
+ </property>
33
+ <property type_description="Managed number list" hidden="false">
34
+ <name>Estimate</name>
35
+ <value>4</value>
36
+ </property>
37
+ <property type_description="Managed text list" hidden="false">
38
+ <name>Priority</name>
39
+ <value nil="true"/>
40
+ </property>
41
+ </properties>
42
+ </card>
43
+ <card>
44
+ <name>Automatically update event status when event date has passed</name>
45
+ <description>
46
+ </description>
47
+ <card_type>
48
+ <name>Story</name>
49
+ </card_type>
50
+ <id type="integer">410</id>
51
+ <number type="integer">43</number>
52
+ <project url="http://myserver.com/api/v2/projects/test_project.xml">
53
+ <name>test project</name>
54
+ <identifier>test_project</identifier>
55
+ </project>
56
+ <version type="integer">1</version>
57
+ <project_card_rank type="integer">1</project_card_rank>
58
+ <created_on type="datetime">2009-10-14T09:14:54Z</created_on>
59
+ <modified_on type="datetime">2009-10-14T09:14:54Z</modified_on>
60
+ <modified_by url="http://myserver.com/api/v2/users/1.xml">
61
+ <name>anne</name>
62
+ <login>anne</login>
63
+ </modified_by>
64
+ <created_by url="http://myserver.com/api/v2/users/2.xml">
65
+ <name>jane</name>
66
+ <login>jane</login>
67
+ </created_by>
68
+ <properties type="array">
69
+ <property type_description="Managed text list" hidden="false">
70
+ <name>Status</name>
71
+ <value>Closed</value>
72
+ </property>
73
+ <property type_description="Managed number list" hidden="false">
74
+ <name>Estimate</name>
75
+ <value>4</value>
76
+ </property>
77
+ <property type_description="Managed text list" hidden="false">
78
+ <name>Priority</name>
79
+ <value nil="true"/>
80
+ </property>
81
+ </properties>
82
+ </card>
83
+ </cards>
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <comment>
3
+ <content>a new comment</content>
4
+ <created_by url="http://localhost:8080/api/v2/users/1.xml">
5
+ <name>bonna</name>
6
+ <login>bonna</login>
7
+ </created_by>
8
+ <created_at type="datetime">2010-04-11T20:18:02Z</created_at>
9
+ </comment>
10
+
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <card_comments type="array">
3
+ <comment>
4
+ <content>Hi</content>
5
+ <created_by url="http://localhost:8080/api/v2/users/21.xml">
6
+ <name>Jeff</name>
7
+ <login>j</login>
8
+ </created_by>
9
+ <created_at type="datetime">2010-03-10T21:16:39Z</created_at>
10
+ </comment>
11
+ <comment>
12
+ <content>hello there</content>
13
+ <created_by url="http://localhost:8080/api/v2/users/1.xml">
14
+ <name>bonna</name>
15
+ <login>bonna</login>
16
+ </created_by>
17
+ <created_at type="datetime">2010-03-10T21:16:02Z</created_at>
18
+ </comment>
19
+ </card_comments>
20
+
@@ -0,0 +1,29 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project>
3
+ <name>Another Project</name>
4
+ <identifier>another_project</identifier>
5
+ <description>Another Project description</description>
6
+ <created_at type="datetime">2010-11-20T10:37:52Z></created_at>
7
+ <updated_at type="datetime">2010-11-21T00:47:55Z></updated_at>
8
+ <created_by url="http://localhost:8080/api/v2/users/8.xml">
9
+ <name>anne</name>
10
+ <login>anne</login>
11
+ </created_by>
12
+ <modified_by url="http://localhost:8080/api/v2/users/2.xml">
13
+ <name>bonna</name>
14
+ <login>bonna</login>
15
+ </modified_by>
16
+ <keywords>
17
+ <keyword>card</keyword>
18
+ <keyword>#</keyword>
19
+ </keywords>
20
+ <template type="boolean">false</template>
21
+ <email_address></email_address>
22
+ <email_sender_name></email_sender_name>
23
+ <date_format>%d %b %Y</date_format>
24
+ <time_zone>Beijing</time_zone>
25
+ <precision type="integer">2</precision>
26
+ <anonymous_accessible type="boolean">false</anonymous_accessible>
27
+ <auto_enroll_user_type nil="true"></auto_enroll_user_type>
28
+ </project>
29
+
@@ -0,0 +1,29 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project>
3
+ <name>Dumb Project</name>
4
+ <identifier>dumb</identifier>
5
+ <description>Dumb project description</description>
6
+ <created_at type="datetime">2009-10-20T10:37:52Z></created_at>
7
+ <updated_at type="datetime">2009-10-21T00:47:55Z></updated_at>
8
+ <created_by url="http://myserver.com/api/v2/users/8.xml">
9
+ <name>anne</name>
10
+ <login>anne</login>
11
+ </created_by>
12
+ <modified_by url="http://myserver.com/api/v2/users/2.xml">
13
+ <name>bonna</name>
14
+ <login>bonna</login>
15
+ </modified_by>
16
+ <keywords>
17
+ <keyword>card</keyword>
18
+ <keyword>#</keyword>
19
+ </keywords>
20
+ <template type="boolean">false</template>
21
+ <email_address></email_address>
22
+ <email_sender_name></email_sender_name>
23
+ <date_format>%d %b %Y</date_format>
24
+ <time_zone>Beijing</time_zone>
25
+ <precision type="integer">2</precision>
26
+ <anonymous_accessible type="boolean">false</anonymous_accessible>
27
+ <auto_enroll_user_type nil="true"></auto_enroll_user_type>
28
+ </project>
29
+
@@ -0,0 +1,29 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project>
3
+ <name>Test Project</name>
4
+ <identifier>test_project</identifier>
5
+ <description>Test Project description</description>
6
+ <created_at type="datetime">2009-10-20T10:37:52Z></created_at>
7
+ <updated_at type="datetime">2009-10-21T00:47:55Z></updated_at>
8
+ <created_by url="http://localhost:8080/api/v2/users/8.xml">
9
+ <name>anne</name>
10
+ <login>anne</login>
11
+ </created_by>
12
+ <modified_by url="http://localhost:8080/api/v2/users/2.xml">
13
+ <name>bonna</name>
14
+ <login>bonna</login>
15
+ </modified_by>
16
+ <keywords>
17
+ <keyword>card</keyword>
18
+ <keyword>#</keyword>
19
+ </keywords>
20
+ <template type="boolean">false</template>
21
+ <email_address></email_address>
22
+ <email_sender_name></email_sender_name>
23
+ <date_format>%d %b %Y</date_format>
24
+ <time_zone>Beijing</time_zone>
25
+ <precision type="integer">2</precision>
26
+ <anonymous_accessible type="boolean">false</anonymous_accessible>
27
+ <auto_enroll_user_type nil="true"></auto_enroll_user_type>
28
+ </project>
29
+
@@ -0,0 +1,57 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <projects type="array">
3
+ <project>
4
+ <name>Test Project</name>
5
+ <identifier>test_project</identifier>
6
+ <description>Test Project description</description>
7
+ <created_at type="datetime">2009-10-20T10:37:52Z></created_at>
8
+ <updated_at type="datetime">2009-10-21T00:47:55Z></updated_at>
9
+ <created_by url="http://localhost:8080/api/v2/users/8.xml">
10
+ <name>anne</name>
11
+ <login>anne</login>
12
+ </created_by>
13
+ <modified_by url="http://localhost:8080/api/v2/users/2.xml">
14
+ <name>bonna</name>
15
+ <login>bonna</login>
16
+ </modified_by>
17
+ <keywords>
18
+ <keyword>card</keyword>
19
+ <keyword>#</keyword>
20
+ </keywords>
21
+ <template type="boolean">false</template>
22
+ <email_address></email_address>
23
+ <email_sender_name></email_sender_name>
24
+ <date_format>%d %b %Y</date_format>
25
+ <time_zone>Beijing</time_zone>
26
+ <precision type="integer">2</precision>
27
+ <anonymous_accessible type="boolean">false</anonymous_accessible>
28
+ <auto_enroll_user_type nil="true"></auto_enroll_user_type>
29
+ </project>
30
+ <project>
31
+ <name>Another Project</name>
32
+ <identifier>another_project</identifier>
33
+ <description>Another Project description</description>
34
+ <created_at type="datetime">2010-11-20T10:37:52Z></created_at>
35
+ <updated_at type="datetime">2010-11-21T00:47:55Z></updated_at>
36
+ <created_by url="http://localhost:8080/api/v2/users/8.xml">
37
+ <name>anne</name>
38
+ <login>anne</login>
39
+ </created_by>
40
+ <modified_by url="http://localhost:8080/api/v2/users/2.xml">
41
+ <name>bonna</name>
42
+ <login>bonna</login>
43
+ </modified_by>
44
+ <keywords>
45
+ <keyword>card</keyword>
46
+ <keyword>#</keyword>
47
+ </keywords>
48
+ <template type="boolean">false</template>
49
+ <email_address></email_address>
50
+ <email_sender_name></email_sender_name>
51
+ <date_format>%d %b %Y</date_format>
52
+ <time_zone>Beijing</time_zone>
53
+ <precision type="integer">2</precision>
54
+ <anonymous_accessible type="boolean">false</anonymous_accessible>
55
+ <auto_enroll_user_type nil="true"></auto_enroll_user_type>
56
+ </project>
57
+ </projects>
@@ -0,0 +1,55 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "Ticketmaster::Provider::Mingle::Project" do
4
+ before(:all) do
5
+ headers = {'Authorization' => 'Basic OjAwMDAwMA==', 'Accept' => 'application/xml'}
6
+ headers_post = {'Authorization' => 'Basic OjAwMDAwMA==', 'Content-Type' => 'application/xml'}
7
+ @identifier = 'test_project'
8
+ ActiveResource::HttpMock.respond_to do |mock|
9
+ mock.get '/api/v2/projects.xml', headers, fixture_for('projects'), 200
10
+ mock.get '/api/v2/projects/test_project.xml', headers, fixture_for('projects/test_project'), 200
11
+ mock.get '/api/v2/projects/dumb.xml', headers, fixture_for('projects/create'), 404
12
+ mock.post '/api/v2/projects.xml?project[name]=Another%20project&project[description]=This%20is%20a%20another%20project&project[identifier]=dumb', headers_post, '', 200, 'Location' => '/projects/dumb'
13
+ end
14
+ end
15
+
16
+ before(:each) do
17
+ @ticketmaster = TicketMaster.new(:mingle, {:server => 'myserver.com', :username => 'anymoto', :password => '000000'})
18
+ @klass = TicketMaster::Provider::Mingle::Project
19
+ end
20
+
21
+ it "should be able to load all projects" do
22
+ @ticketmaster.projects.should be_an_instance_of(Array)
23
+ @ticketmaster.projects.first.should be_an_instance_of(@klass)
24
+ end
25
+
26
+ it "should be able to load projects from an array of id's" do
27
+ @projects = @ticketmaster.projects([@identifier])
28
+ @projects.should be_an_instance_of(Array)
29
+ @projects.first.should be_an_instance_of(@klass)
30
+ @projects.first.identifier.should == @identifier
31
+ end
32
+
33
+ it "should be able to load all projects from attributes" do
34
+ @projects = @ticketmaster.projects(:identifier => 'test_project')
35
+ @projects.should be_an_instance_of(Array)
36
+ @projects.first.should be_an_instance_of(@klass)
37
+ @projects.first.identifier.should == 'test_project'
38
+ end
39
+
40
+ it "should be able to find a project" do
41
+ @ticketmaster.project.should == @klass
42
+ @ticketmaster.project.find(@identifier).should be_an_instance_of(@klass)
43
+ end
44
+
45
+ it "should be able to find a project by identifier" do
46
+ @ticketmaster.project(@identifier).should be_an_instance_of(@klass)
47
+ @ticketmaster.project(@identifier).identifier.should == @identifier
48
+ end
49
+
50
+ it "should be able to create a new project" do
51
+ @project = @ticketmaster.project!(:name => 'Another project', :identifier => 'dumb', :description => 'This is a another project').should be_an_instance_of(@klass)
52
+ end
53
+
54
+
55
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,15 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+ require 'rubygems'
4
+ require 'ticketmaster'
5
+ require 'ticketmaster-mingle'
6
+ require 'spec'
7
+ require 'spec/autorun'
8
+
9
+ Spec::Runner.configure do |config|
10
+
11
+ end
12
+
13
+ def fixture_for(name)
14
+ File.read(File.dirname(__FILE__) + '/fixtures/' + name + '.xml')
15
+ end
@@ -0,0 +1,11 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "Ticketmaster::Provider::Mingle" do
4
+
5
+ it "should be able to instantiate a new instance" do
6
+ @ticketmaster = TicketMaster.new(:mingle, {:server => 'myserver.com', :username => 'anymoto', :password => '000000'})
7
+ @ticketmaster.should be_an_instance_of(TicketMaster)
8
+ @ticketmaster.should be_a_kind_of(TicketMaster::Provider::Mingle)
9
+ end
10
+
11
+ end
@@ -0,0 +1,71 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "Ticketmaster::Provider::Mingle::Ticket" do
4
+ before(:all) do
5
+ headers = {'Authorization' => 'Basic OjAwMDAwMA==', 'Accept' => 'application/xml'}
6
+ headers_post_put = {'Authorization' => 'Basic OjAwMDAwMA==', 'Content-Type' => 'application/xml'}
7
+ @identifier = 'test_project'
8
+ ActiveResource::HttpMock.respond_to do |mock|
9
+ mock.get '/api/v2/projects.xml', headers, fixture_for('projects'), 200
10
+ mock.get '/api/v2/projects/test_project.xml', headers, fixture_for('projects/test_project'), 200
11
+ mock.get '/api/v2/projects/test_project/cards/42.xml', headers, fixture_for('cards/42'), 200
12
+ mock.get '/api/v2/projects/test_project/cards.xml', headers, fixture_for('cards'), 200
13
+ mock.get '/api/v2/projects/test_project/cards/42.xml', headers, fixture_for('cards/42'), 200
14
+ mock.put '/api/v2/projects/test_project/cards/42.xml?card[name]=Ticket%201&card[number]=42&card[created_on]=Wed%20Oct%2014%2009:14:54%20UTC%202009&card[modified_on]=Wed%20Oct%2014%2009:14:54%20UTC%202009&card[id]=0&card[description]=New%20card%20description', headers_post_put, '', 200
15
+ mock.post '/api/v2/projects/test_project/cards.xml?card[title]=Ticket%20%2312&card[description]=Body', headers_post_put, '', 200
16
+ end
17
+ end
18
+
19
+ before(:each) do
20
+ @ticketmaster = TicketMaster.new(:mingle, {:server => 'myserver.com', :username => 'anymoto', :password => '000000'})
21
+ @project = @ticketmaster.project(@identifier)
22
+ @klass = TicketMaster::Provider::Mingle::Ticket
23
+ end
24
+
25
+ it "should be able to load all tickets" do
26
+ @project.tickets.should be_an_instance_of(Array)
27
+ @project.tickets.first.should be_an_instance_of(@klass)
28
+ end
29
+
30
+ it "should be able to load all tickets based on an array of id's" do
31
+ @tickets = @project.tickets([42])
32
+ @tickets.should be_an_instance_of(Array)
33
+ @tickets.first.should be_an_instance_of(@klass)
34
+ @tickets.first.name.should == 'Ticket 1'
35
+ end
36
+
37
+ it "should be able to load all tickets based on attributes" do
38
+ @tickets = @project.tickets(:number => 42)
39
+ @tickets.should be_an_instance_of(Array)
40
+ @tickets.first.should be_an_instance_of(@klass)
41
+ @tickets.first.name.should == 'Ticket 1'
42
+ end
43
+
44
+ it "should return the ticket class" do
45
+ @project.ticket.should == @klass
46
+ end
47
+
48
+ it "should be able to load a single ticket" do
49
+ @ticket = @project.ticket(42)
50
+ @ticket.should be_an_instance_of(@klass)
51
+ @ticket.name.should == 'Ticket 1'
52
+ end
53
+
54
+ it "shoule be able to load a single ticket based on attributes" do
55
+ @ticket = @project.ticket(:number => 42)
56
+ @ticket.should be_an_instance_of(@klass)
57
+ @ticket.name.should == 'Ticket 1'
58
+ end
59
+
60
+ it "should be able to update and save a ticket" do
61
+ @ticket = @project.ticket(42)
62
+ @ticket.description = 'New card description'
63
+ @ticket.save.should == true
64
+ end
65
+
66
+ it "should be able to create a ticket" do
67
+ @ticket = @project.ticket!(:title => 'Ticket #12', :description => 'Body')
68
+ @ticket.should be_an_instance_of(@klass)
69
+ end
70
+
71
+ end