@@ -668,6 +668,7 @@ public function it_can_process_update_item()
668668 ]
669669 ],
670670 'UpdateExpression ' => 'set #1 = :1, #2 = :2 remove #3, #4 ' ,
671+ 'ReturnValues ' => 'UPDATED_NEW ' ,
671672 'ExpressionAttributeNames ' => [
672673 '#1 ' => 'LastPostedBy ' ,
673674 '#2 ' => 'Replies ' ,
@@ -683,6 +684,7 @@ public function it_can_process_update_item()
683684 ]
684685 ]
685686 ];
687+ $ processor = 'processSingleItem ' ;
686688
687689 $ query = $ this ->newQuery ('Thread ' )
688690 ->key ([
@@ -697,7 +699,97 @@ public function it_can_process_update_item()
697699
698700 $ this ->assertEquals ($ method , $ query ['method ' ]);
699701 $ this ->assertEquals ($ params , $ query ['params ' ]);
700- $ this ->assertNull ($ query ['processor ' ]);
702+ $ this ->assertEquals ($ processor , $ query ['processor ' ]);
703+ }
704+
705+ /** @test */
706+ public function it_can_increment_value_of_attribute ()
707+ {
708+ $ method = 'updateItem ' ;
709+ $ params = [
710+ 'TableName ' => 'Thread ' ,
711+ 'Key ' => [
712+ 'ForumName ' => [
713+ 'S ' => 'Laravel '
714+ ],
715+ 'Subject ' => [
716+ 'S ' => 'Laravel Thread 1 '
717+ ]
718+ ],
719+ 'UpdateExpression ' => 'set #1 = #1 + :1, #2 = :2 ' ,
720+ 'ExpressionAttributeNames ' => [
721+ '#1 ' => 'Replies ' ,
722+ '#2 ' => 'LastPostedBy '
723+ ],
724+ 'ExpressionAttributeValues ' => [
725+ ':1 ' => [
726+ 'N ' => '2 '
727+ ],
728+ ':2 ' => [
729+ 'S ' => 'User A '
730+ ]
731+ ],
732+ 'ReturnValues ' => 'UPDATED_NEW '
733+ ];
734+
735+ $ query = $ this ->newQuery ('Thread ' )
736+ ->key ([
737+ 'ForumName ' => 'Laravel ' ,
738+ 'Subject ' => 'Laravel Thread 1 '
739+ ])->increment ('Replies ' , 2 , [
740+ 'LastPostedBy ' => 'User A '
741+ ]);
742+
743+ $ processor = 'processSingleItem ' ;
744+
745+ $ this ->assertEquals ($ method , $ query ['method ' ]);
746+ $ this ->assertEquals ($ params , $ query ['params ' ]);
747+ $ this ->assertEquals ($ processor , $ query ['processor ' ]);
748+ }
749+
750+ /** @test */
751+ public function it_can_decrement_value_of_attribute ()
752+ {
753+ $ method = 'updateItem ' ;
754+ $ params = [
755+ 'TableName ' => 'Thread ' ,
756+ 'Key ' => [
757+ 'ForumName ' => [
758+ 'S ' => 'Laravel '
759+ ],
760+ 'Subject ' => [
761+ 'S ' => 'Laravel Thread 1 '
762+ ]
763+ ],
764+ 'UpdateExpression ' => 'set #1 = #1 - :1, #2 = :2 ' ,
765+ 'ExpressionAttributeNames ' => [
766+ '#1 ' => 'Replies ' ,
767+ '#2 ' => 'LastPostedBy '
768+ ],
769+ 'ExpressionAttributeValues ' => [
770+ ':1 ' => [
771+ 'N ' => '2 '
772+ ],
773+ ':2 ' => [
774+ 'S ' => 'User A '
775+ ]
776+ ],
777+ 'ReturnValues ' => 'UPDATED_NEW '
778+ ];
779+
780+ $ processor = 'processSingleItem ' ;
781+
782+ $ query = $ this ->newQuery ('Thread ' )
783+ ->key ([
784+ 'ForumName ' => 'Laravel ' ,
785+ 'Subject ' => 'Laravel Thread 1 '
786+ ])->decrement ('Replies ' , 2 , [
787+ 'LastPostedBy ' => 'User A '
788+ ]);
789+
790+ $ this ->assertEquals ($ method , $ query ['method ' ]);
791+ $ this ->assertEquals ($ params , $ query ['params ' ]);
792+ $ this ->assertEquals ($ processor , $ query ['processor ' ]);
701793 }
702794
703795 /** @test */
0 commit comments