From 123a65da5c525133efb742949a29020e1e7b1358 Mon Sep 17 00:00:00 2001 From: Ronan Burke Date: Fri, 13 Oct 2023 18:44:34 +0100 Subject: [PATCH 1/2] Sponsorship README section --- .github/FUNDING.yml | 13 +++++++++++++ README.md | 23 +++++++++++++++++++---- art/mona.png | Bin 0 -> 28625 bytes 3 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 .github/FUNDING.yml create mode 100644 art/mona.png diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..0b48c3b --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,13 @@ +# These are supported funding model platforms + +github: BurkusCat +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] \ No newline at end of file diff --git a/README.md b/README.md index d3ef454..08451ce 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,21 @@ **⚠️ WARNING**: `Burkus.Mvvm.Maui` is currently an experimental library. The API will change frequently and there will be frequent backwards compatibility breaking changes. This library will be versioned as ["0.y.z"](https://semver.org/#spec-item-4) until a well-liked, stable API has been found. Only then would a version "1.y.z" and beyond be released. +# Supporting the Project 💖 +Mona the GitHub Sponsor Octocat smiling and holding a heart + +Hi there 👋 I'm Ronan Burke aka Burkus. I maintain this project during my spare time and I would love to be able to dedicate more time each month to supporting it! I would greatly appreciate if you would be able to [sponsor me on GitHub Sponsors](https://github.com/sponsors/BurkusCat). There are different rewards for each of the monthly or one-time sponsorship tiers such as: + +- a sponsorship badge 🪙 +- prioritized bug reports 🐛 +- pair-programming sessions, consulting, or mentorship 🧑‍🏫 +- shout-outs in this `README` 📢 +- ... and more + + + +
+ # Documentation 📗 See the `DemoApp` in the `/samples` folder of this repository for a full example of this library in action. The [demo app](/samples/DemoApp/) has examples of different types of navigation, configuring the library, using lifecycle events, passing parameters, and showing native dialogs. The [test project](/tests/DemoApp.UnitTests/) for the demo app demonstrates how you can write tests with code that calls this library. @@ -374,9 +389,7 @@ The below are some things of note that may help prevent issues from arising: - [IPageVisibilityEvents](https://github.com/BurkusCat/Burkus.Mvvm.Maui/issues/7) - [...and more](https://github.com/BurkusCat/Burkus.Mvvm.Maui/issues) -[Create an issue](https://github.com/BurkusCat/Burkus.Mvvm.Maui/issues/new/choose) to add your own suggestions. - -![Green letters: M V V M laid out vertically](art/MvvmVertical.png) +[Create an issue](https://github.com/BurkusCat/Burkus.Mvvm.Maui/issues/new/choose) to add your own suggestions. Or, support the project and help influence its direction by [sponsoring me](https://github.com/sponsors/BurkusCat). # Contributing 💁‍♀️ Contributions are very welcome! Please see the [contributing guide](CONTRIBUTING.MD) to get started. @@ -386,4 +399,6 @@ Contributions are very welcome! Please see the [contributing guide](CONTRIBUTING [![Build Demo App for CI](https://github.com/BurkusCat/Burkus.Mvvm.Maui/actions/workflows/ci-demo-app.yml/badge.svg)](https://github.com/BurkusCat/Burkus.Mvvm.Maui/actions/workflows/ci-demo-app.yml) # License 🪪 -The project is distributed under the [MIT license](LICENSE). Contributors do not need to sign a CLA. \ No newline at end of file +The project is distributed under the [MIT license](LICENSE). Contributors do not need to sign a CLA. + +![Green letters: M V V M laid out vertically](art/MvvmVertical.png) \ No newline at end of file diff --git a/art/mona.png b/art/mona.png new file mode 100644 index 0000000000000000000000000000000000000000..a48e6309a5be5996823b35fd932732cf8f143664 GIT binary patch literal 28625 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�U&e+^3&_m$K#pl!Z6J*arsk zIFQ|i?!_SAZM4YZmAF5LyPYjfnEC&jyDCOMH-R9k@c3r6dJOc~h4+Fm*BG?2Tb4R&|Xbf4z*jgsx)U=T;9}n^-Bm3MdTN%7@CAZ_fDvHo@Qo15>wa$_5exyZfomL_ zaBYn|f!XN$ED*#kAQCfk;31gT=q|^BfFtE$xcooGH7(HGeo62V2!@Bp*~-2G^C6s# z?y;LX%$ffNWeA8G1vk@DA-!FJOzT8)Lo?|3_T0}ISvFp5;Cu057-9r7ka|% z;3E(uHM~yO`5vdsiMV-X9Ef@(JPM=L0#20$KY<`Z>}g(m4h+Eq5Y#Srd}j@w1b5?o zE`-raH~PK_1POz!wJTD+)voIxE|wIBeHu{=`4RXAcQKgd=&hE#et{rr*jC>@uBUc+ zmZ#da2m*TvVmlrOq7R(;Ux4_(4qCjj(k~Fi20I&8kKa+hD%ay|-2ky2GdLvRO8-ZA zA8)`Y<-j<}A(#R|tg*Xs&G??0wmA^oV-Vj#0}TKVL3tkU;c~o}2}a)+fgouBPhjG< zx^{R1uFfuFY6wnsIa>ac?Yr^N^*-HHWp!`HcE-+sK8z4~ErY(`(VKp+76n%1Q3Xjql8t+xFV2=lEN z83Fx>t~>qb^F`%|E`dN0MZgf$daGSO^DhoYtD5jL@GZRN9q=+l_yR$^Vt3OTh6A}_UI!K|A{U~%O)+sr>b>|(bp#s2+o3CO&t@r*S9;j)-GQT(H@Dw6VMLl z?5=A0C%jI!(bpvq2u6Uurp|M>)wR!uH}LB)#Lun8U$BXX(bpjm2*SjkIcq2FYV4>( z?9M#>PuyqE9Q4)kSG7C`Ht~oqqpv|A5JZ5zbDoALu;Marwd-ZL^M}tOeufOchw!I& zOA`-)ATjXXycbe>XRj*msabwM;`w*ogOi5n8T55ITE35;JB)t60)ZgP*xl4IVS8PB zA&kI1-s(1P>**=P+~(`T*Gu3blzOUM(zsI~NJJnU7`Lmj!@RS8)i<`)uGrjD)Al}G o{f!X*%^qiKmRE{;1jFF}0sU7PE7oYZF8}}l07*qoM6N<$f+?S84FCWD literal 0 HcmV?d00001 From 0c5af9f73d12f22ddcce93951207ac005f27d3c2 Mon Sep 17 00:00:00 2001 From: Ronan Burke Date: Fri, 13 Oct 2023 22:02:50 +0100 Subject: [PATCH 2/2] Unit test actions --- .github/workflows/ci-demo-app.yml | 4 +++- .github/workflows/ci.yml | 6 ++++-- .../Models/NavigationParametersTests.cs | 3 +-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci-demo-app.yml b/.github/workflows/ci-demo-app.yml index 6b68151..1122b93 100644 --- a/.github/workflows/ci-demo-app.yml +++ b/.github/workflows/ci-demo-app.yml @@ -24,4 +24,6 @@ jobs: - name: Restore dependencies run: dotnet restore samples\DemoApp\DemoApp.sln - name: Build - run: dotnet build samples\DemoApp\DemoApp.sln -c Release \ No newline at end of file + run: dotnet build samples\DemoApp\DemoApp.sln -c Release + - name: Run Unit Tests + run: dotnet test tests\DemoApp.UnitTests\DemoApp.UnitTests.csproj --verbosity normal \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3c2cef5..0b14602 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,4 @@ -name: Build for CI +name: Build Library for CI on: push: @@ -24,4 +24,6 @@ jobs: - name: Restore dependencies run: dotnet restore src\Burkus.Mvvm.Maui.sln - name: Build - run: dotnet build src\Burkus.Mvvm.Maui.sln -c Release \ No newline at end of file + run: dotnet build src\Burkus.Mvvm.Maui.sln -c Release + - name: Run Unit Tests + run: dotnet test tests\Burkus.Mvvm.Maui.UnitTests\Burkus.Mvvm.Maui.UnitTests.csproj --verbosity normal \ No newline at end of file diff --git a/tests/Burkus.Mvvm.Maui.UnitTests/Models/NavigationParametersTests.cs b/tests/Burkus.Mvvm.Maui.UnitTests/Models/NavigationParametersTests.cs index 1e5546c..c06e7d0 100644 --- a/tests/Burkus.Mvvm.Maui.UnitTests/Models/NavigationParametersTests.cs +++ b/tests/Burkus.Mvvm.Maui.UnitTests/Models/NavigationParametersTests.cs @@ -211,13 +211,12 @@ public void ToQueryString_ForMultipleParameters_CreatesValidQueryString() { "param1", "value1" }, { "param2", 123 }, { "param3", true }, - { "param4", new DateTime(1994, 12, 12, 0, 0, 0, DateTimeKind.Utc) }, }; // Act var result = navigationParameters.ToQueryString(); // Assert - Assert.Equal("?param1=value1¶m2=123¶m3=True¶m4=12%2f12%2f1994+00%3a00%3a00", result); + Assert.Equal("?param1=value1¶m2=123¶m3=True", result); } } \ No newline at end of file