Skip to content

Commit bd2e792

Browse files
authored
Merge pull request #16 from elrhomariyounes/filterstests
Chore : Add tests for some filters
2 parents 5c66f04 + 8dd98de commit bd2e792

File tree

2 files changed

+145
-1
lines changed

2 files changed

+145
-1
lines changed

PostgrestTests/Api.cs

Lines changed: 115 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -524,11 +524,125 @@ public async Task TestInFilter()
524524
var usersResponse = await client.Table<User>().Get();
525525

526526
var supaFilteredUsers = filteredResponse.Models;
527-
var linqFilteredUsers = usersResponse.Models.Where(u => u.Username == "supabot" || u.Username == "kiwicopple").OrderByDescending(u => u.Username).ToList();
527+
var linqFilteredUsers = usersResponse.Models.Where(u => u.Username == "supabot" || u.Username == "kiwicopple").ToList();
528528

529529
CollectionAssert.AreEqual(linqFilteredUsers, supaFilteredUsers);
530530
}
531531

532+
[TestMethod("filters: eq")]
533+
public async Task TestEqualsFilter()
534+
{
535+
var client = Client.Instance.Initialize(baseUrl, new ClientAuthorization(AuthorizationType.Open, null));
536+
537+
var filteredResponse = await client.Table<User>().Filter("username", Operator.Equals, "supabot").Get();
538+
var usersResponse = await client.Table<User>().Get();
539+
540+
var supaFilteredUsers = filteredResponse.Models;
541+
var linqFilteredUsers = usersResponse.Models.Where(u => u.Username == "supabot").ToList();
542+
543+
Assert.AreEqual(1, supaFilteredUsers.Count);
544+
CollectionAssert.AreEqual(linqFilteredUsers, supaFilteredUsers);
545+
}
546+
547+
[TestMethod("filters: gt")]
548+
public async Task TestGreaterThanFilter()
549+
{
550+
var client = Client.Instance.Initialize(baseUrl, new ClientAuthorization(AuthorizationType.Open, null));
551+
552+
var filteredResponse = await client.Table<Message>().Filter("id", Operator.GreaterThan, "1").Get();
553+
var messagesResponse = await client.Table<Message>().Get();
554+
555+
var supaFilteredMessages = filteredResponse.Models;
556+
var linqFilteredMessages = messagesResponse.Models.Where(m => m.Id > 1).ToList();
557+
558+
Assert.AreEqual(1, supaFilteredMessages.Count);
559+
CollectionAssert.AreEqual(linqFilteredMessages, supaFilteredMessages);
560+
}
561+
562+
[TestMethod("filters: gte")]
563+
public async Task TestGreaterThanOrEqualFilter()
564+
{
565+
var client = Client.Instance.Initialize(baseUrl, new ClientAuthorization(AuthorizationType.Open, null));
566+
567+
var filteredResponse = await client.Table<Message>().Filter("id", Operator.GreaterThanOrEqual, "1").Get();
568+
var messagesResponse = await client.Table<Message>().Get();
569+
570+
var supaFilteredMessages = filteredResponse.Models;
571+
var linqFilteredMessages = messagesResponse.Models.Where(m => m.Id >= 1).ToList();
572+
573+
CollectionAssert.AreEqual(linqFilteredMessages, supaFilteredMessages);
574+
}
575+
576+
[TestMethod("filters: lt")]
577+
public async Task TestlessThanFilter()
578+
{
579+
var client = Client.Instance.Initialize(baseUrl, new ClientAuthorization(AuthorizationType.Open, null));
580+
581+
var filteredResponse = await client.Table<Message>().Filter("id", Operator.LessThan, "2").Get();
582+
var messagesResponse = await client.Table<Message>().Get();
583+
584+
var supaFilteredMessages = filteredResponse.Models;
585+
var linqFilteredMessages = messagesResponse.Models.Where(m => m.Id < 2).ToList();
586+
587+
CollectionAssert.AreEqual(linqFilteredMessages, supaFilteredMessages);
588+
}
589+
590+
[TestMethod("filters: lte")]
591+
public async Task TestLessThanOrEqualFilter()
592+
{
593+
var client = Client.Instance.Initialize(baseUrl, new ClientAuthorization(AuthorizationType.Open, null));
594+
595+
var filteredResponse = await client.Table<Message>().Filter("id", Operator.LessThanOrEqual, "2").Get();
596+
var messagesResponse = await client.Table<Message>().Get();
597+
598+
var supaFilteredMessages = filteredResponse.Models;
599+
var linqFilteredMessages = messagesResponse.Models.Where(m => m.Id <= 2).ToList();
600+
601+
CollectionAssert.AreEqual(linqFilteredMessages, supaFilteredMessages);
602+
}
603+
604+
[TestMethod("filters: nqe")]
605+
public async Task TestNotEqualFilter()
606+
{
607+
var client = Client.Instance.Initialize(baseUrl, new ClientAuthorization(AuthorizationType.Open, null));
608+
609+
var filteredResponse = await client.Table<Message>().Filter("id", Operator.NotEqual, "2").Get();
610+
var messagesResponse = await client.Table<Message>().Get();
611+
612+
var supaFilteredMessages = filteredResponse.Models;
613+
var linqFilteredMessages = messagesResponse.Models.Where(m => m.Id != 2).ToList();
614+
615+
CollectionAssert.AreEqual(linqFilteredMessages, supaFilteredMessages);
616+
}
617+
618+
[TestMethod("filters: like")]
619+
public async Task TestLikeFilter()
620+
{
621+
var client = Client.Instance.Initialize(baseUrl, new ClientAuthorization(AuthorizationType.Open, null));
622+
623+
var filteredResponse = await client.Table<Message>().Filter("username", Operator.Like, "s%").Get();
624+
var messagesResponse = await client.Table<Message>().Get();
625+
626+
var supaFilteredMessages = filteredResponse.Models;
627+
var linqFilteredMessages = messagesResponse.Models.Where(m => m.UserName.StartsWith('s')).ToList();
628+
629+
CollectionAssert.AreEqual(linqFilteredMessages, supaFilteredMessages);
630+
}
631+
632+
[TestMethod("filters: ilike")]
633+
public async Task TestILikeFilter()
634+
{
635+
var client = Client.Instance.Initialize(baseUrl, new ClientAuthorization(AuthorizationType.Open, null));
636+
637+
var filteredResponse = await client.Table<Message>().Filter("username", Operator.ILike, "%SUPA%").Get();
638+
var messagesResponse = await client.Table<Message>().Get();
639+
640+
var supaFilteredMessages = filteredResponse.Models;
641+
var linqFilteredMessages = messagesResponse.Models.Where(m => m.UserName.Contains("SUPA",StringComparison.OrdinalIgnoreCase)).ToList();
642+
643+
CollectionAssert.AreEqual(linqFilteredMessages, supaFilteredMessages);
644+
}
645+
532646
[TestMethod("select: basic")]
533647
public async Task TestSelect()
534648
{

PostgrestTests/Models/Message.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
using Postgrest.Attributes;
2+
using Postgrest.Models;
3+
using System;
4+
5+
namespace PostgrestTests.Models
6+
{
7+
[Table("messages")]
8+
public class Message : BaseModel
9+
{
10+
[PrimaryKey("id")]
11+
public int Id { get; set; }
12+
13+
[Column("username")]
14+
public string UserName { get; set; }
15+
16+
[Column("channel_id")]
17+
public int ChannelId { get; set; }
18+
19+
public override bool Equals(object obj)
20+
{
21+
return obj is Message message &&
22+
Id == message.Id;
23+
}
24+
25+
public override int GetHashCode()
26+
{
27+
return HashCode.Combine(Id);
28+
}
29+
}
30+
}

0 commit comments

Comments
 (0)