{"id":15546699,"url":"https://github.com/klisiewicz/fluent-assertions","last_synced_at":"2025-04-23T18:09:41.987Z","repository":{"id":50988010,"uuid":"274069652","full_name":"klisiewicz/fluent-assertions","owner":"klisiewicz","description":"The Fluent Assertions library written in Dart.","archived":false,"fork":false,"pushed_at":"2025-01-01T10:56:12.000Z","size":72,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-23T18:09:35.972Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/klisiewicz.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-22T07:31:24.000Z","updated_at":"2025-01-01T10:54:40.000Z","dependencies_parsed_at":"2024-12-29T11:26:47.115Z","dependency_job_id":"f736b2c6-713f-402d-ba56-ee90f306a359","html_url":"https://github.com/klisiewicz/fluent-assertions","commit_stats":{"total_commits":7,"total_committers":2,"mean_commits":3.5,"dds":0.2857142857142857,"last_synced_commit":"838e44fb4a4e41ced579f9a61e5641553082f811"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klisiewicz%2Ffluent-assertions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klisiewicz%2Ffluent-assertions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klisiewicz%2Ffluent-assertions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klisiewicz%2Ffluent-assertions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/klisiewicz","download_url":"https://codeload.github.com/klisiewicz/fluent-assertions/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250487531,"owners_count":21438612,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-02T13:03:36.682Z","updated_at":"2025-04-23T18:09:41.970Z","avatar_url":"https://github.com/klisiewicz.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"The [Fluent Assertions](https://fluentassertions.com/) library written in Dart.\n\nIt uses Dart's [Extension Functions](https://dart.dev/guides/language/extension-methods) to provide a fluent wrapper around test assertions.\n\n## Usage\n\n#### Basic Assertions\n\nThese assertions are available for all objects.\n\n##### Equality\n\n```dart\n'Hello'.shouldBeEqualTo('Hello');\n```\n```dart\n'Hello'.shouldNotBeEqualTo('Word');\n```\n\n##### Reference equality\n\n```dart\nfinal me = Person(name: 'Karol');\nfinal someoneElse = Person(name: 'Karol');\nme.shouldBe(me);\nme.shouldNotBe(someoneElse);\n```\n\n##### Subtypes\n\n```dart\nconst num numberOfGirlsIAttract = 0;\nnumberOfGirlsIAttract.shouldBeInstanceOf\u003cint\u003e();\nnumberOfGirlsIAttract.shouldNotBeInstanceOf\u003cdouble\u003e();\n```\n\n##### Nullability\n\n```dart\nconst hello = 'Hello';\nhello.shouldNotBeNull();\n```\n\n```dart\nconst hello = null;\nhello.shouldBeNull();\n```\n\n##### Booleans\n\n```dart\nconst hasChildren = true;\nhasChildren.shouldBeTrue();\nhasChildren.shouldNotBeFalse();\n```\n```dart\nconst hasChildren = false;\nhasChildren.shouldBeFalse();\nhasChildren.shouldNotBeTrue();\n```\n\n#### Numerical Assertions\n\n```dart\n2.shouldBeGreaterOrEqualTo(2);\n```\n\n```dart\n2.shouldBeGreaterThan(1);\n```\n\n```dart\n2.shouldBeLessOrEqualTo(2);\n```\n\n```dart\n1.shouldBeLessThan(2);\n```\n\n```dart\n1.shouldBePositive();\n1.shouldNotBeNegative();\n```\n\n```dart\n(-1).shouldBeNegative();\n(-1).shouldNotBePositive();\n```\n\n```dart\n0.shouldBeZero();\n1.shouldNotBeZero();\n```\n\n```dart\n0.999.shouldBeNear(1, delta: 0.01);\n```\n\n```dart\n0.shouldNotBeInRange(lowerBound: 1, upperBound: 6);\n1.shouldBeInRange(lowerBound: 1, upperBound: 6);\n```\n\n#### String Assertions\n\n```dart\n'Flutter'.shouldBeEqualToIgnoringCase('FLUTTER');\n'Flutter'.shouldNotBeEqualToIgnoringCase('Xamarin');\n```\n\n```dart\n'Flutter rules'.shouldStartWith('Flutter');\n'Flutter rules'.shouldNotStartWith('Xamarin');\n```\n\n```dart\n'Flutter rules'.shouldStartWithIgnoringCase('FLUTTER');\n'Flutter rules'.shouldNotStartWithIgnoringCase('Xamarin');\n```\n\n```dart\n'I love Flutter'.shouldEndWith('Flutter');\n'I love Flutter'.shouldNotEndWith('Xamarin');\n```\n\n```dart\n'I love Flutter'.shouldEndWithIgnoringCase('flutter');\n'I love Flutter'.shouldNotEndWithIgnoringCase('xamarin');\n```\n\n```dart\n'I love Flutter'.shouldContain('love');\n'I love Flutter'.shouldNotContain('hate');\n```\n\n```dart\n'I love Flutter'.shouldContainIgnoringCase('LOVE');\n'I love Flutter'.shouldNotContainIgnoringCase('HATE');\n```\n\n```dart\n'I love Flutter'.shouldContainAll(['Flutter', 'love']);\n'I love Flutter'.shouldContainAllIgnoringCase(['flutter', 'love']);\n```\n\n```dart\n'I love Flutter'.shouldContainAllInOrder(['love', 'Flutter']);\n'I love Flutter'.shouldContainAllInOrderIgnoringCase(['Love', 'Flutter']);\n```\n\n```dart\n'12345'.shouldMatch(r'\\d');\n'Hello'.shouldNotMatch(r'\\d');\n```\n\n```dart\n''.shouldBeEmpty()\n'name'.shouldNotBeEmpty()\n```\n\n```dart\n''.shouldBeNullOrEmpty()\n'name'.shouldNotBeNullOrEmpty()\n```\n\n```dart\n' '.shouldBeBlank()\n'name'.shouldNotBeBlank()\n```\n\n```dart\n' '.shouldBeNullOrBlank()\n'name'.shouldNotBeNullOrBlank()\n```\n\n#### Iterable Assertions\n\n```dart\n['Flutter', 'React Native', 'Jetpack Compose'].shouldContain('Flutter');\n['Flutter', 'React Native', 'Jetpack Compose'].shouldContainIgnoringCase('flutter');\n```\n\n```dart\n['Flutter', 'React Native', 'Jetpack Compose'].shouldNotContain('Vue');\n['Flutter', 'React Native', 'Jetpack Compose'].shouldNotContainIgnoringCase('vue');\n```\n\n```dart\n['Flutter', 'React Native', 'Jetpack Compose'].shouldContainAny(['Flutter', 'Vue']);\n['Flutter', 'React Native', 'Jetpack Compose'].shouldContainAnyIgnoringCase(['react native']);\n```\n\n```dart\n['Flutter', 'React Native', 'Jetpack Compose'].shouldContainNone(['Angular', 'Vue'])\n['Flutter', 'React Native', 'Jetpack Compose'].shouldContainNoneIgnoringCase(['angular', 'vue']);\n```\n\n```dart\n['Flutter', 'React Native', 'Jetpack Compose'].shouldContainAll(['Jetpack Compose', 'React Native']);\n['Flutter', 'React Native', 'Jetpack Compose'].shouldContainAllIgnoringCase(['jetpack compose', 'react native']);\n```\n\n```dart\n['Flutter', 'React Native', 'Jetpack Compose'].shouldContainAllInOrder(['Flutter', 'React Native']);\n['Flutter', 'React Native', 'Jetpack Compose'].shouldContainAllInOrderIgnoringCase(['flutter', 'react native']);\n```\n\n```dart\n['Flutter', 'React Native', 'Jetpack Compose'].shouldContainAllThat((framework) =\u003e framework.startsWith(RegExp('[A-Z]')));\n['Flutter', 'React Native', 'Jetpack Compose'].shouldContainAnyThat((framework) =\u003e framework.contains('React'));\n['Flutter', 'React Native', 'Jetpack Compose'].shouldContainNoneThat((framework) =\u003e framework.isEmpty);\n```\n\n## Features and bugs\n\nPlease file feature requests and bugs at the [issue tracker](https://github.com/klisiewicz/fluent-assertions/issues).\n\n## Author\n- [Karol Lisiewicz](https://github.com/klisiewicz)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fklisiewicz%2Ffluent-assertions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fklisiewicz%2Ffluent-assertions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fklisiewicz%2Ffluent-assertions/lists"}