public async Task Test_DeviceObjectJsonWriter_WriteObject_StringWriter_Exceptions()
 {
     var                   traktJsonWriter = new DeviceObjectJsonWriter();
     ITraktDevice          traktDevice     = new TraktDevice();
     Func <Task <string> > action          = () => traktJsonWriter.WriteObjectAsync(default(StringWriter), traktDevice);
     await action.Should().ThrowAsync <ArgumentNullException>();
 }
        public async Task Test_DeviceObjectJsonWriter_WriteObject_Object_Empty()
        {
            ITraktDevice traktDevice     = new TraktDevice();
            var          traktJsonWriter = new DeviceObjectJsonWriter();
            string       json            = await traktJsonWriter.WriteObjectAsync(traktDevice);

            json.Should().Be("{}");
        }
        public void Test_DeviceObjectJsonWriter_WriteObject_Object_Exceptions()
        {
            var                   traktJsonWriter = new DeviceObjectJsonWriter();
            ITraktDevice          traktDevice     = new TraktDevice();
            Func <Task <string> > action          = () => traktJsonWriter.WriteObjectAsync(default(ITraktDevice));

            action.Should().Throw <ArgumentNullException>();
        }
        public async Task Test_DeviceObjectJsonWriter_WriteObject_StringWriter_Empty()
        {
            ITraktDevice traktDevice = new TraktDevice();

            using (var stringWriter = new StringWriter())
            {
                var    traktJsonWriter = new DeviceObjectJsonWriter();
                string json            = await traktJsonWriter.WriteObjectAsync(stringWriter, traktDevice);

                json.Should().Be("{}");
            }
        }
        public async Task Test_DeviceObjectJsonWriter_WriteObject_Object_Only_IntervalInSeconds_Property()
        {
            ITraktDevice traktDevice = new TraktDevice
            {
                IntervalInSeconds = 600
            };

            var    traktJsonWriter = new DeviceObjectJsonWriter();
            string json            = await traktJsonWriter.WriteObjectAsync(traktDevice);

            json.Should().Be(@"{""interval"":600}");
        }
        public async Task Test_DeviceObjectJsonWriter_WriteObject_Object_Only_ExpiresInSeconds_Property()
        {
            ITraktDevice traktDevice = new TraktDevice
            {
                ExpiresInSeconds = 7200
            };

            var    traktJsonWriter = new DeviceObjectJsonWriter();
            string json            = await traktJsonWriter.WriteObjectAsync(traktDevice);

            json.Should().Be(@"{""expires_in"":7200}");
        }
        public async Task Test_DeviceObjectJsonWriter_WriteObject_Object_Only_VerificationUrl_Property()
        {
            ITraktDevice traktDevice = new TraktDevice
            {
                VerificationUrl = "mockUrl"
            };

            var    traktJsonWriter = new DeviceObjectJsonWriter();
            string json            = await traktJsonWriter.WriteObjectAsync(traktDevice);

            json.Should().Be(@"{""verification_url"":""mockUrl""}");
        }
        public async Task Test_DeviceObjectJsonWriter_WriteObject_Object_Only_UserCode_Property()
        {
            ITraktDevice traktDevice = new TraktDevice
            {
                UserCode = "mockUserCode"
            };

            var    traktJsonWriter = new DeviceObjectJsonWriter();
            string json            = await traktJsonWriter.WriteObjectAsync(traktDevice);

            json.Should().Be(@"{""user_code"":""mockUserCode""}");
        }
        public async Task Test_DeviceObjectJsonWriter_WriteObject_JsonWriter_Empty()
        {
            ITraktDevice traktDevice = new TraktDevice();

            using (var stringWriter = new StringWriter())
                using (var jsonWriter = new JsonTextWriter(stringWriter))
                {
                    var traktJsonWriter = new DeviceObjectJsonWriter();
                    await traktJsonWriter.WriteObjectAsync(jsonWriter, traktDevice);

                    stringWriter.ToString().Should().Be("{}");
                }
        }
        public async Task Test_DeviceObjectJsonWriter_WriteObject_StringWriter_Only_DeviceCode_Property()
        {
            ITraktDevice traktDevice = new TraktDevice
            {
                DeviceCode = "mockDeviceCode"
            };

            using (var stringWriter = new StringWriter())
            {
                var    traktJsonWriter = new DeviceObjectJsonWriter();
                string json            = await traktJsonWriter.WriteObjectAsync(stringWriter, traktDevice);

                json.Should().Be(@"{""device_code"":""mockDeviceCode""}");
            }
        }
        public async Task Test_DeviceObjectJsonWriter_WriteObject_JsonWriter_Only_ExpiresInSeconds_Property()
        {
            ITraktDevice traktDevice = new TraktDevice
            {
                ExpiresInSeconds = 7200
            };

            using (var stringWriter = new StringWriter())
                using (var jsonWriter = new JsonTextWriter(stringWriter))
                {
                    var traktJsonWriter = new DeviceObjectJsonWriter();
                    await traktJsonWriter.WriteObjectAsync(jsonWriter, traktDevice);

                    stringWriter.ToString().Should().Be(@"{""expires_in"":7200}");
                }
        }
        public async Task Test_DeviceObjectJsonWriter_WriteObject_JsonWriter_Only_VerificationUrl_Property()
        {
            ITraktDevice traktDevice = new TraktDevice
            {
                VerificationUrl = "mockUrl"
            };

            using (var stringWriter = new StringWriter())
                using (var jsonWriter = new JsonTextWriter(stringWriter))
                {
                    var traktJsonWriter = new DeviceObjectJsonWriter();
                    await traktJsonWriter.WriteObjectAsync(jsonWriter, traktDevice);

                    stringWriter.ToString().Should().Be(@"{""verification_url"":""mockUrl""}");
                }
        }
        public async Task Test_DeviceObjectJsonWriter_WriteObject_JsonWriter_Only_UserCode_Property()
        {
            ITraktDevice traktDevice = new TraktDevice
            {
                UserCode = "mockUserCode"
            };

            using (var stringWriter = new StringWriter())
                using (var jsonWriter = new JsonTextWriter(stringWriter))
                {
                    var traktJsonWriter = new DeviceObjectJsonWriter();
                    await traktJsonWriter.WriteObjectAsync(jsonWriter, traktDevice);

                    stringWriter.ToString().Should().Be(@"{""user_code"":""mockUserCode""}");
                }
        }
        public async Task Test_DeviceObjectJsonWriter_WriteObject_Object_Complete()
        {
            ITraktDevice traktDevice = new TraktDevice
            {
                DeviceCode        = "mockDeviceCode",
                UserCode          = "mockUserCode",
                VerificationUrl   = "mockUrl",
                ExpiresInSeconds  = 7200,
                IntervalInSeconds = 600
            };

            var    traktJsonWriter = new DeviceObjectJsonWriter();
            string json            = await traktJsonWriter.WriteObjectAsync(traktDevice);

            json.Should().Be(@"{""device_code"":""mockDeviceCode"",""user_code"":""mockUserCode""," +
                             @"""verification_url"":""mockUrl"",""expires_in"":7200,""interval"":600}");
        }
        public async Task Test_DeviceObjectJsonWriter_WriteObject_JsonWriter_Complete()
        {
            ITraktDevice traktDevice = new TraktDevice
            {
                DeviceCode        = "mockDeviceCode",
                UserCode          = "mockUserCode",
                VerificationUrl   = "mockUrl",
                ExpiresInSeconds  = 7200,
                IntervalInSeconds = 600
            };

            using (var stringWriter = new StringWriter())
                using (var jsonWriter = new JsonTextWriter(stringWriter))
                {
                    var traktJsonWriter = new DeviceObjectJsonWriter();
                    await traktJsonWriter.WriteObjectAsync(jsonWriter, traktDevice);

                    stringWriter.ToString().Should().Be(@"{""device_code"":""mockDeviceCode"",""user_code"":""mockUserCode""," +
                                                        @"""verification_url"":""mockUrl"",""expires_in"":7200,""interval"":600}");
                }
        }