public void ShouldDeserializeActivityCorrectly() { // Given string courseResultJson = "{\"result\":{\"event_array\":[{\"break_length\":\"00:30\",\"end_time\":\"15:50\",\"id\":1,\"length\":\"01:30\",\"room\":\"A\",\"room_id\":1,\"start_time\":\"14:20\",\"weekday\":1}],\"event_count\":1,\"id\":1,\"students_array\":[{\"group\":\"1\",\"groups\":\"2\",\"id\":1,\"name\":\"A\"}],\"students_count\":1,\"subject\":\"A\",\"subject_id\":1,\"teacher_array\":[{\"id\":1,\"name\":\"A\"}],\"teacher_count\":1},\"status\":\"ok\"}"; // When EntityApiResponse <Activity> parsedEntities = JsonProcessor.GetObjectFromStream <EntityApiResponse <Activity> >( new MemoryStream(Encoding.UTF8.GetBytes(courseResultJson))); // Then parsedEntities.Should().NotBeNull(); parsedEntities.Result.Should().NotBeNull(); parsedEntities.Result.Id.Should().Be(1); parsedEntities.Result.Subject.Should().Be("A"); parsedEntities.Result.SubjectId.Should().Be(1); parsedEntities.Result.Teachers.Should().Contain(z => z.Name == "A" && z.Id == 1); parsedEntities.Result.CourseGroups.Should().Contain(z => z.GroupId == 1 && z.Id == 1 && z.Name == "A" && z.TotalGroups == 2); parsedEntities.Result.Events.Should().Contain(z => z.BreakLength == "00:30" && z.Day == WeekDay.Monday && z.Duration == "01:30" && z.Ends == "15:50" && z.Id == 1 && z.RoomId == 1 && z.RoomName == "A" && z.Start == "14:20"); }
private static void ValidateResponse(EntityApiResponse <Teacher> apiResponse) { if (apiResponse?.Status.ToLower() != "ok") { throw new InvalidOperationException(apiResponse?.Error); } if (apiResponse.Result is null) { throw new InvalidCastException( "Something wrong happened, server sent response that does not match predefined structure. Notify me about this bug by creating an issue at project page on GitHub."); } }
public async Task <Teacher> Get(int id) { Uri teacherUri = new Uri(_configuration.BaseApiUri, _configuration.Endpoints[EndpointType.Teacher]); string jsonBody = JsonProcessor.GetStringFromObject(new IntRequest(id)); HttpResponseMessage responseMessage = await RequestMaker.GetResource(teacherUri, jsonBody); EntityApiResponse <Teacher> apiResponse = JsonProcessor.GetObjectFromStream <EntityApiResponse <Teacher> >(await responseMessage.Content .ReadAsStreamAsync()); ValidateResponse(apiResponse); return(apiResponse.Result); }
public void ShouldDeserializeCourseCorrectly() { // Given string courseResultJson = "{\"result\":{\"id\":1,\"name\":\"A\"},\"status\":\"ok\"}"; // When EntityApiResponse <Course> parsedEntities = JsonProcessor.GetObjectFromStream <EntityApiResponse <Course> >( new MemoryStream(Encoding.UTF8.GetBytes(courseResultJson))); // Then parsedEntities.Should().NotBeNull(); parsedEntities.Result.Should().NotBeNull(); parsedEntities.Result.Id.Should().Be(1); parsedEntities.Result.Name.Should().Be("A"); }
public void ShouldDeserializeRoomCorrectly() { // Given string roomResultJson = "{\"result\":{\"department_id\":1,\"id\":1,\"name\":\"A\",\"quanitiy\":1},\"status\":\"ok\"}"; // When EntityApiResponse <Room> parsedEntities = JsonProcessor.GetObjectFromStream <EntityApiResponse <Room> >( new MemoryStream(Encoding.UTF8.GetBytes(roomResultJson))); // Then parsedEntities.Should().NotBeNull(); parsedEntities.Result.Should().NotBeNull(); parsedEntities.Result.Id.Should().Be(1); parsedEntities.Result.Name.Should().Be("A"); parsedEntities.Result.DepartmentId.Should().Be(1); parsedEntities.Result.Capacity.Should().Be(1); }
public void ShouldDeserializeTeacherCorrectly() { // Given string teacherResultJson = "{\"result\":{\"degree\":\"A\",\"department_id\":1,\"first_name\":\"A\",\"id\":1,\"last_name\":\"A\"},\"status\":\"ok\"}"; // When EntityApiResponse <Teacher> parsedEntities = JsonProcessor.GetObjectFromStream <EntityApiResponse <Teacher> >( new MemoryStream(Encoding.UTF8.GetBytes(teacherResultJson))); // Then parsedEntities.Should().NotBeNull(); parsedEntities.Result.Should().NotBeNull(); parsedEntities.Result.Id.Should().Be(1); parsedEntities.Result.Degree.Should().Be("A"); parsedEntities.Result.DepartmentId.Should().Be(1); parsedEntities.Result.FirstName.Should().Be("A"); parsedEntities.Result.LastName.Should().Be("A"); }