Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit 3d7a8d0

Browse files
committed
Add assignee to PullRequestModel so we can filter by it
1 parent 2d31d43 commit 3d7a8d0

File tree

4 files changed

+40
-11
lines changed

4 files changed

+40
-11
lines changed

src/GitHub.App/Models/PullRequestModel.cs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,21 @@
33
using GitHub.Primitives;
44
using GitHub.VisualStudio.Helpers;
55
using NullGuard;
6+
using System.Diagnostics;
67

78
namespace GitHub.Models
89
{
10+
[DebuggerDisplay("{DebuggerDisplay,nq}")]
911
public sealed class PullRequestModel : NotificationAwareObject, IPullRequestModel
1012
{
11-
public PullRequestModel(int number, string title, IAccount author, DateTimeOffset createdAt, DateTimeOffset? updatedAt = null)
13+
public PullRequestModel(int number, string title,
14+
IAccount author, [AllowNull]IAccount assignee,
15+
DateTimeOffset createdAt, DateTimeOffset? updatedAt = null)
1216
{
1317
Number = number;
1418
Title = title;
1519
Author = author;
20+
Assignee = assignee;
1621
CreatedAt = createdAt;
1722
UpdatedAt = updatedAt ?? CreatedAt;
1823
}
@@ -26,6 +31,7 @@ public void CopyFrom(IPullRequestModel other)
2631
CommentCount = other.CommentCount;
2732
HasNewComments = other.HasNewComments;
2833
IsOpen = other.IsOpen;
34+
Assignee = other.Assignee;
2935
}
3036

3137
public override bool Equals([AllowNull]object obj)
@@ -111,10 +117,28 @@ public bool HasNewComments
111117
public DateTimeOffset UpdatedAt { get; set; }
112118
public IAccount Author { get; set; }
113119

120+
IAccount assignee;
121+
[AllowNull]
122+
public IAccount Assignee
123+
{
124+
[return: AllowNull]
125+
get { return assignee; }
126+
set { assignee = value; this.RaisePropertyChange(); }
127+
}
128+
129+
114130
[return: AllowNull] // nullguard thinks a string.Format can return null. sigh.
115131
public override string ToString()
116132
{
117133
return string.Format(CultureInfo.InvariantCulture, "id:{0} title:{1} created:{2:u} updated:{3:u}", Number, Title, CreatedAt, UpdatedAt);
118134
}
135+
136+
internal string DebuggerDisplay
137+
{
138+
get
139+
{
140+
return string.Format(CultureInfo.InvariantCulture, "id:{0} title:{1} created:{2:u} updated:{3:u}", Number, Title, CreatedAt, UpdatedAt);
141+
}
142+
}
119143
}
120144
}

src/GitHub.App/Services/ModelService.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ IPullRequestModel Create(PullRequestCacheItem prCacheItem)
264264
prCacheItem.Number,
265265
prCacheItem.Title,
266266
Create(prCacheItem.Author),
267+
prCacheItem.Assignee != null ? Create(prCacheItem.Assignee) : null,
267268
prCacheItem.CreatedAt,
268269
prCacheItem.UpdatedAt)
269270
{
@@ -357,6 +358,7 @@ public PullRequestCacheItem(PullRequest pr)
357358
Number = pr.Number;
358359
CommentCount = pr.Comments;
359360
Author = new AccountCacheItem(pr.User);
361+
Assignee = pr.Assignee != null ? new AccountCacheItem(pr.Assignee) : null;
360362
CreatedAt = pr.CreatedAt;
361363
UpdatedAt = pr.UpdatedAt;
362364
IsOpen = pr.State == ItemState.Open;
@@ -370,6 +372,8 @@ public PullRequestCacheItem(PullRequest pr)
370372
public int CommentCount { get; set; }
371373
[AllowNull]
372374
public AccountCacheItem Author {[return: AllowNull] get; set; }
375+
[AllowNull]
376+
public AccountCacheItem Assignee { [return: AllowNull] get; set; }
373377
public DateTimeOffset CreatedAt { get; set; }
374378
public DateTimeOffset UpdatedAt { get; set; }
375379
public bool IsOpen { get; set; }

src/GitHub.Exports/Models/IPullRequestModel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@ public interface IPullRequestModel : ICopyable<IPullRequestModel>,
1414
DateTimeOffset CreatedAt { get; }
1515
DateTimeOffset UpdatedAt { get; }
1616
IAccount Author { get; }
17+
IAccount Assignee { get; }
1718
}
1819
}

src/UnitTests/GitHub.App/Models/PullRequestModelTests.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public void ComparisonNullEqualsNull()
3434
[Fact]
3535
public void ComparisonBiggerThanNull()
3636
{
37-
PullRequestModel left = new PullRequestModel(0, "", Substitute.For<IAccount>(), Now, Now);
37+
PullRequestModel left = new PullRequestModel(0, "", Substitute.For<IAccount>(), Substitute.For<IAccount>(), Now, Now);
3838
PullRequestModel right = null;
3939
Assert.False(left == right);
4040
Assert.True(left != right);
@@ -46,7 +46,7 @@ public void ComparisonBiggerThanNull()
4646
public void ComparisonNullLowerThan()
4747
{
4848
PullRequestModel left = null;
49-
PullRequestModel right = new PullRequestModel(0, "", Substitute.For<IAccount>(), Now, Now);
49+
PullRequestModel right = new PullRequestModel(0, "", Substitute.For<IAccount>(), Substitute.For<IAccount>(), Now, Now);
5050
Assert.False(left == right);
5151
Assert.True(left != right);
5252
Assert.False(left > right);
@@ -56,8 +56,8 @@ public void ComparisonNullLowerThan()
5656
[Fact]
5757
public void ComparisonLowerThan()
5858
{
59-
PullRequestModel left = new PullRequestModel(0, "", Substitute.For<IAccount>(), Now, Now + TimeSpan.FromMilliseconds(1));
60-
PullRequestModel right = new PullRequestModel(0, "", Substitute.For<IAccount>(), Now, Now + TimeSpan.FromMilliseconds(2));
59+
PullRequestModel left = new PullRequestModel(0, "", Substitute.For<IAccount>(), Substitute.For<IAccount>(), Now, Now + TimeSpan.FromMilliseconds(1));
60+
PullRequestModel right = new PullRequestModel(0, "", Substitute.For<IAccount>(), Substitute.For<IAccount>(), Now, Now + TimeSpan.FromMilliseconds(2));
6161
Assert.False(left == right);
6262
Assert.True(left != right);
6363
Assert.False(left > right);
@@ -67,8 +67,8 @@ public void ComparisonLowerThan()
6767
[Fact]
6868
public void ComparisonGreaterThan()
6969
{
70-
PullRequestModel left = new PullRequestModel(0, "", Substitute.For<IAccount>(), Now, Now + TimeSpan.FromMilliseconds(3));
71-
PullRequestModel right = new PullRequestModel(0, "", Substitute.For<IAccount>(), Now, Now + TimeSpan.FromMilliseconds(2));
70+
PullRequestModel left = new PullRequestModel(0, "", Substitute.For<IAccount>(), Substitute.For<IAccount>(), Now, Now + TimeSpan.FromMilliseconds(3));
71+
PullRequestModel right = new PullRequestModel(0, "", Substitute.For<IAccount>(), Substitute.For<IAccount>(), Now, Now + TimeSpan.FromMilliseconds(2));
7272
Assert.False(left == right);
7373
Assert.True(left != right);
7474
Assert.True(left > right);
@@ -78,8 +78,8 @@ public void ComparisonGreaterThan()
7878
[Fact]
7979
public void ComparisonEquals()
8080
{
81-
PullRequestModel left = new PullRequestModel(1, "", Substitute.For<IAccount>(), Now, Now + TimeSpan.FromMilliseconds(1));
82-
PullRequestModel right = new PullRequestModel(1, "", Substitute.For<IAccount>(), Now, Now + TimeSpan.FromMilliseconds(1));
81+
PullRequestModel left = new PullRequestModel(1, "", Substitute.For<IAccount>(), Substitute.For<IAccount>(), Now, Now + TimeSpan.FromMilliseconds(1));
82+
PullRequestModel right = new PullRequestModel(1, "", Substitute.For<IAccount>(), Substitute.For<IAccount>(), Now, Now + TimeSpan.FromMilliseconds(1));
8383
Assert.True(left == right);
8484
Assert.False(left != right);
8585
Assert.False(left > right);
@@ -91,8 +91,8 @@ public void ComparisonEquals()
9191
[InlineData(1, 1, 2, 1)]
9292
public void ComparisonNotEquals(int id1, int ms1, int id2, int ms2)
9393
{
94-
PullRequestModel left = new PullRequestModel(id1, "", Substitute.For<IAccount>(), Now, Now + TimeSpan.FromMilliseconds(ms1));
95-
PullRequestModel right = new PullRequestModel(id2, "", Substitute.For<IAccount>(), Now, Now + TimeSpan.FromMilliseconds(ms2));
94+
PullRequestModel left = new PullRequestModel(id1, "", Substitute.For<IAccount>(), Substitute.For<IAccount>(), Now, Now + TimeSpan.FromMilliseconds(ms1));
95+
PullRequestModel right = new PullRequestModel(id2, "", Substitute.For<IAccount>(), Substitute.For<IAccount>(), Now, Now + TimeSpan.FromMilliseconds(ms2));
9696
Assert.False(left == right);
9797
Assert.True(left != right);
9898
}

0 commit comments

Comments
 (0)