public static ICkanApi CkanApi()
 {
     var ckanApi = new CkanApi(new CkanHttpClient(
                  CkanApplicationConfiguration.CkanRepositoryHostname,
                  CkanApplicationConfiguration.CkanRepositoryApiKey));
     return ckanApi;
 }
        public void GetGroupIds_Returns_Id_List()
        {
            // Arrange: mock HTTP client
            var mock = new Moq.Mock<ICkanHttpClient>();
            var json = CkanTestHelper.GetExampleResponseFromFile("group_list.json");
            var requestParameters = new Dictionary<string, string>();
            mock.Setup(x => x.GetAction(ActionNames.GroupList, requestParameters))
                .Returns(json);

            // Act: get group ids
            var ids = new CkanApi(mock.Object).GetGroupIds();

            // Assert
            Assert.IsTrue(ids.Contains("phof"));
        }
        public void GetOrganisation_Returns_Organisation()
        {
            // Arrange: mock HTTP client
            var organisationName = OrganisationNames.PublicHealthEngland;
            var mock = new Moq.Mock<ICkanHttpClient>();
            var json = CkanTestHelper.GetExampleResponseFromFile("organization_show.json");
            var requestParameters = new Dictionary<string, string> { { "id", organisationName } };
            mock.Setup(x => x.GetAction(ActionNames.OrganizationShow, requestParameters))
                .Returns(json);

            // Act: get organisation
            var organisation = new CkanApi(mock.Object).GetOrganization(organisationName);

            // Assert
            Assert.AreEqual(organisationName, organisation.Name);
        }
        public void GetPackage_Returns_Package()
        {
            const string packageId = "phe-indicator-19-90366";

            // Arrange: mock HTTP client
            var mock = new Moq.Mock<ICkanHttpClient>();
            var json = CkanTestHelper.GetExampleResponseFromFile("package_show.json");
            var requestParameters = new Dictionary<string, string> { { "id", packageId } };
            mock.Setup(x => x.GetAction(ActionNames.PackageShow, requestParameters))
                .Returns(json);

            // Act: get package
            var package = new CkanApi(mock.Object).GetPackage(packageId);

            // Assert
            Assert.AreEqual(packageId, package.Name);
        }
        public void GetPackage_Returns_Null_If_Not_Found()
        {
            const string packageId = "not-a-valid-id";

            // Arrange: mock HTTP client
            var mock = new Moq.Mock<ICkanHttpClient>();
            var json = CkanTestHelper.GetExampleResponseFromFile("package_show_not_found.json");
            var requestParameters = new Dictionary<string, string> { { "id", packageId } };
            mock.Setup(x => x.GetAction(ActionNames.PackageShow, requestParameters))
                .Returns(json);

            // Act: get package
            var package = new CkanApi(mock.Object).GetPackage(packageId);

            Assert.IsNull(package);
        }
        public void GetCreateResource_Returns_Resource()
        {
            // Arrange: mock HTTP client
            var mock = new Moq.Mock<ICkanHttpClient>();
            var json = CkanTestHelper.GetExampleResponseFromFile("resource_create.json");
            var requestResource = new CkanResource();
            mock.Setup(x => x.UploadResource(ActionNames.ResourceCreate, requestResource))
                .Returns(json);

            // Act: get package
            var resource = new CkanApi(mock.Object).CreateResource(requestResource);

            // Assert
            Assert.AreEqual("Metadata", resource.Name);
            Assert.AreEqual(2015, resource.Created.Year);
            Assert.AreEqual("6ff56435-b348-46f3-83fb-c1378cc0c39c", resource.ResourceGroupId);
        }
        public void GetUpdatePackage_Returns_Package()
        {
            // Arrange: mock HTTP client
            var mock = new Moq.Mock<ICkanHttpClient>();
            var json = CkanTestHelper.GetExampleResponseFromFile("update_package.json");
            var requestPackage = new CkanPackage();
            mock.Setup(x => x.PostAction(ActionNames.PackageUpdate, requestPackage))
                .Returns(json);

            // Act: get package
            var package = new CkanApi(mock.Object).UpdatePackage(requestPackage);

            // Assert
            Assert.AreEqual("phe-indicator-19-22402", package.Name);
        }
        public void GetGroup_Returns_Null_If_Not_Found()
        {
            // Arrange: mock HTTP client
            var mock = new Moq.Mock<ICkanHttpClient>();
            var json = CkanTestHelper.GetExampleResponseFromFile("group_show_not_found.json");
            var requestParameters = new Dictionary<string, string> { { "id", groupId } };
            mock.Setup(x => x.GetAction(ActionNames.GroupShow, requestParameters))
                .Returns(json);

            // Act: get package
            var ckanGroup = new CkanApi(mock.Object).GetGroup(groupId);

            // Assert
            Assert.IsNull(ckanGroup);
        }
        public void GetGroup_Returns_Group()
        {
            // Arrange: mock HTTP client
            var mock = new Moq.Mock<ICkanHttpClient>();
            var json = CkanTestHelper.GetExampleResponseFromFile("group_show.json");
            var requestParameters = new Dictionary<string, string> { { "id", groupId } };
            mock.Setup(x => x.GetAction(ActionNames.GroupShow, requestParameters))
                .Returns(json);

            // Act: get package
            var ckanGroup = new CkanApi(mock.Object).GetGroup(groupId);

            // Assert
            Assert.AreEqual(groupId, ckanGroup.Name);
            Assert.AreEqual(152, ckanGroup.PackageCount);
            Assert.AreEqual(ckanGroup.PackageCount, ckanGroup.Packages.Count);
        }